我对NoSQL和Cassandra非常陌生,但是我的架构委员会告诉我要使用它。我只想了解如何将关系数据库模型转换为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,也不知道如何在不了解表结构的情况下如何导入数据
发布于 2013-03-22 03:57:06
首先,基本事实是列族(cassandra中的"table")是由行组成的。每一行都有一个行键和一些键/值对(称为列)。对于行中的特定列,该列的名称是该对的键,该列的值是该对的值。仅仅因为您在一行中具有某个名称的列,并不一定意味着您将在任何其他行中具有该名称的列。
在内部,行键、列名和列值存储为字节数组,您需要使用序列化程序将程序数据转换为字节数组,然后再转换回来。
如何定义行键、列名和列值由您决定。
一种方法是让CF中的一行对应于Excel中的一行。您必须确定将提供唯一id的一个Excel列,并将其存储在行键中。剩余的Excel列可以一对一地存储在cassandra列中。这使您在大多数列名上非常灵活,但您必须在某个地方有一个惟一的键值。对于您使用的任何存储方案,唯一键要求始终有效。
还有其他的存储方案,但它们都归结为您在Excel中定义行键是什么,以及如何将Excel数据分解为键/值对。
发布于 2013-03-22 20:26:13
查看一些noSQL模式,我强烈建议阅读Pat Helland的“建立在快速沙子上”
一些好的模式(使用或不使用PlayOrm)...http://buffalosw.com/wiki/Patterns-Page/
https://stackoverflow.com/questions/15556190
复制相似问题