- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究不同类型的 NoSQL 数据库类型,并尝试了解列族存储的数据模型,例如 Bigtable、HBase 和 Cassandra。
有些人将列族描述为行的集合,其中每行包含列[ 1 ], [ 2 ]。此模型的示例(列族大写):
{
"USER":
{
"codinghorror": { "name": "Jeff", "blog": "http://codinghorror.com/" },
"jonskeet": { "name": "Jon Skeet", "email": "jskeet@site.com" }
},
"BOOKMARK":
{
"codinghorror":
{
"http://codinghorror.com/": "My awesome blog",
"http://unicorns.com/": "Weaponized ponies"
},
"jonskeet":
{
"http://msmvps.com/blogs/jon_skeet/": "Coding Blog",
"http://manning.com/skeet2/": "C# in Depth, Second Edition"
}
}
}
其他网站将列族描述为一行中的一组相关列 [ 3 ], [ 4 ]。上一个示例中的数据以这种方式建模:
{
"codinghorror":
{
"USER": { "name": "Jeff", "blog": "http://codinghorror.com/" },
"BOOKMARK":
{
"http://codinghorror.com/": "My awesome blog",
"http://unicorns.com/": "Weaponized ponies"
}
},
"jonskeet":
{
"USER": { "name": "Jon Skeet", "email": "jskeet@site.com" },
"BOOKMARK":
{
"http://msmvps.com/blogs/jon_skeet/": "Coding Blog",
"http://manning.com/skeet2/": "C# in Depth, Second Edition"
}
}
}
第一个模型背后的一个可能的基本原理是,并非所有列族都具有像 USER
和 BOOKMARK
那样的关系。这意味着并非所有列族都包含相同的键。从这个角度来看,将列族放置在外层感觉更自然。
名称“列族”意味着一组列。这正是第二个模型中列族的呈现方式。
这两个模型都是数据的有效表示。我意识到这些表示只是为了向人类传达数据;应用程序不会以这种方式“思考”数据。
列族的“标准”定义是什么?它是行的集合,还是行中的一组相关列?
我必须写一篇关于这个主题的论文,所以我也对人们通常如何向其他人解释“列族”概念感兴趣。这两种模型似乎互相矛盾。我想使用“正确”或普遍接受的模型来描述列族存储。
<小时/>我已经选择了第二种模型来解释我论文中的数据模型。我仍然对您如何向其他人解释列族存储的数据模型感兴趣。
最佳答案
我认为 Cassandra 数据库遵循您的第一个模型。 ColumnFamily 是行的集合,它可以以稀疏方式包含任何列(因此,如果需要,每行可以具有不同的列名称集合)。一行中允许的列数几乎是无限的(Cassandra v0.7 中为 20 亿列)。
一个关键点是,根据定义,行键在列族中必须是唯一的 - 但可以在其他列族中重复使用。因此,您可以将同一键的不相关数据存储在不同的 ColumnFamilies 中。
在 Cassandra 中,这很重要,因为特定列族中的数据存储在磁盘上的相同文件中 - 因此将可能一起检索的数据项放在同一个 ColumnFamily 中会更有效。这在一定程度上是一个实际的速度问题,但也是一个将数据组织成清晰模式的问题。这涉及到您的第二个定义 - 人们可能会将有关特定键的所有数据视为“行”,但按列族进行分区。但是,在 Cassandra 中,它并不是真正的单行,因为对于同一行键,一个 ColumnFamily 中的数据可以独立于其他 ColumnFamily 中的数据进行更改。
关于nosql - 列族概念和数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3245267/
在C中,protocol family被提及为第一个参数。 例如: ipv4 的套接字(AF_INET,,) socket(AF_PACKET,,) 用于数据包嗅探 Python 支持三个地址族:AF
根据 vfork() 手册页,如果 vfork() 在调用 _exit 或 exec 之前修改除 pid_t 之外的任何数据,则行为未定义系统调用系列。 由此我了解到,如果vfork()创建的子进程调
我是一名优秀的程序员,十分优秀!