为Crate Database设置正确的分区

时间:2016-12-13 15:22:31

标签: database partition crate

我正在为Database CrateDB建模 我有一个平均值。 400个客户,每天产生不同数量的时间序列数据。 (介于5K和500K之间;平均~15K)

稍后我应该能够按customer_year_month和customer_year_calendar_week进行查询。 这意味着我只会查询间隔:

  • 和月

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

我会每个客户和年份 这有意义吗?
或者客户,年份和月份会更好吗?

1 个答案:

答案 0 :(得分:0)

所以分区表的问题非常复杂,应该考虑很多事情。其中包括:

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

基本上,每个分区还会通过将分片计数相乘来创建开销(分区可以被视为"子表"基于列值),如果选择不当,可能会对性能造成很大影响。 所以在你的情况下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个分片;)

文档:date_trunc()partitioned tables

理想情况下,您可以尝试一些不同的组合,找到最适合您的方法。我们的sys tables提供了对分片大小和位置的深入分析,因此您可以看到是否有一个特别胖的分片会使节点过载;)

干杯,克劳斯