我正在开发一个包含两类数据的应用程序:
1)用户配置文件-用户名、电子邮件、用户ID、访问令牌、会话ID、虚拟形象等。对于每个用户,此数据大约为20KB,对于活动用户,数据将被读取100次/天,并写入5次/天。我正在考虑使用objectrocket(mongodb)或cloudant(couchdb with clustering)---我喜欢cloudant的极端容错(主/主复制、仅崩溃设计和cloudant的多地域冗余),但我担心这许多文档修订会占用磁盘空间。lly的速度和整体性能都不如mongodb。我正在学习MongoDB。对此数据类型有何建议?
2)用户对用户交易-用户A向用户B发送8点-检查用户A的点余额,如果大于8,则借记用户A和贷记用户B。每笔交易将是大约2kb,可能永远不会被更新或删除(会计师不使用橡皮擦)。为此,我考虑在map/reduce视图中使用couchdb(cloudant),视图将跟踪用户平衡。当然,这些数据对于应用程序的完整性非常重要,我认为couch可以让我在晚上睡得更好(尤其是主/主复制、仅崩溃设计和cloudant的多地域冗余)。对此数据类型有其他建议吗?
总的来说,为了简单起见,我想使用一种db类型,但似乎有时候要建造一座房子,你需要一把锤子和一把螺丝刀。对数据类型1使用mongo(objectrocket)和对数据类型2使用couch(cloudant)有意义吗?
最佳答案
1)在cloudant上,您不需要担心以前编辑的磁盘空间-我们会自动触发压缩,以清除背景中旧的、不冲突的修订。
2)可以在couchdb/cloudant中对其进行建模,方法是为每个贷方或借方创建一个新文档,并使用map reduce视图生成帐户平衡。CouchDB Definitive Guide中描述了一个完整的例子。您的应用程序逻辑大致如下:
借方用户A
断言用户A有足够的贷方(例如,借方之后仍有正余额)
信用用户B
如果2或3失败,则记入用户A并适当通知。
关于mongodb - 应用程序架构 - CouchDB和MongoDB,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17737984/