【问题标题】:CouchDB Document modellingCouchDB 文档建模
【发布时间】:2019-03-28 20:07:16
【问题描述】:

[TLDR] CouchDB 是否缓存并重用未修改文档的 map/reduce 函数的结果?

背景信息: 在我的销售点 (POS) 应用程序中,所有交易都被记录并创建了单独的文档。

{ "_id": "sale_transactions_1234124", "Quanity Added": 0, "Quanity reduced": 10, "Is Discarded": "false", "saleid": "sales_523" }

{ "_id": "Purchaseorder_transactions_1234124", "Quanity Added": 5, "Quanity reduced": 0, "Is Discarded": "false" , "purchaseid": "purchase_2352"}

每当修改库存时,相关文档都会创建为transactions,它是_id 字段。因此,不要将Total sold, Quantity in hand 存储在Item 文档中,而是计划创建地图减少视图以每次检索。

每次我做销售的时候,都要调用Quantity in hand map reduce 函数,检查数量是否大于零。对于这种方法,我是否会遇到任何性能问题,或者您是否建议在 Item 文档中创建 Total sold, Quantity in hand

那么我们每次调用map reduce函数时,couchdb是如何缓存未修改的文档结果并处理新的和修改的文档,还是每次都处理所有的文档?

【问题讨论】:

  • 你的问题是不是很简单:CouchDB 是否缓存并重用未修改文档的 map/reduce 函数的结果?
  • 是的。如果它总是缓存而不是存储值,那么依赖 map-reduce 函数是一种好习惯吗?
  • 你可以问这个问题,没有所有不必要的背景信息:)
  • 你是对的。我应该编辑这个问题还是提出新问题?
  • 我只想编辑这个。

标签: couchdb


【解决方案1】:

是的,CouchdDB 缓存您的 map/reduce 文档。因此,如果您多次查询同一个视图,Couch 将为您提供缓存版本。如果将其他数据集添加到数据库中,Couch 将更新视图。

要查看 Couch 缓存视图,您可以尝试在包含大量文档的数据库上创建一个新视图:

  1. 第一次调用视图,你会发现需要一些时间才能得到你的结果。
  2. 再次调用您的视图,它会立即准备就绪。
  3. 向您的数据库添加一些新文档
  4. 调用您的视图,即使不是立即,它也会很快准备就绪。
  5. 向您的数据库中添加大量新文档
  6. 再次调用您的视图,这将比您刚刚添加一些新文档时花费更多时间。但会在构建后立即准备就绪。

【讨论】:

    猜你喜欢
    • 2010-12-04
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多