写点什么

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

  • 2018-03-20
  • 本文字数:1229 字

    阅读完需:约 4 分钟

看新闻很累?看技术新闻更累?试试下载 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

2018-03-20 19:002176
用户头像

发布了 731 篇内容, 共 479.6 次阅读, 收获喜欢 2008 次。

关注

评论

发布
暂无评论
发现更多内容

《新程序员》杂志|李鹏辉谈开源云原生消息流系统

Apache Pulsar

开源 架构 云原生 中间件 Apache Pulsar

K8s Ingress Provider 为什么选择 MSE 云原生网关?

阿里巴巴云原生

阿里云 Kubernetes 容器 微服务网关 云原生网关

车联网平台搭建从入门到精通 01|车联网场景中的 MQTT 协议

EMQ映云科技

车联网 物联网 通信 mqtt 平台搭建

数据分析实际案例之:pandas在泰坦尼特号乘客数据中的使用

程序那些事

Python 数据分析 pandas 程序那些事 2月月更

数智时代,谁都做平台,谁都做生态!这行吗?

海比研究院

SchedulerX 如何帮助用户解决分布式任务调度难题?

阿里巴巴云原生

阿里云 云原生 公有云 SchedulerX

云效Flow如何实现阿里云ECS多环境发布

阿里云云效

阿里云 运维 云原生 软件开发 研发

跨平台应用开发进阶(一) :走近 uni-app

No Silver Bullet

uni-app 跨平台 实战 2月月更

JAVA 那些事 - 聊聊那些易混淆的概念:JVM/JRE/JDK,openJDK/oracleJDK,JAVA SE/JAVA EE/Jakarta EE

明哥的IT随笔

jdk Openjdk Java EE

网络安全之小程序抓包渗透测试流程

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

AI生明月,万里共文心

脑极体

平安科技从 Oracle 迁移到 UbiSQL 的实践

PingCAP

EdgeDB 架构简析

CRMEB

边缘计算加速视频直播场景:更清晰、流畅、实时

火山引擎边缘云

边缘计算 视频直播 异构算力

[建造者模式实战]如何用JAVA实现一个基于POI的复杂表格导出工具类?

山河已无恙

Java 2月月更

Web Components 系列(八)—— 自定义组件的样式设置

编程三昧

前端 组件化 2月月更 WebComponent

解构流存储 — Pravega,与 Flink 构建端到端的大数据流水处理线

Apache Flink

大数据 flink 开源 编程 实时计算

技术人聊开源:这并不只是用爱发电

SOFAStack

开源

11种绕过CDN查找真实IP方法

喀拉峻

网络安全

服务网格在联通的落地实践

百度开发者中心

恒源云(GpuShare)_AIphaCode是否能取代程序员?

恒源云

深度学习 AI transformers

FinClip 的 2021 与 2022

FinClip

产品设计与思考

使用Perf和FlameGraph进行系统性能分析

wong

flamegraph perf

独家交付秘籍之招式拆解(第一回)

阿里巴巴云原生

阿里云 云原生 应用交付

会声会影剪辑视频教程讲解

懒得勤快

网络安全kali渗透学习 web渗透入门 DDOS的原理和防护

学神来啦

Spring Boot Serverless 实战系列 | 性能调优

阿里巴巴云原生

spring 阿里云 Serverless 云原生 框架

Go 语言入门很简单:基准测试

宇宙之一粟

Go 语言 2月月更

GPU在Kubernetes中的使用与管理 | 社区征文

大菠萝

新春征文

火山引擎 MARS-APMPlus X 美篇 | 形成应用性能全面监控,大幅提升APP稳定性

字节跳动终端技术

字节跳动 APM 性能监控 应用性能监控产品 火山引擎MARS

AxonIQ发布最新的事件存储数据库AxonDB_语言 & 开发_Jan Stenberg_InfoQ精选文章