MongoDB很容易上手,但要保证可用性并不容易(购买EC2来构建主从机?或更多副本集?)。并且有许多高可用性和高性能的关键价值公共服务(Dynamo,AzureTable)。因此,如果我可以将MongoDB存储引擎替换为,例如Dynamo,那么我就可以获得友好的MongoDB应用程序接口和高可用存储空间。这有可能吗?
发布于 2015-08-10 17:11:20
实际上,将MongoDB用作内存中的键值存储非常容易:
方法1:防止磁盘使用
syncPeriodSecs to 0_id字段中的键和value字段中的值。这种方法的问题在于,您受到计算机RAM大小的限制,并且您的数据不能持久存储。
到目前为止,更优雅的方法是使用
方法2:使用覆盖查询
覆盖查询是仅使用索引来回答的查询,只要有足够的索引可用,该索引就会一直保存在内存中。如果索引超过RAM,则将最近最少使用的部件“交换”到磁盘。此外,您的键/值对是持久化的。所有这一切都是透明的。
db.keyValueCollection.createIndex({_id:1,value:1})
_id和value,它不需要费心从磁盘读取任何其他内容(灵活的模式!)使用投影将查询中返回的字段限制为这两个字段:value:1})
旁注
使用MongoDB确保可用性近乎万无一失。选择一个副本集名称,将其添加到所有confit文件中,启动其中一个成员,启动副本集并添加成员。问题解决了。
编辑:删除了一个人工key字段,并确保通过限制返回的字段来覆盖方法2中的查询。
https://stackoverflow.com/questions/31911569
复制相似问题