Аркаша — это key-value база данных, построенная по модульному принципу.
Диаграмма описывает контракты (интерфейсы) и связи между основными компонентами.
Минимальный контракт CRUD-операций:
put(key, value)— сохранить значение;get(key)— получить значение по ключу;delete(key)— удалить значение;containsKey(key)— проверить существование ключа.
Интерфейс управления таблицами:
createTable(name, options)— создать таблицу;openTable(name)— открыть таблицу и получитьKeyValueStore;dropTable(name)— удалить таблицу;listTables()— получить список таблиц;close()— корректно закрыть базу.
Задает параметры для таблицы: включение WAL, политика fsync, лимит размера значения.
Позволяет регистрировать сериализаторы для таблиц и открывать их с автоматической обработкой типов.
Обёртка над KeyValueStore, которая сама сериализует/десериализует значения при put/get.
Отвечает за хранение данных:
flush()— сбросить данные на диск;load()— загрузить при старте.
Журнал изменений:
append(record)— добавить запись;sync()— зафиксировать изменения на диске;replay()— восстановить состояние после сбоя.
Задает основные параметры работы движка (путь к данным, размер кэша, поведение fsync).
Позволяет наблюдать за системой: размер данных в байтах и количество ключей.
Главный интерфейс, объединяющий все подсистемы:
- реализует
Database; - предоставляет доступ к
PersistenceManager,WriteAheadLog,DatabaseConfig,Metrics.
Конкретная реализация (например, in-memory + flush или LSM) подставляется на уровне движка.
Методы для будущих возможностей: репликация и шардинг.
- Язык: Java 21 LTS
- Сборка: предварительно Gradle + Gradle Wrapper
- Тесты: предварительно JUnit 5
- Форматирование и линтинг: предварительно Spotless
- Контейнеризация: Всё окружение планируется запускать через Docker Compose
- CI/CD: предварительно Gitlab CI/CD
- Документация: PlantUML для диаграмм, Markdown для описаний, Atlassian Confluence при необходимости