使用MongoDB进行缓存? JSON或长字符串作为主键

时间:2015-03-27 11:44:26

标签: json string mongodb caching primary-key

我可以使用MongoDB构建查找JSON => JSON?

我考虑为WebAPI方法执行的某些计算构建(永久)缓存。请求和响应是对象结构(通过转换为JSON或从JSON转换而来)。

由于MongoDB是一个documentDB,因此价值部分似乎很合适。我关心关键部分。

请求可能具有可能500字节的JSON表示,值可能是1000字节。

可能有数百万个缓存条目。

在C#中思考我会寻找像基于磁盘的词典。由于分发(集群)和调试选项(更容易分析内容),我倾向于像MongoDB这样更复杂的解决方案。

我确信有更快或更专业的解决方案只适用于带有json密钥的基于磁盘的字典,建议欢迎。

但我对MongoDB的适用性感兴趣(例如show stoppers)。

2 个答案:

答案 0 :(得分:1)

MongoDB可以做到这一点。您可以在包含子文档的字段上创建索引。当您搜索的对象与该子文档完全匹配时,查询将返回文档。

但是,请记住,MongoDB存储的不是JSON而是BSON("二进制JSON")。尽管这些在语义上非常相似,以至于许多驱动程序和默认shell透明地将它转换为JSON,但是在可用的数据类型方面存在一些细微差别。

例如,虽然JSON具有通用"数字"在前面和小数点后具有无限数量的基数为10的类型,BSON具有32位和64位整数类型以及64位浮点类型。较大的值可以存储为二进制字符串,这是一种在JSON中没有对应字符的类型。

当你正在寻找一个真实的" JSON文档数据库CouchDB可能是一个选项。

答案 1 :(得分:0)

你看过Couchbase了吗?它本地存储JSON文档和outperforms MongoDB。它还有C#支持:http://docs.couchbase.com/couchbase-sdk-net-1.2/

您可以为传入的JSON生成摘要签名,以便在Couchbase中创建密钥,然后获取相关的JSON文档。