ArcadeDB — когда одной модели данных становится мало
Представьте, что вы строите проект, где нужны графы для системы рекомендаций, документы для профилей пользователей и временные ряды для аналитики. Обычно в такой ситуации в стек тащат Neo4j, MongoDB и какой-нибудь InfluxDB. В итоге вместо разработки продукта вы превращаетесь в системного администратора, который пытается подружить три разные базы данных, настроить между ними синхронизацию и не сойти с ума при обновлении схем.
Разработчики ArcadeDB решили пойти другим путем. Лука Гарулли, который когда-то создал OrientDB, после продажи своей компании SAP решил написать новую СУБД с нуля. Он назвал подход «Alien Technology», но если отбросить маркетинговую шелуху, перед нами чертовски быстрая мультимодельная база данных, написанная на Java с маниакальным вниманием к производительности.
Что это вообще такое
ArcadeDB — это ACID-комплементарная СУБД, которая не заставляет вас выбирать между графами и документами. Она умеет работать со всем сразу. Если вам нужно прокинуть связь между документом и вершиной графа — пожалуйста. Хотите хранить JSON, но искать по нему через Cypher? Никаких проблем.
Проект написан на Java 21 (есть поддержка Java 17), но это не та Java, к которой мы привыкли в энтерпрайзе. Авторы используют подход Low Level Java (LLJ). Они минимизируют нагрузку на Garbage Collector и используют низкоуровневые API, чтобы выжать максимум из железа. В итоге база запускается хоть на Raspberry Pi, хоть в тяжелом облачном кластере.
На каких языках она говорит
Самое приятное в ArcadeDB — порог входа. Вам не нужно учить новый «уникальный» язык запросов. База понимает почти всё, что популярно на рынке:
- SQL. Это модифицированный движок от OrientDB. Он позволяет делать привычные SELECT, но с поддержкой графовых обходов без джойнов.
- Cypher. Если вы переходите с Neo4j, ваши запросы заведутся здесь практически без правок.
- Gremlin. Для тех, кто любит Apache Tinkerpop.
- MongoDB Query Language. Можно подключить стандартный драйвер Mongo, и база поймет его запросы.
- GraphQL. Нативный интерфейс для фронтенд-разработчиков.
Даже если вы привыкли к Redis или Postgres, ArcadeDB умеет притворяться ими, реализуя соответствующие протоколы. Это позволяет использовать существующие библиотеки и инструменты без переписывания кода.
Векторы, таймсерии и ИИ
В последнее время все помешались на векторных базах для LLM. ArcadeDB не осталась в стороне: здесь есть нативная поддержка Vector Embedding. Это значит, что вы можете строить Graph RAG (Retrieval-Augmented Generation), объединяя знания из графа с векторным поиском в одной системе.
Кстати, о нейросетях. В проект встроен MCP-сервер (Model Context Protocol). Это позволяет ИИ-ассистентам напрямую общаться с базой данных. В комплекте идет Studio — веб-интерфейс, где встроенный чат-бот помогает писать запросы или проектировать схему.
Для работы с «железом» и IoT добавили поддержку Time Series. База умеет принимать данные по протоколам InfluxDB и Prometheus, используя сжатие Gorilla/Delta-of-Delta. Это сильно экономит место на диске при хранении миллионов метрик.
Как попробовать за 5 минут
Самый быстрый способ пощупать ArcadeDB — запустить Docker-контейнер. Разработчики подготовили команду, которая сразу импортирует демо-базу с данными о пиве:
docker run --rm -p 2480:2480 -p 2424:2424 \
-e JAVA_OPTS="-Darcadedb.server.rootPassword=playwithdata -Darcadedb.server.defaultDatabases=Imported[root]{import:https://github.com/ArcadeData/arcadedb-datasets/raw/main/orientdb/OpenBeer.gz}" \
arcadedata/arcadedb:latest
После запуска открываете http://localhost:2480, вводите пароль playwithdata и попадаете в ArcadeDB Studio. Там можно визуализировать графы, потыкать запросы и посмотреть, как база справляется с данными.
Технические нюансы
Под капотом у ArcadeDB — движок, оптимизированный под параллельное выполнение запросов. SQL-запросы автоматически раскидываются по ядрам процессора. Вместо привычных B-Tree индексов здесь часто используются LSM-Tree и расширяемое хеширование (Hash Indexes) для мгновенного поиска по точному совпадению.
Интересно реализована работа с памятью. ArcadeDB старается быть «дружелюбной к механике» (mechanical sympathy), учитывая, как работают кэши процессора и оперативная память. Это позволяет ей переваривать миллионы записей в секунду на обычном ноутбуке.
Кому это нужно
ArcadeDB — отличный выбор, если:
- Вам надоел «зоопарк» из пяти разных БД в одном проекте.
- Вы строите сложную систему с графами, но не хотите платить за лицензии Neo4j или мучиться с производительностью плагинов для Postgres.
- Вам нужна встраиваемая (embedded) база данных для Java или Python, которая умеет больше, чем SQLite.
- Вы разрабатываете AI-агентов и ищете базу с нативной поддержкой векторов и графов одновременно.
Проект распространяется под лицензией Apache 2.0 и обещает оставаться открытым навсегда. Конечно, сообщество у него пока меньше, чем у гигантов вроде MongoDB, но техническая база и бэкграунд создателя внушают доверие. Если вам тесно в рамках реляционных таблиц, ArcadeDB — это тот инструмент, который стоит хотя бы раз запустить в Docker.
