SingleStore - SingleStore

SingleStore
SingleStore logo.png
Разработчики)SingleStore Inc.
изначальный выпуск23 апреля 2013 г. (2013-04-23)[1]
Стабильный выпуск
7.1.11 / 12 октября 2020 г. (2020-10-12)
Написано вC ++
Операционная системаLinux
Доступно ванглийский
ТипСУБД
ЛицензияЗакрытый источник
Интернет сайтwww.singlestore.com

SingleStore это распределен, реляционный, SQL база данных система управления[2] (СУБД) с поддержкой ANSI SQL поддержка и известна скоростью приема данных, обработки транзакций и обработки запросов. SingleStore ранее назывался MemSQL.[3]

SingleStore в основном хранит реляционные данные, хотя он также может хранить данные JSON, данные графиков и данные временных рядов. Он поддерживает смешанные рабочие нагрузки, обычно называемые HTAP рабочие нагрузки, а также более традиционные OLTP и OLAP сценарии использования. Для запросов это компилирует Структурированный язык запросов (SQL) в машинный код. Ядро базы данных SingleStore можно запускать в различных Linux среды, включая локальные установки, поставщиков общедоступных и частных облаков, в контейнерах через Kubernetes оператора, или как размещенная служба в облаке, известная как SingleStore Managed Service.

История

23 апреля 2013 года SingleStore запустил свою первую общедоступную версию базы данных под названием MemSQL.[4] Поддерживаются только ранние версии ориентированный на ряд таблицы и были оптимизированы для случаев, когда все данные могут уместиться в основная память. Эта конструкция была основана на идее, что стоимость баран будет продолжать экспоненциально снижаться с течением времени в тенденции, аналогичной Закон Мура. Это в конечном итоге позволит большинству вариантов использования систем баз данных хранить свои данные исключительно в памяти.

Вскоре после запуска в MemSQL была добавлена ​​общая поддержка формата хранения на основе столбцов на диске для работы вместе с хранилищем строк в памяти.[5] Снижение стоимости памяти со временем замедлилось, и рынок систем баз данных, работающих исключительно в памяти, в значительной степени не материализовался из-за растущего спроса на дисковые рабочие нагрузки OLAP. Таким образом, со временем хранилище столбцов MemSQL стало основным направлением и важной функцией для клиентов.

27 октября 2020 года MemSQL была переименована в SingleStore, чтобы отразить смещение акцента с рабочих нагрузок исключительно в памяти. Новое название подчеркивает цель создания универсального формата хранения, способного поддерживать как транзакционные, так и аналитические варианты использования.[6]

Архитектура

Форматы таблиц строк и столбцов

SingleStore может хранить данные в любом ориентированный на ряд таблицы ("rowstores") или столбчатый таблицы ("columnstores"). Используемый формат определяется пользователем при создании таблицы.

Таблицы Rowstore, как следует из названия, хранят информацию в формате строки, который является традиционным форматом данных, используемым СУБД системы. Хранилища строк оптимизированы для одиночных или небольших запросов вставки, обновления или удаления и наиболее тесно связаны с OLTP (транзакционные) варианты использования. Данные для таблиц rowstore полностью хранятся в памяти, что обеспечивает быстрое произвольное чтение, а снимки состояния и журналы транзакций сохраняются на диске.

Columnstores оптимизированы для сложных запросов SELECT, обычно связанных с OLAP (аналитика) и сценарии использования хранилищ данных. Например, большой набор клинических данных для анализа данных лучше всего хранить в столбчатом формате, поскольку запросы, выполняемые против него, обычно будут специальными запросами, в которых агрегаты вычисляются по большому количеству аналогичных элементов данных. Данные для таблиц columnstore хранятся на диске, поддерживая быстрое последовательное чтение и сжатие, которое обычно достигает 5-10x.

Индексирование

Вместо традиционного индекса B-дерева в хранилищах строк SingleStore используется профессионалы оптимизирован для быстрой обработки в памяти без блокировки.[нужна цитата ] Columnstores хранят данные, индексированные в отсортированных сегментах, чтобы максимизировать сжатие на диске и обеспечить быстрое упорядоченное сканирование. SingleStore также поддерживает использование хеш-индексов в качестве вторичных индексов для ускорения определенных запросов.

Распределенная архитектура

