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 поддерживает два типа хранилищ:
- Rowstore (строчное хранение) — данные хранятся в оперативной памяти в виде строк. Обеспечивает максимальную скорость для точечных запросов (поиск по первичному ключу) и транзакционных операций (INSERT, UPDATE, DELETE). Используется для OLTP-нагрузок.
- 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).
Сравнение с аналогами
| Характеристика | SingleStore | ClickHouse | PostgreSQL | Apache Druid |
|---|---|---|---|---|
| Тип нагрузки | OLTP + OLAP | OLAP | OLTP | OLAP |
| Хранение | Rowstore + Columnstore | Columnstore | Rowstore | Columnstore |
| Скорость вставки | Высокая (до 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 →