CouchDB 文档建模
CouchDB Document modelling
[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
文档中,而是计划创建 map reduce 视图以每次检索。
每次我做销售的时候,Quantity in hand
map reduce 函数应该被调用,检查数量是否大于零。对于这种方法,我会遇到任何性能问题,还是您建议在 Item document
中创建 Total sold, Quantity in hand
所以每次我们调用map reduce函数时,couchdb是如何缓存未修改的文档结果并处理新的和修改的文档,还是每次都处理所有文档?
是的,CouchdDB 会缓存您的 map/reduce 文档。因此,如果您多次查询同一个视图,Couch 将为您提供缓存版本。如果将其他数据集添加到数据库中,Couch 将更新视图。
要查看 Couch 缓存视图,您可以尝试在包含大量文档的数据库上创建新视图:
- 第一次调用视图,您会发现需要一些时间才能得到结果。
- 再次调用您的视图,它会立即准备就绪。
- 向您的数据库添加一些新文档
- 调用您的视图,即使不是立即,也会很快准备就绪。
- 向您的数据库添加大量新文档
- 再次调用您的视图,这将比您刚刚添加几个新文档时花费更多时间。但是建好之后马上就可以了。
[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
文档中,而是计划创建 map reduce 视图以每次检索。
每次我做销售的时候,Quantity in hand
map reduce 函数应该被调用,检查数量是否大于零。对于这种方法,我会遇到任何性能问题,还是您建议在 Item document
Total sold, Quantity in hand
所以每次我们调用map reduce函数时,couchdb是如何缓存未修改的文档结果并处理新的和修改的文档,还是每次都处理所有文档?
是的,CouchdDB 会缓存您的 map/reduce 文档。因此,如果您多次查询同一个视图,Couch 将为您提供缓存版本。如果将其他数据集添加到数据库中,Couch 将更新视图。
要查看 Couch 缓存视图,您可以尝试在包含大量文档的数据库上创建新视图:
- 第一次调用视图,您会发现需要一些时间才能得到结果。
- 再次调用您的视图,它会立即准备就绪。
- 向您的数据库添加一些新文档
- 调用您的视图,即使不是立即,也会很快准备就绪。
- 向您的数据库添加大量新文档
- 再次调用您的视图,这将比您刚刚添加几个新文档时花费更多时间。但是建好之后马上就可以了。