Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Аркаша: Key-Value база данных

Аркаша — это key-value база данных, построенная по модульному принципу.
Диаграмма описывает контракты (интерфейсы) и связи между основными компонентами.

Основное API

KeyValueStore

Минимальный контракт CRUD-операций:

  • put(key, value) — сохранить значение;
  • get(key) — получить значение по ключу;
  • delete(key) — удалить значение;
  • containsKey(key) — проверить существование ключа.

Работа с таблицами (DDL)

Database

Интерфейс управления таблицами:

  • createTable(name, options) — создать таблицу;
  • openTable(name) — открыть таблицу и получить KeyValueStore;
  • dropTable(name) — удалить таблицу;
  • listTables() — получить список таблиц;
  • close() — корректно закрыть базу.

TableOptions

Задает параметры для таблицы: включение WAL, политика fsync, лимит размера значения.

TableRegistry

Позволяет регистрировать сериализаторы для таблиц и открывать их с автоматической обработкой типов.

Table

Обёртка над KeyValueStore, которая сама сериализует/десериализует значения при put/get.


Персистентность

PersistenceManager

Отвечает за хранение данных:

  • flush() — сбросить данные на диск;
  • load() — загрузить при старте.

WriteAheadLog (опционально)

Журнал изменений:

  • append(record) — добавить запись;
  • sync() — зафиксировать изменения на диске;
  • replay() — восстановить состояние после сбоя.

Конфигурация и метрики

DatabaseConfig

Задает основные параметры работы движка (путь к данным, размер кэша, поведение fsync).

Metrics

Позволяет наблюдать за системой: размер данных в байтах и количество ключей.


Движок

StorageEngine

Главный интерфейс, объединяющий все подсистемы:

  • реализует Database;
  • предоставляет доступ к PersistenceManager, WriteAheadLog, DatabaseConfig, Metrics.

Конкретная реализация (например, in-memory + flush или LSM) подставляется на уровне движка.


Расширения

Distributed

Методы для будущих возможностей: репликация и шардинг.


UML-диаграмма

Key-Value DB UML

Ориентировочный стек технологий

  • Язык: Java 21 LTS
  • Сборка: предварительно Gradle + Gradle Wrapper
  • Тесты: предварительно JUnit 5
  • Форматирование и линтинг: предварительно Spotless
  • Контейнеризация: Всё окружение планируется запускать через Docker Compose
  • CI/CD: предварительно Gitlab CI/CD
  • Документация: PlantUML для диаграмм, Markdown для описаний, Atlassian Confluence при необходимости

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages