为板条箱数据库设置正确的分区



我正在为数据库cratedb建模。
我有一个平均。每天有400名客户和每天产生不同数量的时间序列数据。(在5k至500k之间; AVG。〜15K)

以后我应该能够查询每个customer_year_month和customer_year_calendar_week。这意味着我只会查询间隔:

  • 和月份

现在我在问自己如何划分这张桌子?

我将每个客户和年份
这有意义吗?
或者客户,每年和月份>?

,因此分区表的问题非常复杂,应该考虑很多事情。等:

  • 应该运行哪些查询?
  • 插入数据的方式
  • 可用的硬件资源
  • 群集大小

本质上,每个分区还通过乘以碎片计数(可以根据列值视为"子桌")来创建开销,如果选择不正确,则可以很大程度上阻碍性能。因此,在您的情况下,每天15K插入并不是太多,但是插入物的分布可能会导致问题,每天使用500k插入的客户分区会比5K人早于绩效问题。结果,我将仅使用每周分区。

create table "customer-logging" (
    customer_id long, 
    log string, 
    ts timestamp, 
    week as date_trunc('week', ts)
) partitioned by (week) into 8 shards

如果您有适当量的CPU内核,请仅使用8片;)

docs:date_trunc(),分区表

理想情况下,您尝试一些不同的组合,并找到最适合您的组合。我们的系统桌提供了对碎片尺寸和位置的见解,因此您可以查看是否有一个特别胖的碎片超载节点;)

;)

欢呼,claus

相关内容

  • 没有找到相关文章

最新更新