kw by
Контекстное слово — объявление актора (§12.5), топика (§10.5)
Список слов: §1.4
Синтаксис
Actor = "actor" Ident [ "sharded" "by" Ident ":" Type ] "{" { ActorMember } "}" ;Topic = "topic" Ident ":" Type [ "sharded" "by" FieldPath ] ;ClusterClause = "seeds" Expr | "port" IntLit | "trace_sample" FloatLit | "auth" Block | "defaults" "{" { Ident Expr } "}"
| "role" Ident "{" RoleClause { ( ";" | NL ) RoleClause } "}"
| "assign" "by" Expr { "else" Expr } ;Query = "from" Pattern "in" Expr { "where" Expr } [ "order" "by" Ord { "," Ord } ]
[ "group" "by" Expr "into" Ident ] [ "skip" Expr ] [ "take" Expr ]
[ "load" "(" IdentList ")" ] [ "select" Expr ] ;Грамматика: Прил. A
Определяется в
- 1.4 Ключевые слова — Зарезервированные (нельзя использовать как имена)
- 14.2 Динамическая конфигурация — dynamic Имя { … } — значения хранятся в координаторе, реплицируются на все узлы и меняются без перезапуска.
- 5.9 Выражения запросов — Форма: from x in источник (where e)\* (order by e (asc|desc)?, …)?
- 10.5 Топики — рассылка по кластеру — Топик — распределённый broadcast с хранением во встроенном хранилище.
- 12.1 Объявление кластера — В программе не больше одного cluster.
- 12.5 Шардированные акторы — Ключ объявляется в заголовке (sharded by имя
- 12.8 Встроенное хранилище и таблицы — Хранилище на каждом узле роли journal, репликация — Raft на шард.
- 18.5 A/B-тесты — В oxl test эксперимент прогоняется на записанном трафике и сравнивает метрики вариантов со статистической значимостью.
Примеры
let top = from o in db.Order
where o.userId == uid && o.total > MIN_TOTAL
order by o.createdAt desc
skip page * PAGE_SIZE
take PAGE_SIZE
load(items)
let names = from u in users where u.active select u.name // List в памяти
let byRole = from u in users group by u.role into g select (g.key, g.count())@retain(ORDER_EVENTS_RETENTION)
topic OrderEvents: OrderEvent sharded by .userId
emit OrderEvents(e) // публикация
for await e in OrderEvents.subscribe(key: uid, from: .Latest) { … }
for await e in OrderEvents.subscribe(group: "indexer") { index(e) }— 10.5 Топики — рассылка по кластеру
Связанные диагностики
query-not-sql, topic-without-journal, actor-not-hosted, cluster-auth, cluster-decl, cluster-needs, cluster-seeds, placement-conflict, saga-without-role, service-not-served, unknown-role, shard-count-clamped, table-schema, ab-test-decl