我正在做一个项目,我正在努力就是否使用列族或文档存储做出明确的决定。我的情况如下:
我正在进行的项目是一个 hass.io 应用程序,它将可视化特斯拉汽车的某些数据。我的项目将在树莓派(pi 3)上运行,因此数据库大小是一个问题。我的数据将如下所示:
{
"cars" : [
{
"car_id" : 3241123,
"model" : "Tesla S",
"data" : [
{
"timestamp": 23840923804982309,
"temperature": 24.5,
"battery_level" : 40,
"is_charging" : true,
"speed" : null
},
{
"timestamp": 23840923804982333,
"temperature": 26.0,
"battery_level" : 35,
"is_charging" : false,
"speed" : 30
}
]
},
{
"car_id" : 3241157,
"model" : "Renault Zoey",
"data" : [
{
"timestamp": 23840923804982309,
"temperature": 23.3,
"battery_level" : 90,
"is_charging" : true,
"speed" : null
},
{
"timestamp": 23840923804982350,
"temperature": 23.0,
"battery_level" : 92,
"is_charging" : true,
"speed" : null
}
]
}
]
}
- 我的项目必须使用 NoSQL 数据库
- 这个例子是 JSON 格式的,但它只是为了显示数据。它不必作为 JSON 文件本身存储在数据库中。
- 预计汽车数量会很低(2-4 辆),数据量会增长得相当大(每分钟有几个新条目)
我希望能够在图表中绘制数据,因此我的查询很可能必须返回每辆车的每个数据点的时间戳和其他一些值,例如速度或电池电量。我的数据库将有非常少的客户端,并且不需要实时数据可视化。因此读取速度不是很重要。
据我的研究表明,根据这些要求,列族和文档存储体系结构并没有太大区别。除了可扩展性,但我不相信我的数据库会增长到我必须开始考虑分片的规模,如果我这样做了,我可能首先必须考虑垂直扩展。我相信这一点是对的还是有实际区别?
附带说明:我问这个问题是将列族与文档存储进行比较,但也许这种比较在这个级别是徒劳的,我必须开始查看特定的列存储和文档存储。如果是这样,我们也很感激在这个方向上的任何建议。