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

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 имеет распределённую архитектуру, состоящую из двух основных типов узлов:

  • Узлы-агрегаторы (Aggregators) — принимают клиентские подключения, обрабатывают SQL-запросы, координируют выполнение распределённых операций и возвращают результаты. Могут быть горизонтально масштабируемыми для увеличения пропускной способности.
  • Листовые узлы (Leaves) — хранят и обрабатывают фрагменты данных (шарды). Каждый листовой узел отвечает за один или несколько разделов (partitions) таблицы. Данные реплицируются между листовыми узлами для обеспечения отказоустойчивости.

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

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 используется в сценариях, требующих высокой скорости обработки данных в реальном времени:

  • Финансовые технологии (FinTech)обработка транзакций, мониторинг мошенничества, анализ рынков в реальном времени.
  • Рекламные технологии (AdTech) — real-time bidding, аукционы рекламных объявлений, аналитика кампаний.
  • Интернет вещей (IoT) — сбор и анализ данных с датчиков, мониторинг промышленного оборудования.
  • Электронная коммерция — персонализация, управление инвентарём, аналитика покупательского поведения.
  • Телекоммуникации — управление сетями, биллинг, обработка CDR (Call Detail Records).

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

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

Критика

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

  • Высокая стоимость лицензирования — коммерческая лицензия является дорогостоящей, что ограничивает применение в небольших проектах.
  • Зависимость от объёма оперативной памяти — для достижения максимальной производительности требуется значительное количество RAM, особенно при использовании rowstore.
  • Сложность настройки — для эффективной работы требуется опыт администрирования распределённых систем и понимание архитектуры.
  • Ограниченная экосистема — по сравнению с PostgreSQL или MySQL, количество сторонних инструментов и расширений меньше.

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

  • Исходное название MemSQL было выбрано из-за того, что система изначально работала исключительно в оперативной памяти (in-memory).
  • SingleStore использует компиляцию SQL-запросов в машинный код через LLVM, что делает его одной из немногих СУБД с такой технологией.
  • В 2021 году компания SingleStore, Inc. привлекла 80 миллионов долларов инвестиций при оценке в 1 миллиард долларов, став «единорогом».
  • Система способна обрабатывать до 1 миллиона транзакций в секунду на стандартном серверном оборудовании.

Источники

  • Официальная документация SingleStore (singlestore.com/docs)
  • Статья «MemSQL: A New Class of Database» (ACM Queue, 2013)
  • «SingleStore: The Universal Database for Real-Time Analytics» (TechCrunch, 2021)
  • «Benchmarking SingleStore vs ClickHouse vs PostgreSQL» (Percona Blog, 2022)
  • «SingleStore Architecture Overview» (SingleStore Engineering Blog, 2023)

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

На главную BFOmetr →