我需要为测试系统实现一个数据库。它旨在存储测试数据以供将来进行统计分析。 以Cassandra为基础。
我设计了一个架构,但由于这是我第一次尝试NoSQL设计,我想得到一些反馈。
我将首先描述我想保存的数据,然后描述两个基本查询,最后介绍我建议的设计。
我打算使用Cassandra 1.1,所以我尝试在我的设计中使用复合色谱柱,但是,可以随意提出超级列或者看似正确的内容。
我们测试的基本单位是外星人。每个外星人都有一个独特的ID。每个外星人都有许多身体部位。此外,每个外星人都是外星人家庭的一部分。这些家庭有着独特的名字。
当我们进行测试时,我们会在外星人群体的几个身体部位上进行测试。例如,我们采取一些家庭,并对他们所有的眼睛和嘴巴进行测试。
有一些测试。我们使用自己的测试唯一ID记录每个测试。
当我们进行测试时,我们每隔几分钟对所有相关的外星人身体部位进行采样并收集一些统计数据。
GeneralAliensData : { // Column Family - general data on aliens.
[FamilyID][AlienID][Bodypart] : { //Composite Columns as Row keys
Race: 'Blurgons' // column
Shoesize: 5 // column
Favorite probe: 'fun, toy' // column
}
}
TestsData : { // Column Family - we sample each test every couple of minutes...
[TestID][AlienID][Bodypart][MinutesFromTestStart]: { //Composite Columns as Rowkeys
Temperture: 30 // column
Size: 5 // column
}
}
BodypartTestParticipation : { // Column Family - all the tests a unique bodypart passed...
[FamilyID][AlienID][Bodypart]: { //Composite Columns as Row keys
TestID: 105 // column
TestID: 564 // column
...
}
}
就是这样。由于我是数据库的真正初学者,特别是Cassandra,我很感激任何意见。
感谢您的时间。
答案 0 :(得分:0)
您的数据集最终会有多大?我们使用PlayOrm来存储noSQL中的关系数据,这有时非常有用,表可以进入数百万行。如果您要进入数十亿/数万亿行,那么我们使用PlayOrm对相同的数据进行分区,以便进行扩展。
那么,你需要扩展能力吗?您可能想要检查宽行模式(PlayOrm大量使用它)。宽行可以帮助您为快速查找索引内容。
我真的没有得到你的这部分内容
TestsData : { // Column Family - we sample each test every couple of minutes...
[TestID][AlienID][Bodypart][MinutesFromTestStart]: { //Composite Columns as Rowkeys
Temperture: 30 // column
Size: 5 // column
}
}
这不应该更宽一点吗? testid是行键,你有其他数据的许多复合名称?宽行不应超过1000万列,因此请确保没有测试数据行。所以广泛的行可能是
testid - > alienId:fk23 = null,alienId:fk25 = null等等temperture = 30,size = 5
后, 迪安