1

我对 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 感到困惑,并且无法理解如何处理如何导入数据

4

2 回答 2

0

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

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

于 2013-03-22T12:26:12.790 回答
0

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

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

如何定义行键、列名和列值取决于您。

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

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

于 2013-03-21T19:57:05.517 回答