BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

AxonIQ发布最新的事件存储数据库AxonDB

| 作者 Jan Stenberg 关注 37 他的粉丝 ,译者 无明 关注 3 他的粉丝 发布于 2018年3月21日. 估计阅读时间: 4 分钟 | ArchSummit北京2018 共同探讨机器学习、信息安全、微服务治理的关键点

看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!

AxonIQ公司最近发布了AxonDB,一款用于事件溯源的数据库,支持事务和基于推送的事件发布模式。为了确保数据库的性能不受存储容量的影响,AxonDB的架构在读取数据方面下了功夫。AxonIO方面的评测表明,即使在处理大量事件时,AxonDB的性能仍然十分稳定。

AxonDB支持完整的ACID事务模型,也就是说,可以在单个事务中插入多个事件。一致性是通过单调增长的唯一性序列号来实现的,所有事件必须持有一个这样的序列号。为了在高吞吐的情况下保证持久性,需要搭建AxonDB集群。

在往AxonDB插入事件时,事件不仅会被保存起来,还会被发送给事件监听器和事件处理器,从而避免了定时轮询,降低了延迟。

AxonDB的其他特性包括:

  • 使用Java开发。
  • 直接操作文件,不使用任何底层的数据库系统。
  • 只允许以追加的方式插入事件。
  • 内置支持快照。
  • 支持临时的查询,包括使用XPath——可以通过这种方式达到调试等目的。
  • 支持集群,集群只有一个主节点,写入事件时采用法定节点数原则。
  • 支持从传统数据库或MongoDB迁移到AxonDB。

AxonIQ的商务总监Frans van Buul在一次演讲中强调,甘特的研究数据表明,基于事件的架构(Event-Driven Architecture,EDA)是2018年的十大技术趋势之一,而事件溯源就属于EDA的一种。

AxonIQ的团队之所以要设计这款全新的数据库,是因为他们找不到一款可以支持以下特性的事件存储数据库,比如:

  • 支持读取单个聚合中的所有事件,或者读取从某个时间点之后的所有事件。
  • 按照写入顺序读回事件。
  • 一次写入多个事件,并保证原子性,只能读取已提交的事件。
  • 性能不受存储大小的影响,支持快照。
  • 只支持追加方式写入,没有必要支持随机性的插入,不允许更新或删除,因为它们是不可变的。
  • 将存储过的事件发布给事件监听器。

RDBMS对原子性有很好的支持,但性能是硬伤。当需要存储的事件很多时,性能就得不到保证。

文档数据库(如MongoDB)可以存储大量的数据,但对事务的支持不太好。解决办法是将多个事件保存在同一个文档中,但这样会导致其他方面的问题。

Kafka高度可伸缩,虽然是为保存临时消息而设计,但也可以无限制地保存消息。但在读取一个聚合中的事件时仍然存在问题,虽然可以使用topic,但无法扩展到数百万个聚合。

由Greg Young领导开发的Event Store是另一个为事件溯源而设计的存储引擎。它把大部分的逻辑包含在了引擎当中,而van Buul希望能够把逻辑与存储分开。

基于上述的几点原因,他们最后决定自己开发一个新的数据库,专注于支持事件溯源。于是,AxonDB诞生了——一款商业数据库,提供了4个版本,其中一个是免费的开发者版本(包含了文档)。

注:即将发布的MongoDB 4.0将支持跨文档事务

AxonIQ提供了一个GDPR模块,确保事件中的个人数据使用加密秘钥进行加密,通过删除秘钥就可以移除个人数据。

2018年9月21号将会有一场关于Axon产品的推介会

查看英文原文:AxonDB, a New Implementation of an Event Store

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT