我寫了libQtCassandra,當前版本不支持超級列。不添加支持的一個原因是,它打破了庫使用的方案,以便用戶使用數組運算符([])訪問和寫入數據。你會如何支持libQtCassandra庫中的超級列?
如果你不熟悉,圖書館讓我們創建一個「上下文」(到卡桑德拉羣集的連接),從上下文你可以寫這樣的事情:
// set value 123 in "column name" of "row key" of "column family":
context["column family"]["row key"]["column name"] = 123;
// retrieve that value:
int value = context["column family"]["row key"]["column name"];
所以...很簡單。但是,如果我們引入超級列,我們再添加一個數組訪問權限,這取決於是否存在超級列。你會怎麼做?
你會使用函數來訪問超級列嗎?
context["column family"]["row key"].sc("super column")["column name"] = 123;
或者你會使超級列與其他參數一樣無縫工作嗎?
context["column family"]["row key"]["super column"]["column name"] = 123;
很明顯系統(列族)知道什麼是什麼。因此,無論採用哪種方式都很容易實現,只是它使得庫支持超級列的數組語法要複雜得多。
我有另一個想法是添加一個對象,可以在指定行時使用。但是這看起來相當難看:
context["column family"][sc("row key", "super column")]["column name"] = 123;
這很容易實現,但在看最終代碼時看起來不太好。
對於這樣一個問題,什麼會是更加stl或boost的方法?
啊......我知道超級專欄在卡桑德拉是一種黑客攻擊,但我不知道他們將被棄用。我讀到的最後一件事情是相反的:它們將會更好地實現(不是將所有數據保存在列中,而是手動處理單元數據的加載形式),它將作爲單獨的單獨處理對象)。無論如何...我會改爲查看組合列功能,並單獨保留超級列。如果它已被棄用,肯定不值得付出努力! –