Kafka“孕育”了一款开源关系数据库:KarelDB
近期面世的 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 服务器可以作为一个集群运行,而不会产生单一故障点。”
开源中国征稿啦!
开源中国 www.oschina.net 是目前备受关注、具有强大影响力的开源技术社区,拥有超过 400 万的开源技术精英。我们传播开源的理念,推广开源项目,为 IT 开发者提供一个发现、使用、并交流开源技术的平台。
现在我们开始对外征稿啦!如果你有优秀的技术文章想要分享,热点的行业资讯需要报道等等,欢迎联系开源中国进行投稿。投稿详情及联系方式请参见:我要投稿