215df1cdf3
- Add Formal Verification section to README and architecture docs - Document TLA+ specs for Raft, 2PC, MVCC, Replication - Add new BaraQL features: JSON path (->, ->>), FTS @@, CREATE INDEX USING FTS, RECOVER TO TIMESTAMP, UNION/INTERSECT/EXCEPT - Add OpenTelemetry tracing example to README - Update Quick Start to use nimble test/bench - Update EN and BG documentation
2.3 KiB
2.3 KiB
BaraQL - Референция на Езика
BaraQL е SQL-съвместим език за заявки с разширения за графи, вектори и документи.
Основни Заявки
SELECT
SELECT name, age FROM users WHERE age > 18 ORDER BY name LIMIT 10;
INSERT
INSERT users { name := 'Alice', age := 30 };
UPDATE
UPDATE users SET age = 31 WHERE name = 'Alice';
DELETE
DELETE FROM users WHERE name = 'Bob';
Агрегати и Групиране
SELECT department, count(*), avg(salary)
FROM employees
GROUP BY department
HAVING count(*) > 5;
JOINs
-- INNER JOIN
SELECT u.name, o.total
FROM users u
INNER JOIN orders o ON u.id = o.user_id;
-- LEFT JOIN
SELECT u.name, o.total
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;
CTEs (Common Table Expressions)
WITH active_users AS (
SELECT * FROM users WHERE active = true
)
SELECT * FROM active_users;
CASE Изрази
SELECT name,
CASE
WHEN age < 18 THEN 'minor'
WHEN age < 65 THEN 'adult'
ELSE 'senior'
END AS category
FROM users;
Схема
CREATE TYPE Person {
name: str,
age: int32
};
Векторно Търсене
INSERT articles {
title := 'Nim Programming',
embedding := [0.1, 0.2, 0.3, ...]
};
SELECT title FROM articles
ORDER BY cosine_distance(embedding, [0.1, 0.2, 0.3, ...])
LIMIT 5;
Графични Шаблони
MATCH (p:Person)-[:KNOWS]->(friend:Person)
WHERE p.name = 'Alice'
RETURN friend.name;
Пълнотекстово Търсене
-- Създаване на FTS индекс
CREATE INDEX idx_fts ON articles(body) USING FTS;
-- Търсене с BM25 ранжиране
SELECT * FROM articles WHERE body @@ 'database programming';
JSON Оператори
-- Извличане на JSON поле като JSON
SELECT data->'name' FROM users;
-- Извличане на JSON поле като текст
SELECT data->>'name' FROM users;
Set Операции
SELECT name FROM customers
UNION ALL
SELECT name FROM suppliers;
Възстановяване до Момент във Времето
RECOVER TO TIMESTAMP '2026-05-07T12:00:00';