2.7 KiB
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'
}));