我需要为测试系统实现一个数据库。它旨在存储测试数据以供将来进行统计分析。它必须基于 Cassandra。
我设计了一个模式,但由于这是我第一次尝试 NoSQL 设计,我想得到一些反馈。
我将首先描述我希望保存的数据,然后描述两个基本查询,最后介绍我建议的设计。
我打算使用 Cassandra 1.1,所以我尝试在我的设计中使用 Composite Columns,但是,请随意建议超级列或任何看起来正确的东西。
数据:
我们正在测试的基本单位是外星人。每个外星人都有一个唯一的 ID。每个外星人都有许多身体部位。此外,每个外星人都是外星人家庭的一部分。这些家庭有唯一的名称。
当我们运行测试时,我们在外星人群体的几个身体部位上运行它。例如,我们对几个家庭进行测试,测试他们所有的眼睛和嘴巴。
有几种测试。我们使用它自己的测试唯一 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 的真正初学者,因此我将不胜感激。
感谢您的时间。