10.5K ·GitHub
Что это такое?
Это практический учебник, в котором шаг за шагом показано, как написать с нуля клон SQLite на C и как устроена настоящая база данных изнутри. Вы создаёте её по главам.
Это рабочая база данных, которой можно пользоваться, или просто учебный проект?
Это учебный проект: вы собираете минимальную, но работающую базу данных (с REPL, хранилищем на основе B-дерева и простыми командами, похожими на SQL), чтобы разобраться, как устроены базы данных. Она не предназначена для замены SQLite.
Как пройти учебник?
Читайте отрендеренный учебник онлайн, главу за главой, и параллельно следите за C-исходниками в этом репозитории. Также есть заметки о том, как запустить сайт с учебником локально.
Нужно ли что-то, кроме C-компилятора, чтобы идти по учебнику?
Для сборки кода базы данных нужны C-компилятор и Make. Набор тестов написан на Ruby, поэтому для его запуска понадобится Ruby.
Это полноценная база данных, на которую можно положиться?
Нет. Реализована лишь небольшая часть того, что умеет настоящая база данных: базовое хранение, B-дерево и простой интерпретатор команд. Поэтому она не предназначена для использования в продакшене.
Для кого предназначен этот учебник?
Он рассчитан на программистов, которые уверенно пишут на C и хотят понять внутреннее устройство баз данных, например B-деревья, страницы и выполнение запросов, сами собрав такую базу.
Какие темы освещает учебник?
Он охватывает создание REPL, формат хранения данных в памяти и на диске, страницы, индексирование на основе B-дерева и простой интерпретатор команд, похожих на SQL. Всё это повторяет устройство внутренних механизмов SQLite.
Зачем автор сделал это, а не просто читал исходники SQLite?
В README это подано как учебное упражнение: когда вы сами собираете части системы небольшими последовательными главами, такие понятия, как страничное хранение и B-деревья, усваиваются легче, чем при чтении готового промышленного кода.
Можно ли просто прочитать код, не следуя за пояснениями?
Да. В репозитории лежит работающий C-исходник вместе с учебником, так что можно сразу изучить итоговую реализацию, даже не проходя каждую главу.
What are similar projects?
lytlnyblOS, redis-3.0-annotated, hello-algo, os-tutorial, TeachYourselfCS-CN, swift-algorithm-club, Go, asm-lessons
Which topics is it in?
storage-engine, from-scratch, low-level, ruby, data-structures, systems-programming, algorithms, computer-science, programming, c, sqlite, guide