【问题标题】:Exceeding NoSQL Item Size limit while preserving read/write performance在保持读/写性能的同时超过 NoSQL 项目大小限制
【发布时间】:2021-01-14 21:56:34
【问题描述】:

我需要一种方法来超越 NoSQL 文档项大小限制,同时保持读/写性能。

所有 NoSQL 实施都有文档项大小限制(例如,AWS DynamoDB 为 400KB,MongoDB 为 16MB)。此外,文档项大小越大,文档的检索就越慢。读取、写入、更新和删除性能在我的实现中很重要。

我已经在使用 NoSQL 数据库,并且我使用的文档具有一个具有四个级别的树结构(该文档描述了不同大小和复杂性的矢量图)。树的每个节点都是一个组件,它具有一个 ID 和一个引用以下组件的主体。可以对整个树或树的部分执行读取和更新。

我考虑过切换到图形数据库,但它们已针对查询图形中的关系进行了优化。我需要一种简单且高性能的方式来存储扩展树文档而不是处理图表。

我认为我需要在 NoSQL 中实现 Closure Table 结构,以将树节点拆分为单独的组件,从而打破文档大小的障碍。在客户端,具有延迟加载的 ORM(对象关系映射器)将根据需要检索文档树节点。

我的问题是:

  • 以前是否已实施?
  • 还有其他方法可以获得上述功能吗?

如果您需要这样的功能,请点赞,以便更多的出口可以回答这个问题。

【问题讨论】:

    标签: mongodb nosql amazon-dynamodb transitive-closure-table


    【解决方案1】:

    DynamoDB 不会因大小而降低速度,但联网需要额外的时间,仅此而已。此外,如果您有这么大的文件并试图将其推送到 DynamoDB,这就是设计问题的开始。只需将大文件存储在 S3 中,并将元数据存储在 DynamoDB 中。

    您使用 DynamoDB 按 KB 为写入和读取单位付费,为什么在 S3 如此便宜且大小限制为 5TB 而不是 400KB 的情况下将钱浪费在大数据上。此外,如果您的应用生成了那些大型 JSON 结构,您可以通过使用 S3 存储类自动化来节省 $ 加班费,这会将未使用的 JSON 移动到“更冷”的存储类。

    【讨论】:

    • 在 S3 上存储 JSON 无助于读取、写入、更新和删除 JSON 对象中结构的性能。正如我在问题中所说,我有一个带有树结构的 JSON,树中的节点可以单独或批量更新。闭包表有助于这部分。我的问题是:NoSQL 中是否有闭包表实现?还是别的什么?
    • 我认为您应该查看此视频:youtube.com/watch?v=HaEPXoXVf2k 听起来您在数据访问设计级别上做了一些根本错误的事情,这在没有完整上下文的情况下有点难以理解。只需查看该视频,它应该会为您提供新的想法,并让您重新审视您的数据结构。
    猜你喜欢
    • 1970-01-01
    • 2015-03-20
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 2018-02-03
    相关资源
    最近更新 更多