gpt4 book ai didi

c# - 我应该如何在 DocumentDb 中存储大量行

转载 作者:行者123 更新时间:2023-11-30 17:46:03 24 4
gpt4 key购买 nike

我的系统中有一个实体,它将在短时间内添加大量针对它的评论。

如果我读取文档然后修改其中的某些内容,整个对象就会被保留回存储区,这样说对吗?

如果这是正确的,那么加载并存储一个包含 5000 条评论的对象只是为了添加评论似乎有点太多了?

我是否应该将每条评论存储为文档,然后扫描文档集合以查找特定键?我还需要能够快速找到评论并对其进行修改。

最佳答案

一份庞大的文档

如果您想将所有评论存储在一个文档中,您将遇到几个问题:

  • 并发写入 - 您将必须执行大量读取和重试操作(非当前 Etag)
  • 加载大文档以添加评论
  • 加载大文档以编辑评论

优点:

  • 您可以通过一次操作删除主对象及其所有文档

多个集合

我认为最好的选择是将评论和主要对象分成两个集合,并通过 id 将每个评论链接到主要对象。通过这种方式,您可以添加和编辑单个评论以及通过查询检索所有文档。通过这种方式,您可以对评论集合运行更复杂的查询 - 例如获取用户的所有评论等。

缺点:

  • 删除带有所有评论的主对象将是相当昂贵的(你必须一条一条地删除评论)

尽管您必须意识到 OrderBy尚不支持子句,因此您在检索例如最后 10 条评论等时可能会遇到问题。

可能的替代方案

不确定您必须支持哪些其他操作/查询。但如果它只是 CRUD,检索主对象的注释列表并可能获取最后 x 条注释,您可以考虑使用 Azure 表,其中:

  • 行键 – 基于时间的标识符(Unix 纪元)+ GUID 以避免冲突
  • 分区键 - 主对象 ID

这样您就可以非常快速地检索和更新评论实体,并按时间查询它

关于c# - 我应该如何在 DocumentDb 中存储大量行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26803461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com