gpt4 book ai didi

cassandra - 了解 Cassandra 数据模型

转载 作者:行者123 更新时间:2023-12-04 16:19:58 26 4
gpt4 key购买 nike

我最近通过 this 开始学习 No-SQL 和 Cassandra文章。作者通过这张图来解释数据模型: enter image description here

作者还给出了下面列族的例子:

Book {

key: 9352130677{ name: “Hadoop The Definitive Guide”, author:” Tom White”, publisher:”Oreilly”, priceInr;650, category: “hadoop”, edition:4},

key: 8177228137{ name”” Hadoop in Action”, author: “Chuck Lam”, publisher:”manning”, priceInr;590, category: “hadoop”},

key: 8177228137{ name:” Cassandra: The Definitive Guide”, author: “Eben Hewitt”, publisher:” Oreilly”, priceInr:600, category: “cassandra”},

}

但是在该教程和我完成的所有其他教程中,最终都是在 cassandra 中创建常规表。我无法将 Cassandar 模型与我正在创建的内容联系起来。

例如,我创建了一个名为 Employee 的列族,如下所示:

create columnfamily Employee(empid int primary key,empName text,age int);

现在我插入了一些数据,我的列族看起来是这样的: enter image description here

对我来说,这看起来像是一个常规的关系表,而不是作者所解释的数据模型。如何创建 Employee 列族,其中每一行代表具有不同属性的员工?像这样的东西:

Employee{
101:{name:Emp1,age:20}
102:{name:Emp2,salary:1000}
102:{manager_name:Emp3,age:45}
}

最佳答案

  1. 您需要了解,在使用 cql 的表示中,它可能看起来像常规关系表,但在 Cassandra 中行的内部结构完全不同。它为每个员工保存不同的属性集,您在使用 cql 查询时看到的空值只是空/不存在单元格的表示。

  2. 您想要实现的是非结构化数据模型。 Cassandra 从这个模型开始,一切都按照您阅读的教程中的描述工作,但有一种观点认为非结构化数据设计不利于开发,并且产生的问题多于它解决的问题。因此,过了一段时间,Cassandra 转向了“结构化”数据结构(并从 thrift 转向了 cql)。这并不意味着您必须存储所有键/行的所有属性,也不意味着所有行都具有相同数量的属性,它只是意味着您必须在使用属性之前声明它们。

  3. 您可以使用 Map、List、Set 等数据类型、UDT(用户定义类型)或仅将数据保存为 json 字符串并在应用程序端解析它来实现某种非结构化数据建模。

关于cassandra - 了解 Cassandra 数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41844770/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com