Cassandra上不一致数据的数据模型

时间:2013-03-21 19:14:56

标签: cassandra

我是NoSQL和Cassandra的新手,但我的架构委员会告诉我使用它。我只是想了解如何将RDBMS模型转换为noSQL。

我有一个数据库,用户需要将数据从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完全感到困惑,无法理解当我不知道表结构时如何处理数据

2 个答案:

答案 0 :(得分:0)

从列系列(“表”的cassandra)由行组成的基本事实开始。每行都有一个行键和一些键/值对(称为列)。对于行中的特定列,列的名称是该对的键,列的值是该对的值。仅仅因为你在一行中有一个名称的列并不一定意味着你在任何其他行中都有一个该名称的列。

在内部,行键,列名和列值存储为字节数组,您需要使用序列化程序将程序数据转换为字节数组,然后再返回。

由您决定如何定义行键,列名和列值。

一种方法是在CF中有一行对应Excel中的一行。您必须标识一个Excel列,该列将提供唯一ID并将其存储在行键中。 Excel列的剩余部分可以一对一地存储在cassandra列中。这使您可以在大多数列名称上非常灵活,但您必须在某处具有唯一键值。对于您使用的任何存储方案,唯一的密钥要求将始终适用。

还有其他存储方案,但它们都归结为您在Excel中定义行键是什么以及如何将Excel数据分解为键/值对。

答案 1 :(得分:0)

查看一些noSQL模式,我强烈建议阅读Pat Helland的“建立在Quicksand上”

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