2015-01-12 161 views
0

我必須創建一個表,它存儲大量的數據(如400列和5.000.000到40.000.000行)。有一個櫃檯「櫃檯」,從1開始算起。現在這是我的主要關鍵。其他變量是int,float和varchar類型並重復。卡桑德拉範圍查詢cql

我需要爲數據庫比較做到這一點,所以我必須使用Cassandra,即使可能有其他數據庫,在這個特定問題中可以做得更好。

在這張表上,我想執行一些範圍查詢。查詢應該是這樣的:

SELECT計數器,val1,val2,val3從表WHERE計數器> 1000 AND計數器< 5000;

又會有其他的過濾參數:

... AND val54 = 'OK';

我覺得這是Cassandra的問題,因爲「counter」就是PK。我會嘗試運行token()函數,但我想這會很慢。

現在我正在學習Cassandra中的數據建模,但我希望有經驗的人在Cassandra得到了一些提示,比如如何組織表並使查詢可能和快速?也許只是我應該瞭解的一些主題或鏈接,這些將幫助我。

有一個愉快的一天, 弗里德里希

+0

你基本上說明了如何使用關係數據庫解決問題,而沒有說明原始問題是什麼。如果您嘗試使用關係解決方案並將其直接移植到分佈式模型中,那麼它將無法工作。例如,在Cassandra中,您通常會使用時間序列而不是遞增索引來存儲項目。 Cassandra可以在分區內執行範圍查詢,但是不清楚您的實際需求是什麼。 –

+0

謝謝你的回答。如果我使用時間序列,查詢是可能的還是容易的?我沒有看到有什麼不同,但這是可能的。 – Friedrich

+0

是否可以將數據放入一個分區並執行查詢?我的要求是:我想在Cassandra和MSSQL中創建一個數據庫,然後比較一些查詢,即使它在Cassandra中存在問題。我想聽聽你的回答! – Friedrich

回答

1

這聽起來像一個壞的使用情況卡桑德拉。

首先,範圍查詢在Cassandra中是不鼓勵的。這是因爲無法通過訪問羣集中的每個節點來解決範圍問題。

其次,您不能將計數器類型列與其他列類型混合。對於給定的表,它可以具有(並且只有)計數器列,或者可以具有所有非計數器列。就Cassandra數據建模而言,如果你想創建一個成功的數據模型,圍繞你要查詢的確切東西創建你的分區。

+0

我認爲如果我只是查詢計數器值就可以。所以如果我在櫃檯周圍創建分區,查詢將是可能的?我如何做這個分區?你能告訴我的步驟或給我一個鏈接?我想我用了一個錯誤的詞,我不是指計數器類型,這只是我數據庫中整數類型的值名稱。我會改變那個令人困惑的名字。感謝您的幫助! – Friedrich