Greg Young 是 Event Store 的首席架构师,他最近谈到了 Event Store 中的 Projections Library,以及如何以读模式来使用它。Greg 在讲座中解释了 Projections Library 及其主要用例。他还介绍了很多实用的例子。
Projections Library 是一种流式数据库,主要关注时间化查询(Temporal Query)。当要将发生的事情与时间关联起来时,比如希望在 Twitter 上找出一分钟内说过“生日”的人中提到“礼物”的,使用时间化查询。据 Greg 介绍,时间化查询是业务系统中一种常见的查询类型,Event Store 可以轻松处理。而使用 SQL 来解决此类问题往往非常复杂,而且所需的子查询数是呈指数级增长的。
Projections Library 包含如下特性:
- 取到一个事件流并将其转换为其他某种形式,比如从一个新客户事件组成的流中选取名字。
- 将流划分到新的分组中(比如分解或连接流)。
- 跨多个流的 Projections 使对大量事件的查询成为可能(例如,并发查询所有银行账户来查找特定的事务模式)。
- 持续查询。Projections 可以保持运行,新来的数据也会加入到查询结果中。
- 发出新事件,比如查找超过一定规模的订单,并从这些订单创建大的订单事件,以便进行额外的信贷控制。
Projections Library 是专门为大数据问题、持续查询和流式信息构建的。
Greg 特别指出,Projections Library 并不是 NoSQL 数据库(如文档数据库)的替代品,那与其主要用例相去甚远。
Projections 通常以其默认语言 JavaScript 编写,这意味着使用 Web 浏览器就可以。此外也内建了使用浏览器调试的功能。
AtomPub 是其主要接口。大多数平台都能够发送 HTTP 请求,因此可用于构建 Event Store 客户端,也可成为异构环境的一部分。
Event Store 是根据 Event Source 的理念构建的数据库,这种理念保存的是事件,而不像今天的大多数数据库类型那样保存状态。Event Store 是开源产品,也提供了可选的商业解决方案。它于 2012 年 9 月在伦敦的一场发布会中发布,最近刚刚发布了1.0.1 版本。
评论