有效搜索时间序列数据的数据库与简单数据相结合?

时间:2018-01-30 20:38:01

标签: elasticsearch cassandra time-series

我们说我们有广告和他们的统计数据。广告显示为标题,文字,状态和其他字段。例如:

{
  "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
  }
]

数据可能会在统计信息和广告中发生变化,因此我们无法使用每个统计信息保存广告数据。

我们想要什么:

  • 进行以下查询:选择所有已启用的广告,然后选择' car'在他们的文本中,1月份有超过1000次点击。查询是动态的,并从UI发布。
  • 对所有字段进行排序(包括按点击排序)
  • 分页

我们目前的选择是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,但在我看来,没有简单的解决方案,你可以使用简单的时间序列解决方案或普通数据的简单解决方案,但不是两者兼而有之。 选择什么数据库以及如何在其中建模数据?

0 个答案:

没有答案