CouchDB文档建模

时间:2019-03-28 20:07:17

标签: couchdb

[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函数,以检查数量是否大于零。对于这种方法,我会遇到任何性能问题,还是建议您在项目文档中创建Total sold, Quantity in hand

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

1 个答案:

答案 0 :(得分:0)

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

要查看Couch缓存视图,可以尝试在包含很多文档的数据库上创建新视图:

  1. 第一次调用该视图,您将看到花费一些时间才能得到结果。
  2. 再次调用视图,它将立即准备就绪。
  3. 在数据库中添加一些新文档
  4. 呼叫您的视图,如果不是立即,它将很快准备就绪。
  5. 将许多新文档添加到数据库中
  6. 再次调用视图,将比添加一些新文档花费更多的时间。但是在建立之后将立即准备就绪。