Загрузка...

Titandb - Relating DBMS from scratch on rust

Thread in Your projects created by kovalyoff Jul 7, 2025. 104 views

  1. kovalyoff
    kovalyoff Topic starter Jul 7, 2025 10 Sep 6, 2016
    TitanDB - Реляционная СУБД с нуля на Rust

    Всем привет!

    Хочу представить вашему вниманию мой проект — TitanDB. Это полноценная реляционная система управления базами данных (РСУБД), написанная полностью на языке Rust. Проект был создан с целью глубокого изучения внутреннего устройства баз данных, и в качестве архитектурного ориентира я использовал PostgreSQL.

    Ключевые особенности проекта

    1. ACID-транзакции:
    Я реализовал полноценный менеджер транзакций, который гарантирует целостность данных.
    • MVCC (Multi-Version Concurrency Control): Система управления параллельным доступом позволяет операциям чтения не блокировать операции записи, и наоборот.
    • Write-Ahead Logging (WAL): Для обеспечения атомарности и долговечности используется журнал упреждающей записи.
    • Обнаружение Deadlock'ов: Реализован механизм обнаружения и разрешения взаимных блокировок на основе графа ожидания (waits-for graph).

    2. Модульное хранилище "Bedrock":
    Это ядро СУБД, отвечающее за надёжное хранение данных на диске.
    • Менеджер буферного пула: Эффективный кэш для дисковых страниц в памяти, использующий алгоритм вытеснения Clock-Sweep (Second-Chance).
    • B-Tree индексация: Полнофункциональная реализация B-Tree для быстрого поиска, вставки и удаления данных.

    3. Продвинутый обработчик запросов:
    Я создал сложный конвейер для преобразования SQL-запросов в конечный результат.
    • SQL-парсер: Написан с использованием библиотеки chumsky.
    • Оптимизатор запросов на основе стоимости (Cost-Based Optimizer): Система анализирует статистику таблиц (команда ANALYZE) для выбора наиболее эффективного плана выполнения запроса, интеллектуально переключаясь между последовательным сканированием (Sequential Scan) и сканированием по индексу (Index Scan).
    • Несколько алгоритмов JOIN: Поддерживаются Nested Loop, Hash Join и Merge Join для эффективной обработки сложных запросов.

    4. Совместимость с протоколом PostgreSQL.

    GitHub
     
Loading...
Top