【问题标题】:Data model for inconsistent data on CassandraCassandra 上不一致数据的数据模型
【发布时间】:2018-12-26 10:47:07
【问题描述】:

我对 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 感到困惑,当我不知道表结构时,无法理解如何处理如何导入数据

【问题讨论】:

    标签: cassandra


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 您的链接已损坏。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-07
      • 2020-05-31
      • 2011-05-24
      • 2014-03-01
      • 2018-06-26
      相关资源
      最近更新 更多