查看原文
其他

Kafka“孕育”了一款开源关系数据库:KarelDB

局长 开源中国 2020-09-02
Java 开发者对 Apache Kafka 应该不会感到陌生,这是一个分布式的发布订阅消息系统,作为一个非常重要的开源项目,它已经被许多公司以及产品用作关键组件。Kafka 及其配套的 Key-Value 存储系统如今也越来越多地被用来为关系数据库提供持久性存储,大多数数据库也使用 Key-Value 存储系统作为基础。
本文将要介绍的这款数据库正是由 Apache Kafka 提供支持,它同样使用了来自 Kafka 配套的 Key-Value 存储系统。

近期面世的 KarelDB 是一款关系数据库,它几乎完全基于开源组件构建,包括用于 SQL 引擎的 Apache Calcite 以及用于事务和控制功能的 Apache Omid。到目前为止,这款数据库仅支持单节点,但 KarelDB 的作者表示它在将来会扩大支持规模。

和其他的新兴数据库一样,KarelDB 同样基于 Kafka 的嵌入式 Key-Value 存储系统和名为 KCache 的内存缓存(in-memory cache)。默认情况下,KarelDB 使用配置成 RocksDB 缓存的 KCache,由应用广泛的 Kafka 流处理软件提供支持。

KarelDB 的作者,同时任职于 Confluent 公司(基于 Apache Kafka 提供流数据平台的供应商)的 Robert Yokota 表示:“这使得 KarelDB 能够支持规模更大的数据集和拥有更快的启动时间。”他还在最近介绍 KarelDB 的博文中补充道:“KCache 可被配置成使用内存缓存而非 RocksDB。

与 Confluent 基于 Kafka 的平台不同,KarelDB 不是流数据库。尽管如此,Yokota 还是选择了关系数据库,主要是因为它基于 Kafka 支持的开源组件。因此,他认为 KarelDB 有机会流行起来。这些开源组件包括 Calcite,它是一个 SQL 框架,支持将关系查询推送到数据存储系统,这个方法被认为可以提供更高效的处理。Yokota 表示 KarelDB 会从即将推出的 Calcite 优化机制中“自动受益”。

与此同时,Apache Omid 框架与 KarelDB 一起使用,以支持 Key-Value 存储系统上的事务。Omid 最初被设计为面向 HBase NoSQL 数据库的事务管理器,但由于它使用现有的 Key-Value 存储系统来维护事务元数据,因此与 KCache 轻松地配套使用。

Yokota 指出,KarelDB 将类似的功能堆叠在 KCache 的上面以管理事务。Omid 还使用一种独有的名为多版本并发控制(multi-version concurrency control)的技术,以在其他关系数据库中实现“快照隔离(snapshot isolation)”机制。此外,KarelDB 还支持作为嵌入式数据库或服务器运行。在第二种情况下,它使用 Apache Avatica 来支持远程过程调用传输协议(Remote Procedure Call wire protocol)。

Yokota 还认为使用 Kafka 运行这些开源组件有许多优点,其中一个就是多台服务器能够“追踪”同一主题集。也就使得多台 KarelDB 服务器可以作为一个集群运行,而不会产生单一故障点。

对了,KarelDB 名字的灵感来自一位科学家 —— 它以捷克科幻小说作家 Karel Capek 的名字命名,Karel Capek 被认为发明了“机器人”(robot)一词。此外,还有一门编程语言也是以他的名字命名。

开源中国征稿啦!

开源中国 www.oschina.net 是目前备受关注、具有强大影响力的开源技术社区,拥有超过 400 万的开源技术精英。我们传播开源的理念,推广开源项目,为 IT 开发者提供一个发现、使用、并交流开源技术的平台。


现在我们开始对外征稿啦!如果你有优秀的技术文章想要分享,热点的行业资讯需要报道等等,欢迎联系开源中国进行投稿。投稿详情及联系方式请参见:我要投稿

推荐阅读

Vue 3 源码公布

Linus Torvalds 不担心微软入侵 Linux

曾经的独角兽 Docker,如今资金紧张

15年来这 8 门编程语言位置十分稳定

RMS 给微软的建议:开源 Windows、收回“毒瘤”言论

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存