2013-03-21 29 views
1

我對NoSQL和Cassandra相當陌生,但我的架構委員會告訴我使用它。我只是想了解如何將RDBMS模型轉換爲noSQL。Casandra數據模型不一致數據模型

我有一個數據庫,用戶需要將數據從excel或csv文件導入數據庫。該文件可能每次都有不同的列。

例如Excel文件中的數據可能是這個樣子:

Name| AName| Industry| Interest | Pint |Start Date | End date 

x | 111-121 | IT | 2 | 1/1/2011 | 1/2/2011 

x | 111-122 | hotel | 1 | "" | "" 

y| 111-1000 | IT | 2 | 1/1/2011 | 1/2/2011 

後,我們上傳此下一個excel文件看起來

Name| AName| Industry| Interest | Pint |Start Date | isTrue | isNegative 

x | 111-121 | IT | 2 | 1/1/2011 | 1/2/2011 | yes | no 

x | 111-122 | hotel | 1 | "" | no | no 

y| 111-1000 |health | 2 | 1/1/2010 | yes|"" 

我不會事先知道我列我將在導入數據時創建。我完全和noSQL混淆,無法理解如何處理這個如何導入數據,當我不知道表結構

回答

0

開始的基本事實,一個列家族(cassandra爲「表」)是由的行。每行都有一個行鍵和一些鍵/值對(稱爲列)。對於一行中的特定列,列的名稱是該對的關鍵字,列的值是該對的值。僅僅因爲你在一行中有某個名稱的列並不一定意味着你將在任何其他行中擁有該名稱的列。

在內部,行鍵,列名和列值以字節數組的形式存儲,您需要使用序列化程序將程序數據轉換爲字節數組並返回。

這取決於你如何定義行鍵,列名和列值。

一種方法是將CF中的一行對應於Excel中的一行。您必須確定一個Excel列,它將提供唯一的ID並將其存儲在行鍵中。 Excel列的剩餘部分可以一對一地存儲在cassandra列中。這可以讓您在大多數列名稱上非常靈活,但您必須在某處具有唯一的鍵值。唯一的關鍵要求將始終適用於您使用的任何存儲方案。

還有其他存儲方案,但它們都歸結爲您在Excel中定義您的行鍵以及如何將Excel數據分解爲鍵/值對。

0

檢查出一些NoSQL的模式,我強烈建議閱讀「建立在流沙」帕特 - 埃蘭

一些好的模式(使用或不使用PlayOrm)... http://buffalosw.com/wiki/Patterns-Page/

+0

你的鏈接斷開。 – influent 2016-07-11 17:06:04