🚀 OrionDB - Простота и Мощность в Каждом Шаге
Забудьте о сложных настройках и дополнительных сервисах! OrionDB предлагает уникальный баланс между производительностью и удобством использования.
• Встроенные возможности шардирования - забудьте о необходимости интеграции сторонних решений. Шардирование настроено из коробки, что позволяет эффективно распределить нагрузку и оптимизировать использование ресурсов.
• Минимум зависимостей - никаких дополнительных установок и конфигураций. Все зависимости - базовые модули Node для работы с памятью и файловой системой.
• Высокая производительность - благодаря продвинутому механизму управления памятью и оптимизированным алгоритмам CRUD, OrionDB показывает результаты, сопоставимые с топовыми решениями рынка, но без их сложности.
• Простота в использовании - понятный ORM из коробки без SQL и автоматизация рутинных задач позволяют сосредоточиться на ключевых бизнес-процессах, а не на обслуживании базы данных.
✅ Сравнение с популярными решениями:
- В отличие от MongoDB, вам не нужно устанавливать отдельные компоненты для шардирования
- Намного эффективнее чем MySQL благодаря использованию CRUD в паре с хранением данных в кеше
- Более доступная кривая, чем у SQLite при работе с большими JSON данными
OrionDB - это идеальный выбор для тех, кто хочет хранить данные в JSON, с дополнительной оптимизацией.
❓Орион на этапе разработки! Рекомендуется использовать в небольших приложениях, где максимальное количество JSON данных рассчитывается до 2 млн записей.
OrionDB поддерживается как ES Modules и CommonJS, поэтому в зависимости от того как вы пишите свое приложение, вы можете выбрать то, что вам по душе.
ES подключение:
import OrionDB from './OrionDB/index.js'CommonJS подключение:
const OrionDB = require('./OrionDB/commonjs/index.js')Для иниализации базы данных:
const db = new OrionDB('test_db', {strict: 0}).select('users', {threads: 0})При иниализации OrionDB мы передаем такие параметры new OrionDB(dbName, { options }) где:
- dbName - имя базы данных
- {options} - объект опций для иниализации. Пока что существует только strict объект, который указывает нужно ли использовать строгую типизацию данных.
.select(collection, { options }) метод выбирает нужную нам коллекцию в базе данных (это как таблица JSON-данных), где:
- collection - имя коллекции
- {options} - объект опций. Пока что существует только
threads, который принимаетBoolean true/false. True означает использование многопоточности и false использует однопоточность. Пока что активно тестируется для повышения производительности!
Строгая типизация данных на самом деле не является строгой, вы можете прописать типизацию для JSON-ключей в файле schema.json, который находится в каждой из коллекций. Orion попытается конвертировать входящие данные в нужный тип данных, но вне зависимости от результата конвертации данные все равно будут сохранены в базу данных. В режиме strict некоторые типы данных не конвертируются при несовместимости типов, тогда в таком случае хранится null.
Доступные типы данных на данный момент:
- STRING
- BOOLEAN
- INT
- FLOAT
- BINARY (мы можем хранить бинарные данные ArrayBuffer)
- JSON
Вы можете регистрировать дополнительные типы для своих полей (ключей). Список дополнительных типов:
- KEY
- INDEX
- INDEX-KEY
{
"id": "INT",
"_id": ["INT", "KEY"]
}Все доступные методы находятся по ссылке - OrionDB Methods
Вы можете использовать WebSocket для того, чтобы добиться эффективности не только в NodeJS, но и на других языках где поддерживается WebSocket.
Для того чтобы пользовать WebSocket, нам придется запустить сервис Orion:
npm startВы так же можете запустить его и отдельно другими методами, чтобы это работало в фоне, потому что мы можем запустить Orion Service напрямую (я рекомендую PM2):
node service.jsДавайте рассмотрим подключение к серверу OrionDB в JavaScript:
new WebSocket('ws://localhost:5665/test_db@12345/users')Orion Service запускается на порту 5665 как указано в файле .env, но вы можете изменить порт для запуска сервиса, так же как и пароль для подключения.
Разберем параметры запроса
- test_db@12345 || test_db - имя базы данных / @ - идентификатор для разделения данных / 12345 - пароль, который указан в
.env - users - имя коллекции
Общение с сервером выполняется благодаря JSON-объектам, мы отдаем и принимаем JSON данные. В случае когда мы принимаем данные, нам нужно распарсить их из строки, в случае когда отправляем - переобразовываем в строку (stringify).
Пример запроса:
let req = {
method: 'insertMany',
value: [{id: 1, test: 'test', cool: 1}, {id: 2, test: 'test2', cool: 2}]
}
ws.send(JSON.stringify(req))WebSocket сервис принимает все доступные методы из OrionDB Methods
