Files
Baradb/docs/ru/protocol.md
T

2.7 KiB

Справочник по протоколу

BaraDB поддерживает несколько протоколов для клиентской коммуникации:

  • Binary Wire Protocol — высокопроизводительный, низкая латентность
  • HTTP/REST API — независимый от языка, легко отлаживать
  • WebSocket — потоковая передача и pub/sub

Binary Wire Protocol

Использует big-endian кодирование для всех многобайтовых значений.

Цикл соединения

Client                          Server
  |                               |
  |─── TCP connect ──────────────>|
  |<── TLS handshake (optional) ──|
  |─── Auth message ─────────────>|
  |<── Auth_OK / Error ───────────|
  |─── Query message ────────────>|
  |<── Data / Complete / Error ───|
  |─── Close message ────────────>|
  |<── TCP close ─────────────────|

Формат сообщения

┌─────────────┬─────────────┬─────────────┬─────────────────────┐
│  Length     │  Type       │  Sequence   │  Payload            │
│  (4 bytes)  │  (1 byte)   │  (1 byte)   │  (Length - 6 bytes) │
└─────────────┴─────────────┴─────────────┴─────────────────────┘

Типы сообщений

Тип ID Направление Описание
Query 0x01 C→S Выполнить запрос
Insert 0x02 C→S Вставить данные
Update 0x03 C→S Обновить данные
Delete 0x04 C→S Удалить данные
Ready 0x05 S→C Готов к следующей команде
Error 0x06 S→C Ответ об ошибке

HTTP/REST API

Base URL: http://localhost:9470/api/v1

Endpoints

Health

GET /health

Query

POST /query
Content-Type: application/json

{
  "query": "SELECT name, age FROM users WHERE age > 18"
}

Schema

GET /schema

WebSocket Protocol

URL: ws://localhost:9471

Pub/Sub

ws.send(JSON.stringify({
  type: 'subscribe',
  table: 'users'
}));