PKeyDB is a lightweight network key-value database with REST API, authorization, disk storage, INI-based configuration, stdout/stderr logging, and support for multiple databases with passwords and limits.
⚠️ Warning: This project is under active development and NOT ready for production use!
- REST API (CRUD, authorization)
- Disk storage (index + data file)
- INI configuration
- Logging to stdout/stderr with timestamp
- Simple token system (
X-Auth-Tokenheader) - Multiple databases with limits
- Build:
fpc main.pas
- Run:
./main pkeydb.ini
- Test API:
./test_server.sh
curl -X POST http://localhost:8080/auth -H 'Content-Type: application/json' -d '{"dbname":"db1","password":"mypassword"}'
curl -X POST http://localhost:8080/db/db1/set -H 'X-Auth-Token: <token>' -H 'Content-Type: application/json' -d '{"key":"foo","value":"bar"}'
curl -X GET http://localhost:8080/db/db1/get?key=foo -H 'X-Auth-Token: <token>'main.pas— entry point, server startupserver.pas— HTTP server, REST APIconfig.pas— INI parsertest_server.pas— integration teststest_server.sh— shell script for API testingdocs/— documentation (API, roadmap)
- docs/api.md — REST API description, request examples
- docs/roadmap.md — architecture and roadmap
pkeydb.ini.example— example config with comments
- Server and API skeleton
- Configuration and logging
- Integration tests and shell script
- Real file storage (index + mmap)
- Secure authorization and token management
- Real-world load testing
- Production-ready documentation and examples
BSD 2-Clause. See LICENSE.
PKeyDB — легковесная сетевая СУБД (ключ-значение) с REST API, авторизацией, хранением данных на диске, конфигурируемостью через INI-файл, логированием в stdout/stderr, поддержкой нескольких БД с паролями и лимитами.
⚠️ Внимание: проект находится в активной разработке и не готов для использования в продакшене!
- REST API (CRUD-операции, авторизация)
- Хранение данных на диске (индекс + файл данных)
- Конфигурирование через INI-файл
- Логирование в stdout/stderr с меткой времени
- Простая система токенов (заголовок
X-Auth-Token) - Поддержка нескольких баз с лимитами
- Склонируйте репозиторий и зависимости.
- Соберите проект через
make. - Скопируйте пример конфига:
и отредактируйте под свои нужды.
cp pkeydb.ini.example pkeydb.ini
ВАЖНО: Ваш рабочий pkeydb.ini не коммитится в репозиторий. Для примера используйте pkeydb.ini.example (он всегда актуален и содержит комментарии по всем параметрам).
curl -X POST http://localhost:8080/auth -H 'Content-Type: application/json' -d '{"dbname":"db1","password":"mypassword"}'
curl -X POST http://localhost:8080/db/db1/set -H 'X-Auth-Token: <token>' -H 'Content-Type: application/json' -d '{"key":"foo","value":"bar"}'
curl -X GET http://localhost:8080/db/db1/get?key=foo -H 'X-Auth-Token: <token>'main.pas— точка входа, запуск сервераserver.pas— HTTP сервер, обработка REST APIconfig.pas— парсер INI-файлаtest_server.pas— интеграционные тестыtest_server.sh— shell-скрипт для тестирования APIdocs/— документация (API, roadmap)
- docs/api.md — описание REST API, примеры запросов
- docs/roadmap.md — архитектура и план разработки
pkeydb.ini.example— пример конфига с комментариями
- Каркас сервера и API
- Конфигурирование и логирование
- Интеграционные тесты и shell-скрипт
- Реальное файловое хранилище (индекс + mmap)
- Безопасная авторизация и управление токенами
- Тестирование на реальной нагрузке
- Документация и примеры для production
Проект развивается!
Любые вопросы и предложения — через issues или pull requests.
- Не удаётся авторизоваться:
- Проверьте, что в конфиге указан SHA256-хэш пароля, а не plain-текст.
- Проверьте, что хэш в нижнем регистре, без пробелов.
- Проверьте, что сервер перезапущен после изменения конфига.