Загрузка...

TitanDB - Реляционная СУБД с нуля на Rust

Тема в разделе Ваши работы создана пользователем kovalyoff 7 июл 2025. 103 просмотра

  1. kovalyoff
    kovalyoff Автор темы 7 июл 2025 10 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
     
Загрузка...
Top