CouchDB文档建模

CouchDB文档建模,couchdb,Couchdb,[TLDR]CouchDB是否缓存和重用未修改文档的map/reduce函数的结果 背景信息: 在我的销售点(POS)应用程序中,所有交易都记录在单独的文档中并创建 {“\u id”:“Purchaseorder\u transactions\u 1234124”,“添加的数量”:5,“减少的数量”:0,“被丢弃”:“false”,“purchaseid”:“PurchaseU 2352”} 每当修改库存时,相关文档都会创建为交易it is\u id字段。因此,不要在项目文档中存储总销售额、现

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

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

{“\u id”:“Purchaseorder\u transactions\u 1234124”,“添加的数量”:5,“减少的数量”:0,“被丢弃”:“false”,“purchaseid”:“PurchaseU 2352”}

每当修改库存时,相关文档都会创建为
交易
it is\u id字段。因此,不要在
项目
文档中存储
总销售额、现存量
,而是计划创建map reduce视图以每次检索

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


所以每次调用MapReduce函数时,couchdb是如何缓存未修改的文档结果并处理新文档和修改的文档,还是每次都处理所有文档

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

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

  • 第一次调用视图时,您将看到获得结果需要一些时间
  • 再次调用视图,它将立即准备就绪
  • 向数据库中添加一些新文档
  • 调用您的视图,它将很快准备好,如果不是立即
  • 向数据库中添加大量新文档
  • 再次调用视图,这将比您刚刚添加几个新文档时花费更多的时间。但在它建立后会立即准备好

  • 是,CouchDB缓存地图/减少文档。因此,如果多次查询同一个视图,coach将为您提供缓存版本。如果向数据库中添加了其他数据集,coach将更新视图

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

  • 第一次调用视图时,您将看到获得结果需要一些时间
  • 再次调用视图,它将立即准备就绪
  • 向数据库中添加一些新文档
  • 调用您的视图,它将很快准备好,如果不是立即
  • 向数据库中添加大量新文档
  • 再次调用视图,这将比您刚刚添加几个新文档时花费更多的时间。但在它建立后会立即准备好

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