Skip to content

MattoYuzuru/drip-postgresql

Repository files navigation

drip-postgresql

Учебная реляционная база данных, вдохновлённая PostgreSQL. Проект сделан как “минимальный аналог Postgres”, чтобы на практике разобраться в внутренностях СУБД: хранение данных, выполнение запросов, базовая индексация и сопутствующие компоненты.

Содержание

Зачем этот проект

PostgreSQL кажется “магией”, пока не потрогаешь руками базовые механики:

  • как и где лежат строки
  • что такое страница/таблица/сканирование
  • как устроен индекс и почему он ускоряет запросы
  • как проходят стадии “парсинг -> план -> выполнение”

drip-postgresql — именно про это: компактная учебная реализация, с фокусом на понимание, а не на production-готовность.

Что уже реализовано

Ниже перечень на уровне возможностей (без обещаний полной совместимости с PostgreSQL):

  • минимальный SQL-подобный интерфейс для работы с данными
  • базовые DDL/DML операции (создание структуры и CRUD в рамках поддерживаемого подмножества)
  • хранение данных на диске (персистентность проекта как СУБД, а не “в памяти”)
  • базовая поддержка индексов (ускорение выборок по индексируемым полям)
  • инфраструктура, необходимая для дальнейшего развития (модули, слои, разделение ответственности)

Подробные примеры команд и сценарии использования вынесены в howto.md (рекомендуемая точка входа для “попробовать руками”).

Ограничения и статус

Это учебная реализация. Здесь осознанно могут отсутствовать или быть упрощены:

  • полноценный оптимизатор запросов
  • транзакции, MVCC, WAL, репликация
  • конкурентный доступ и сложная блокировочная модель
  • богатая система типов и совместимость с реальным PostgreSQL

Если вам нужна реальная СУБД, используйте PostgreSQL. Если хочется понять, что у СУБД “внутри”, вам сюда.

Быстрый старт

Требования

  • JDK (рекомендуется современная версия: 17+)
  • Gradle Wrapper из репозитория

Сборка

./gradlew build

Чтобы протестировать клиент-серверное нужно запустить файл ServerMain.java, потом ClientMain.java в src/main/java/ru/open/cu/student/cli/impl/

About

Сделал реляционную базу данных на подобии Postgresql

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages