【问题标题】:Cloudant partitions design recommandationsCloudant 分区设计建议
【发布时间】:2019-05-31 15:12:53
【问题描述】:

我正在将没有分区的 Cloudant 数据库迁移到 Cloudant 的新分区系统,以降低我的 ibm 云帐户的成本。上下文可以这样总结:

  • 我正在处理具有类别名称的电子邮件对象
  • 我每天可能会收到更多 dans 100 新条目(电子邮件)
  • UI 可以查询从日期 A 到日期 B 以及类别 C1、C2、... C100 中的任何可能类别组合的电子邮件。
  • UI 仅显示 15 封电子邮件/页

问题是关于这种数据模型的分区,并尽可能避免比基于分区的查询更昂贵的全局查询(跨分区)。

我最初以为我会每天进行一次分区,但最终我可能会遇到一种情况,即查询过滤特定类别 Cn 的电子邮件 4 个月,但特定类别每天只收到 1 封电子邮件,这意味着在 UI 上显示一页(共 15 封电子邮件)我应该进行 15 次查询,这是不可接受的。

在分区到来之前,我只是使用 Lucene 查询引擎进行全局查询,但由于成本原因,现在不再这样做了。

此外,我还考虑将所有电子邮件放在一个分区中,以便我能够在该分区中使用相同的旧查询,并且由于它是一个分区,我不会达到全局查询价格而是分区查询价格。这在理论上可行,但我猜可能有一些限制,因为有关分区的文档建议不要将“太多数据”放在单个分区中。

你对这种问题有什么建议吗?

谢谢。

【问题讨论】:

    标签: ibm-cloud couchdb cloudant


    【解决方案1】:

    鉴于您的设计,在我看来,似乎没有分区键可以让您完全避免全局查询。根据经验,选择一个允许您检索构成逻辑分组的所有数据的分区键。例如,想象一个订单系统,其中您有一组客户和相关订单——明显的分区键将是一个唯一的客户 ID:然后您就有与每个客户关联的所有数据的逻辑分组。

    在 Cloudant 博客上,有一篇关于分区的好文章系列:

    https://blog.cloudant.com/2019/03/05/Partition-Databases-Data-Design.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-31
      • 2011-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      相关资源
      最近更新 更多