Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OrionDB

Static Badge

🚀 OrionDB - Простота и Мощность в Каждом Шаге

Забудьте о сложных настройках и дополнительных сервисах! OrionDB предлагает уникальный баланс между производительностью и удобством использования.

image

🪄 Почему стоит выбрать Orion?

Встроенные возможности шардирования - забудьте о необходимости интеграции сторонних решений. Шардирование настроено из коробки, что позволяет эффективно распределить нагрузку и оптимизировать использование ресурсов.

Минимум зависимостей - никаких дополнительных установок и конфигураций. Все зависимости - базовые модули 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 использует однопоточность. Пока что активно тестируется для повышения производительности!

Типизация в schema.json

Строгая типизация данных на самом деле не является строгой, вы можете прописать типизацию для JSON-ключей в файле schema.json, который находится в каждой из коллекций. Orion попытается конвертировать входящие данные в нужный тип данных, но вне зависимости от результата конвертации данные все равно будут сохранены в базу данных. В режиме strict некоторые типы данных не конвертируются при несовместимости типов, тогда в таком случае хранится null.

Доступные типы данных на данный момент:

  • STRING
  • BOOLEAN
  • INT
  • FLOAT
  • BINARY (мы можем хранить бинарные данные ArrayBuffer)
  • JSON

Дополнительные типы в Schema

Вы можете регистрировать дополнительные типы для своих полей (ключей). Список дополнительных типов:

  • KEY
  • INDEX
  • INDEX-KEY

Пример schema.json:

{
    "id": "INT",
    "_id": ["INT", "KEY"]
}

Методы для работы с Orion

Все доступные методы находятся по ссылке - OrionDB Methods

❤️ Мультиплатформа

Вы можете использовать WebSocket для того, чтобы добиться эффективности не только в NodeJS, но и на других языках где поддерживается WebSocket.
Для того чтобы пользовать WebSocket, нам придется запустить сервис Orion:

npm start

Вы так же можете запустить его и отдельно другими методами, чтобы это работало в фоне, потому что мы можем запустить Orion Service напрямую (я рекомендую PM2):

node service.js

Подключение к OrionDB

Давайте рассмотрим подключение к серверу 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

About

JavaScript-orient simple NoSQL database

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages