Открыть сервис

SingleStore

SingleStore — это распределённая реляционная система управления базами данных (СУБД), ориентированная на обработку транзакционных (OLTP) и аналитических (OLAP) нагрузок в реальном времени. Относится к классу NewSQL-систем, объединяющих свойства традиционных реляционных баз данных (поддержка SQL, ACID-транзакции) с горизонтальной масштабируемостью и высокой производительностью, характерными для NoSQL-решений. Разрабатывается и поддерживается одноимённой американской компанией SingleStore, Inc. (ранее — MemSQL).

История

Компания MemSQL была основана в 2011 году Эриком Френкелем, Никитой Шамгуновым и Адамом Прутом. Разработчики ставили целью создать базу данных, способную обрабатывать миллионы транзакций в секунду на стандартном оборудовании. Первая коммерческая версия продукта (MemSQL 1.0) вышла в 2012 году и сразу привлекла внимание благодаря использованию компиляции SQL-запросов в машинный код (JIT-компиляция) и хранению данных преимущественно в оперативной памяти.

В 2013 году компания привлекла инвестиции в размере 35 миллионов долларов от Accel Partners и Khosla Ventures. В 2016 году была выпущена версия 5.0, которая добавила поддержку хранения данных на дисках (columnstore), что расширило сферу применения системы на аналитические нагрузки с большими объёмами данных.

В 2020 году компания сменила название с MemSQL на SingleStore, отражая фокус на унифицированном хранении и обработке данных (единое хранилище — single store). В 2021 году была выпущена версия 7.0, в которой появилась поддержка векторного поиска и интеграция с платформами машинного обучения. По состоянию на 2025 год продукт продолжает развиваться, добавляя функции для работы с облачными средами и потоковой обработки данных.

Архитектура

Многоуровневая структура

SingleStore имеет распределённую архитектуру, состоящую из двух основных типов узлов:

Хранение данных

SingleStore поддерживает два типа хранилищ:

  1. Rowstore (строчное хранение) — данные хранятся в оперативной памяти в виде строк. Обеспечивает максимальную скорость для точечных запросов (поиск по первичному ключу) и транзакционных операций (INSERT, UPDATE, DELETE). Используется для OLTP-нагрузок.
  2. Columnstore (колоночное хранение) — данные хранятся на диске в сжатом колоночном формате. Оптимизировано для аналитических запросов, выполняющих агрегацию, фильтрацию и сканирование больших объёмов данных. Поддерживает сегментное сжатие и кодирование.

Гибридный подход позволяет в одной таблице комбинировать оба типа хранения: например, «горячие» данные (последние часы) хранить в rowstore, а исторические — в columnstore.

Обработка запросов

SingleStore использует компиляцию SQL-запросов в машинный код (JIT-компиляция) через LLVM. Это позволяет выполнять запросы без интерпретации, что даёт существенный прирост производительности по сравнению с традиционными интерпретируемыми СУБД. Запросы распределяются между узлами, выполняются параллельно, а результаты агрегируются на узле-агрегаторе.

Репликация и отказоустойчивость

Данные реплицируются синхронно или асинхронно между листовыми узлами. При отказе одного узла система автоматически переключается на реплику. Поддерживается механизм автоматического восстановления (auto-recovery) после сбоев.

Ключевые возможности

Поддержка SQL и ACID

SingleStore полностью поддерживает стандартный SQL (включая JOIN, подзапросы, оконные функции, CTE). Поддерживаются ACID-транзакции на уровне строк (row-level locking). Система обеспечивает изоляцию уровня READ COMMITTED по умолчанию.

Горизонтальное масштабирование

Добавление новых узлов в кластер происходит без остановки работы. Данные автоматически перераспределяются между узлами. Максимальный размер кластера ограничен только аппаратными ресурсами.

Векторный поиск

Начиная с версии 7.0, SingleStore поддерживает индексацию и поиск по векторным представлениям данных (embeddings). Это позволяет использовать систему для задач семантического поиска, рекомендательных систем и работы с нейросетевыми моделями.

Потоковая обработка (Pipelines)

SingleStore имеет встроенный механизм потоковой загрузки данных — Pipelines. Он позволяет подключаться к Apache Kafka, Amazon Kinesis, а также к другим источникам потоковых данных, выполнять трансформации на лету и записывать результаты в таблицы. Это делает систему пригодной для сценариев real-time analytics.

Интеграция с облачными платформами

SingleStore доступен как управляемый сервис (SingleStore Managed Service) на платформах AWS, Google Cloud и Microsoft Azure. Поддерживается развёртывание в частных облаках и локальных дата-центрах.

Применение

SingleStore используется в сценариях, требующих высокой скорости обработки данных в реальном времени:

Сравнение с аналогами

ХарактеристикаSingleStoreClickHousePostgreSQLApache Druid
Тип нагрузкиOLTP + OLAPOLAPOLTPOLAP
ХранениеRowstore + ColumnstoreColumnstoreRowstoreColumnstore
Скорость вставкиВысокая (до 1 млн записей/с)Очень высокаяСредняяВысокая
Поддержка JOINПолнаяОграниченнаяПолнаяОграниченная
ACIDДаНетДаНет
Горизонтальное масштабированиеДаДаОграниченноеДа

Критика

Основные недостатки SingleStore:

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →