我们说我们有广告和他们的统计数据。广告显示为标题,文字,状态和其他字段。例如:
{
"id":1,
"title":"Buy a car",
"text":"Buy a car today",
"status":"ON"
}
统计数据显示为时间序列数据。例如:
[
{
"adId":1,
"date":"2018-01-01",
"clicks":200
},
{
"adId":1,
"date":"2018-01-02",
"clicks":250
}
]
数据可能会在统计信息和广告中发生变化,因此我们无法使用每个统计信息保存广告数据。
我们想要什么:
我们目前的选择是Elasticsearch和这样的映射:
{
"id":1,
"title":"Buy a car",
"text":"Buy a car today",
"status":"ON",
"stats":
[
{
"adId":1,
"date":"2018-01-01",
"clicks":200
},
{
"adId":1,
"date":"2018-01-02",
"clicks":250
}
]
}
它几乎可以工作,但是查询非常复杂,包含疯狂的聚合和棘手的分页。而且还没有开始排序。 我也在考虑Cassandra,但在我看来,没有简单的解决方案,你可以使用简单的时间序列解决方案或普通数据的简单解决方案,但不是两者兼而有之。 选择什么数据库以及如何在其中建模数据?