Apache Kafka及其配套的键值存储系统如今用于为越来越多的关系数据库提供持久性存储。大多数数据库使用键值存储系统作为基础。
最近冒出来的KarelDB是一种关系数据库,它几乎完全建立在开源组件的基础上,包括用于SQL引擎的Apache Calcite以及用于事务和控制功能的Apache Omid。到目前为止,该开源数据库仅支持单个节点,但是数据库行业观察人士认为它大有希望在将来扩大支持规模。
KaralDB及其他新兴数据库立足于Kafka嵌入式键值存储系统和名为KCache的内存中缓存。默认情况下,这个新的关系数据库使用配置成RocksDB缓存的KCache,而应用广泛的Kafka流处理软件支持RocksDB缓存。
基于Kafka的数据流平台供应商Confluent的Robert Yokota特别指出:“这让KarelDB得以支持更庞大的数据集和更快速的启动时间。”Yokota在最近介绍KarelDB的博文中补充道:“如果需要,还可以配置KCache,以便使用内存中缓存而不是使用RocksDB。”
与Confluent基于Kafka的平台不同,KarelDB不是一种数据流数据库。不过,Yokota之所以为该关系数据库摇旗呐喊,主要原因是它基于Kafka支持的开源组件。因此,他认为它有可能流行起来。
那些开源组件包括Calcite,这种SQL框架将关系查询推送到数据存储系统,该方法被认为可以提供更高效的处理。Yokota特别指出,KarelDB将从即将发布的Calcite优化机制中“自动受益”。
其他开源项目(比如Apache Flink流处理引擎)也充分利用了Calcite,包括SQL API。Calcite还包括一个SQL解析器。
与此同时,Apache Omid框架与KarelDB一起使用,以支持键值存储系统上的事务。Omid最初被设计为面向HBase NoSQL数据库的事务管理器,但由于它使用现有的键值存储系统来维护事务元数据,因此与KCache相辅相成、相得益彰。
Yokota特别指出,KarelDB将诸如此类的功能堆叠在KCache的上面以管理事务。Omid还使用一种名为多版本并发控制的技术,在其他关系数据库中实现“快照隔离”机制。
KarelDB还因能够作为嵌入式数据库或服务器运行而受到吹捧。在后一种情况下,它使用Apache Avatica支持远程过程调用(PRC)传输协议。
Yokota特别指出,使用Kafka运行诸如此类的开源组件有诸多优点,其中之一在于多台服务器能够“跟踪”(tail)同一主题集。他补充道:“这让多台KarelDB服务器可以作为一个集群运行,没有单一故障点。”
KarelDB以捷克科幻小说作家Karel Capek的名字命名,世人认为是他发明了“机器人”(robot)一词。一种编程语言也以他的名字命名。