首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BSON到Messagepack

BSON到Messagepack
EN

Stack Overflow用户
提问于 2012-10-26 11:35:11
回答 1查看 935关注 0票数 0

我面临的问题是BSON附带了ObjectId和Timestamp,这在Messagepack中是不支持的,而且不可能为Messagepack定义一个自定义的序列化程序(至少据我所知)。

我写了一段python代码来比较pymongo的BSON和msgpack。只需很少的优化,我就可以实现300%的性能提升。那么,有没有办法把BSON转换成Messagepack呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-28 21:59:50

下面是我是如何解决这个问题的。

不幸的是,由于mongodb非REST API没有为文档检索提供严格的或JS模式(与其REST API相反,在REST API中您可以指定要用来检索文档的格式),因此我们别无选择,只能手动进行转换。

代码语言:javascript
复制
import json    
from bson import json_util
import msgpack

con = Connection()
db = con.test
col = db.collection
d = col.find().limit(1)[0]

s = json.dumps(d, default=json_util.default) # s is in JSON compatibale format (ObjcetId => '$0id'
packer= msgpack.Packer()
packer.pack(s) # messagepack can successfully convert since the format is JSON compatible.

令人敬畏的观察是,即使json.dumps多了一步,Messagepack序列化程序也比BSON编码快,虽然不是3倍。对于10000次重复,差异是十分之三秒。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13080374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档