База данных SingleStore распределена по множеству обычных машин. Данные хранятся в разделах на конечных узлах, и пользователи подключаются к узлам агрегатора.[1] Для агрегатора SingleStore и оконечных узлов устанавливается единое программное обеспечение; администраторы назначают роль каждой машины в кластере во время настройки. Узел агрегатора отвечает за получение SQL-запросов, их разбиение по листовым узлам и агрегирование результатов обратно клиенту. Листовой узел хранит данные SingleStore и обрабатывает запросы от агрегатора (ов). Вся связь между агрегаторами и конечными узлами осуществляется по сети с использованием SQL. SingleStore использует хэш-секционирование для равномерного распределения данных по количеству конечных узлов.[7]

Загрузка в реальном времени

Конвейеры SingleStore позволяют получать данные в реальном времени. Конвейер - это собственный соединитель для таких источников данных, как Апач Кафка, Apache Spark, Amazon S3 ведра Microsoft Azure Хранилище BLOB-объектов или файлы на диске. Конвейер загружает данные в систему с высокой скоростью. Благодаря спискам пропуска без блокировки запросы могут извлекать данные сразу после их получения, но не блокируются для продолжения во время импорта данных.

Долговечность

Надежность хранилища строк в памяти реализуется с помощью журнала упреждающей записи и моментальных снимков, аналогичных контрольным точкам. При настройках по умолчанию, как только транзакция подтверждена в памяти, база данных будет асинхронно записывать транзакцию на диск с такой скоростью, насколько это позволяет диск.[8]

Столбцовое хранилище на диске фактически находится в памяти с помощью структуры, подобной хранилищу строк, индексируемой с помощью skiplist. Эта структура имеет те же гарантии долговечности, что и rowstore SingleStore. Кроме того, columnstore надежен, поскольку его данные хранятся на диске.

Репликация

Кластер SingleStore можно настроить в режиме «высокой доступности» (HA), при котором каждый раздел данных автоматически создается с ведущей и ведомой версиями на двух отдельных конечных узлах. В режиме высокой доступности агрегаторы отправляют транзакции в главные разделы, которые затем отправляют журналы в подчиненные разделы. В случае неожиданного отказа главного устройства подчиненные разделы принимают на себя роль главных разделов в полностью оперативном режиме без простоев.

Форматы распространения

Офис SingleStore в Сан-Франциско в 2020 году

SingleStore можно загрузить бесплатно и запустить в Linux для систем с 4 листовыми узлами по 32 ГБ ОЗУ каждый; лицензия Enterprise требуется для более крупных развертываний и для официальной поддержки SingleStore. Кластерами SingleStore можно управлять в контейнерах с помощью оператора SingleStore Kubernetes. SingleStore также доступен как управляемый сервис под названием SingleStore Managed Service, доступный в различных регионах в Google Cloud и Amazon Web Services, а в ближайшем будущем обещана реализация Microsoft Azure. Базовый механизм и потенциальная производительность системы идентичны во всех форматах распространения.

SingleStore поставляется с набором инструментов для установки, управления и мониторинга под названием SingleStore Tools. При установке SingleStore инструменты можно использовать для настройки распределенной базы данных SingleStore между машинами. SingleStore также предоставляет пользовательский интерфейс запросов и управления на основе браузера, называемый SingleStore Studio, который обеспечивает обработку запросов и мониторинг базы данных, а также показывает работоспособность и информационные данные о работающем кластере.

Смотрите также

Рекомендации

  1. ^ а б Вторник (14.08.2012). «Архитектура MemSQL - Быстрая (MVCC, InMem, LockFree, CodeGen) и знакомая (SQL)». Высокая масштабируемость. Получено 2019-08-13.
  2. ^ «MemSQL». Получено 2017-09-29.
  3. ^ «MemSQL теперь называется SingleStore».
  4. ^ Френкиль, Эрик (2013). «MemSQL поставляется с версией 2.0. Масштабирует базу данных в памяти по сотням узлов, тысячам ядер» (опубликовано 23.04.2013). Получено 2013-04-23.
  5. ^ https://www.singlestore.com/blog/celebrating-memsql-availability-two-years-in/
  6. ^ https://www.singlestore.com/blog/memsql-singlestore-then-there-was-one/
  7. ^ «Введение в MemSQL | СУБД 2: службы системы управления базами данных».
  8. ^ «Использование стойкости и восстановления». docs.memsql.com. Получено 2018-01-19.

внешняя ссылка