所以我正在阅读很多关于如何以有效的方式实际存储和获取数据的内容。基本上我的应用程序是关于项目的时间管理/捕获。对于我应该使用哪种策略的任何意见,甚至对其他策略的建议,我感到非常高兴。主要关心的是关于不同浏览器上本地存储的有限资源。使用PouchDB/CouchDB进行高效DB设计
这是我必须存储主数据:
db_projects:这是项目本身存储的数据库。
db_timestamps:当项目运行时,请为每个项目添加时间戳。
我想出了以下策略:
1:存储在时间戳
当一个项目开工的项目的状态,有addad时间戳像db_timestamps所以:
db_timestamps.put({
_id: String(Date.now()),
title: projectID,
status: status //could be: 1=active/2=inactive/3=paused
})...
这跟着策略到only add data到db并且不修改任何对象里斯。我在这里看到的问题是,如果我想要例如获取所有活动项目,则需要查询可包含数千个条目的整个db_timestamp。由于我无法使用ID来搜索所有活动的项目,这可能会导致数据库查询相当繁重。
2:每次一个项目改变它的状态存储项目的地位db_projects
,有更新项目本身。因此,“获得所有活动项目” - 查询将非常资源友好,因为项目比时间戳少得多。但是这也意味着每次状态变化发生时,项目条目都会被修改,因此会产生很多开销。我也不确定compaction feature是否会做得很好,因为并非所有的修订版本数据都被删除(文档是,但是没有修订版本)。这意味着对于一个状态变化,我们至少有_rev信息,它仍然是一个34字符的字符串,用于只更改状态(1个字符)。或者我可以在冲突解决后删除叶修订版吗?
3:存储在单独的数据库状态像db_status
这导致了相同的问题#2,因为状态变化导致在这个数据库的修改。或者,如果将状态添加到“仅添加数据”模式(如#1中),它将快速填充条目。