gpt4 book ai didi

performance - CouchDB 如何处理定期更新的数据集?

转载 作者:行者123 更新时间:2023-12-02 00:40:10 25 4
gpt4 key购买 nike

我计划在项目中使用 CouchDB。但是由于查询机制涉及编写 View (这很像常规 RDMBMS 上的索引),我想知道,如果文档数据库不断更新(写入繁重的数据库),与常规 RDBMS 相比,CouchDB 的性能会好吗?或者我们是否必须偶尔压缩/重新索引系统以使其执行得更快?

最佳答案

您可能会这样考虑 CouchDB View 模型的优点/缺点。 (CouchDB 黑客可能不同意,但 IMO 它对用户来说已经足够准确了。)

  1. View 函数在首次创建时总是执行完整的“表扫描”(就像 RDBMS BTW)
  2. 只要没有副作用,map 和 reduce 函数可以是任意复杂的
  3. 每个文档和 map/reduce 结果都被缓存并且不再计算
  4. 如果您添加或更改文档,它(并且只有它)将被重新计算(并缓存)到该 View

鉴于这些,您可以得出一些关于 CouchDB 性能的结论:

  • 整个数据集从来没有重新索引阶段,每次文档更新只是增量
  • 更改 View 函数会强制重建整个索引
  • 由于 CouchDB 和 RDBMS 都必须为新数据更新索引,因此有理由认为对于大量更新/插入使用,性能会相似。

显然 YMMV 和标准的逃避,“你必须测试你自己的负载”适用。但是,我将添加更多注意事项。

  • 我说 RDBMS 在探索式数据查询方面表现出色。当您甚至不知道要从您的数据中提出什么问题时,您真的无法击败结构化查询语言
  • 但是,一旦您定义了想要了解的内容,CouchDB(也许还有 Hadoop)会提供最丰富的查询系统,因为您只是在编写代码。
  • 如果您的数据集很大,NoSQL 数据库会更容易扩展。例如,CouchDB-Lounge允许一组沙发进行并行处理。 Hadoop 做同样的事情,所以它会归结为次要考虑因素:熟悉度、可维护性、CouchDB 是一个 Web 服务器,但需要更多的 DIY; Hadoop 以复杂性、外来性等为代价将更多集群管理内部化。

我希望这有助于阐明您的决定!

关于performance - CouchDB 如何处理定期更新的数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2848428/

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