对于具有数十亿数据的单行选择,什么是最好的数据库



我目前正在使用ClickHouse每周存储数十亿的数据。我们使用聚合表来获取数据,到目前为止还不错。现在需要从这个数据库中提取一行。

ClickHouse并不适合这种情况,尽管在应用了ClickHouse推荐的一些优化后,单行选择仍然很慢(几秒钟(。

为了进一步说明这一点,该表按列a、b、c和d进行索引,并按月进行分区(该表还有一些列(。新服务必须查询该表,而只知道A、b和z(UUID列(。然而,对于100亿个数据,平均响应时间在3到10秒之间。

我有机会添加一个额外的数据存储层,这样我就可以将数据存储到额外的数据库中以满足这一需求。

现在的实际问题是:对于这样一种我们只需要读取数十亿数据的情况,什么是最好的数据库?

p.S:

  1. 由于存储和网络成本的原因,我们无法使用Redis
  2. 我们无法向select查询添加更多列来优化查询

卡桑德拉?

您可以使用额外的表和物化视图来模拟反向索引。

这个附加表应该按z排序,并包含主表中的pk列(a、b、c、d(。

然后像一样查询主表

select ... from main_table where (a,b,c,d) in 
( select a,b,c,d from additional_table where z= ... )
and z = ...

additional_table可以由main_table中的物化视图自动填充。

相关内容

  • 没有找到相关文章