查询事件的难题在处理事件溯源系统时面对的数据结构与传统数据库不同。事件含丰富元数据通过主题分层组织需对事件流过滤、聚合和转换性能依赖合适索引。传统 NoSQL 查询接口难满足需求因其未考虑事件特定特性。认识 EventQLEventQL 由 The Native Web 为 EventSourcingDB 设计保留 SQL 表达能力抓住事件查询本质。给出简单示例若写过 SQL 会感熟悉它专为事件查询定制可按事件类型过滤、访问嵌套数据负载、重塑输出结果。EventQL 设计的重要性一流的事件属性EventQL 将事件元数据视为一等公民如 e.type、e.subject 等每个属性代表索引机会设计良好的事件存储可在类型、主题和时间戳上创建索引使查询速度快。主题层次结构实现智能范围界定EventQL 主题模式匹配强大主题层次结构常见可限定查询范围、创建基于主题的索引、构建支持层次结构的查询让浏览事件数据直观。类 SQL 的表达能力借鉴 SQL 成熟模式如 WHERE 子句、ORDER BY 等可精确表达复杂查询并给出示例。投影作为一等概念与 SQL 中可选的 SELECT 不同EventQL 要求用 PROJECT INTO 进行显式投影对事件查询有意义投影语法支持任意对象构造可构建所需输出格式。设计上对索引友好EventQL 能引导编写可索引的查询WHERE 子句常用属性如事件类型、主题等可映射到复合索引语言结构让人清楚索引作用之处。使解析器达到生产就绪状态最初开发 GethDB 时编写的 EventQL 解析器与特定用例紧密耦合现使其成为独立库达到生产就绪状态。最终得到强大的 Rust 解析器提供详细错误信息、构建强类型抽象语法树、支持完整语法、有全面测试覆盖、可嵌入基于 Rust 的事件存储。类型推断即将推出GethDB 版本含类型推断系统计划移植到库中。类型推断器可收集类型信息排除不合理查询防止运行时失败。可在 GitHub 上找到解析器。重要性所在事件溯源需良好工具支持EventQL 在熟悉、表达能力强、事件感知、对索引友好方面表现出色为构建事件溯源系统提供有效查询方法。亲自尝试解析器以 Rust crate 形式提供给出开始使用的方法示例。结论优秀语言设计要理解领域知识、创建自然抽象EventQL 在事件溯源方面做到了证明调整 SQL 模式适应事件流效果好查询语言强大易用。从事事件溯源工作可了解 EventQL需要生产就绪解析器可使用 Rust 实现版本。此解析器为支持相关工作构建欢迎反馈和贡献代码。