您在HBase FAQ中閱讀的第一個示例模式之一是學生課程中的多關係示例。該模式在Student表中有一個課程列,在課程表中有一個學生列。參考完整性和HBase
但我不明白HBase如何保證這兩個對象之間的完整性。如果在更新一個表格和另一個表格之間出現問題,我們會遇到問題。
我看到有一個交易設施,但是對於每個Put的使用情況,使用它的成本是多少?或者還有其他方法來思考這個問題嗎?
您在HBase FAQ中閱讀的第一個示例模式之一是學生課程中的多關係示例。該模式在Student表中有一個課程列,在課程表中有一個學生列。參考完整性和HBase
但我不明白HBase如何保證這兩個對象之間的完整性。如果在更新一個表格和另一個表格之間出現問題,我們會遇到問題。
我看到有一個交易設施,但是對於每個Put的使用情況,使用它的成本是多少?或者還有其他方法來思考這個問題嗎?
如果您必須將兩個INSERT作爲一個工作單元執行,那意味着您必須使用事務管理器來保留ACID屬性。沒有其他方法可以考慮我所知道的問題。
成本是少參考完整性的關注。正確編碼,不要擔心性能。您的代碼將成爲查找性能問題的第一位,而不是事務管理器。
沒有額外的日誌,您將無法保證這兩個對象之間的完整性。 HBase只在行級別有原子更新。儘管可以使用該屬性創建一個可以在故障後恢復的Tx日誌。
我們遇到同樣的問題。
我開發了一個hbase的商業插件,用於處理交易和您提到的關係問題。具體而言,我們利用DataNucleus構建符合JDO標準的環境。我們的插件是上市http://www.datanucleus.org/products/accessplatform_3_0/datastores.html此頁面上,或者您可以直接到我們的小博客http://www.inciteretail.com/?page_id=236。
我們將JTA用於我們的交易服務。因此,就你的情況而言,我們將處理關係問題以及索引表的任何插入(很難有沒有索引查找和排序的應用程序)。
邏輯關係模型使用關係的兩個主要品種:一個一對多和 許多一對多。關係數據庫模型前者直接作爲外鍵( 無論是明確由數據庫強制執行,限制或隱含的 應用程序引用作爲查詢的連接列),而後者爲結表(附加 表,其中每一行代表一個實例兩個主要關係表 )。在HBase中沒有這些映射,並且通常歸結爲數據規範化。 首先要注意的是,沒有任何內置連接或約束的HBase對於顯式關係幾乎沒有用處。您可以輕鬆地將大量的數據放入HBase表中:但是 這只是一個關係在原表中的行的某些部分發生 對應於後者表rowkeys的部分。 HBase的什麼都不知道這個釐清 tionship的,所以它是給你的應用程序做的事情與它(如果有的話)。