Распределённая горизонтально масштабируемая графовая база данных с открытым исходным кодом, запросами, совместимыми с OpenCypher, и согласованностью на основе Raft.
erikgrinaker/toydb
Распределённая SQL-база данных на Rust, созданная в учебных целях: поддерживает консенсус Raft, транзакции MVCC и интерфейс SQL.
- Звёзды
- 7,304
- Форки
- 624
- Открытые issues
- 0
- Последний коммит
- в прошлом месяце
Что это?
toyDB — распределённая SQL-база данных, написанная с нуля на Rust, чтобы показать, как устроены распределённые SQL-системы. Она реплицирует состояние между узлами кластера с помощью консенсуса Raft, обеспечивающего линеаризуемую репликацию конечного автомата, и поддерживает ACID-транзакции с изоляцией снимков на основе MVCC.
Слой хранения можно подключать отдельно: доступны бэкенды BitCask и in-memory. Поверх хранилища «ключ—значение» работает механизм запросов на основе итераторов: он применяет эвристическую оптимизацию и поддерживает чтение данных на заданный момент времени. SQL-интерфейс поддерживает соединения, агрегатные функции и транзакции. Клиент командной строки toysql подключается к узлам, а EXPLAIN показывает планы запросов.
В проекте простота и корректность важнее производительности, масштабируемости и доступности, поэтому код предназначен для изучения. Тесты в основном представляют собой сценарные тесты на базе Goldenscript; в репозитории также есть руководство по архитектуре и инструмент для бенчмарка рабочей нагрузки.
Ключевые возможности
- 01Консенсус Raft для линеаризуемой репликации между узлами кластера
- 02ACID-транзакции с изоляцией снимков на основе MVCC
- 03Подключаемые хранилища: BitCask и in-memory
- 04Поддержка в SQL соединений, агрегатных функций и транзакций
- 05Вывод EXPLAIN с планами запросов после эвристической оптимизации
Сценарии использования
- Изучение внутреннего устройства распределённых SQL-баз данных
- Изучение консенсуса Raft и транзакций MVCC на примере понятного кода на Rust
- Эксперименты с небольшим многоузловым SQL-кластером на локальной машине
Быстрый старт
- 1
Установите компилятор Rust (см. страницу установки Rust).
- 2
Запустите локальный кластер из пяти узлов.
./cluster/run.sh - 3
Соберите и запустите клиент командной строки, чтобы подключиться к узлу 1.
cargo run --release --bin toysql
Что важно знать
- Проект намеренно не оптимизирован для производительности, масштабируемости или доступности.
- Производительность записи очень низкая из-за fsync и отсутствия пакетной записи.
- Проект создан в образовательных целях, а не для использования в production.
В подборках
Темы
Частые вопросы
- Что такое toydb?
- Распределённая SQL-база данных на Rust, созданная в учебных целях: поддерживает консенсус Raft, транзакции MVCC и интерфейс SQL. toyDB — распределённая SQL-база данных, написанная с нуля на Rust, чтобы показать, как устроены распределённые SQL-системы. Она реплицирует состояние между узлами кластера с помощью консенсуса Raft, обеспечивающего линеаризуемую репликацию конечного автомата, и поддерживает ACID-транзакции с изоляцией снимков на основе MVCC.
- toydb можно использовать бесплатно? Какая у него лицензия?
- toydb распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- toydb всё ещё поддерживается?
- Обновлялся за последние 6 месяцев. Последний коммит в toydb — 2 окт. 2026 г..
- Для чего можно использовать toydb?
- Изучение внутреннего устройства распределённых SQL-баз данных Изучение консенсуса Raft и транзакций MVCC на примере понятного кода на Rust Эксперименты с небольшим многоузловым SQL-кластером на локальной машине
- Как установить toydb?
- Установите компилятор Rust (см. страницу установки Rust). Запустите локальный кластер из пяти узлов.: ./cluster/run.sh Соберите и запустите клиент командной строки, чтобы подключиться к узлу 1.: cargo run --release --bin toysql
- Где скачать toydb?
- Исходный код и инструкции по установке — на GitHub: https://github.com/erikgrinaker/toydb
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Распределённое надёжное key-value хранилище для критически важных данных распределённых систем на основе консенсуса Raft с gRPC API.
Распределённая облачная SQL-база данных на основе строго согласованного хранилища «ключ — значение» с поддержкой wire-протокола PostgreSQL.
Лёгкая отказоустойчивая распределённая реляционная база данных на SQLite с репликацией между узлами через консенсус Raft.
Горизонтально масштабируемая распределённая графовая база данных с нативным интерфейсом запросов GraphQL и ACID-транзакциями.
Высокопроизводительная open-source база данных временных рядов для IoT, подключённых автомобилей и промышленного IoT с поддержкой SQL.