gpt4 book ai didi

ravendb - 为什么 RavenDB 在索引过程中读取所有文档,而不仅仅是索引使用的集合?

转载 作者:行者123 更新时间:2023-12-04 20:11:48 25 4
gpt4 key购买 nike

我有一个相当大的数据库,里面有大约 260 万个文档,其中我有两个集合,每个集合 120 万个,其余是小集合(<1000 个文档)。当我为小集合创建新索引时,需要花费大量时间来完成索引(因此临时索引是无用的)。似乎 RavenDB 索引过程读取 DB 中的每个文档并检查是否应该将其添加到索引中。我认为只索引索引使用的集合会更好。

此外,当使用 Smuggler 导出数据并且我只想导出一个小集合时,它会读取所有文档并且导出可能需要相当长的时间。同时使用 RavenDB Linq API 和索引的自定义应用程序可以在几秒钟内导出数据。

为什么 RavenDB 会这样?也许有一些配置设置可能会改变这种行为?

最佳答案

RavenDB 实际上没有任何真正的“集合”概念。所有的文件都差不多。它只是查看 Raven-Entity-Name每个文档中的元数据,以确定如何将事物组合在一起,以便按类型查询并在管理工作室中显示“集合”页面。

我不确定这样做的具体理由。我认为这与文档存储使用的底层 ESENT 表有关。或许 Ayende 可以更好地回答。您的特定用例很好地说明了为什么它可能会以不同的方式完成。

您可以尝试的一件事是使用多个数据库。您可以将大量文档放在一个数据库中,而将其他所有文档放在另一个数据库中。当然,你可能会遇到索引相关文档、multi-map/reduce 或其他需要将不同类型的文档放在同一个数据库上的场景的问题。

关于ravendb - 为什么 RavenDB 在索引过程中读取所有文档,而不仅仅是索引使用的集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16435881/

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