來源:中國電商物流網 發布時間:2019-10-11 8:44
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)一詞。此外,還有一門編程語言也是以他的名字命名。