« 用栈方式管理 Lua 中的 C 对象 | 返回首页 | MongoDB lua driver »

写了一个 lua bson 库

bson 的官方网站上链接了一个纯 Lua 实现的 bson 库,但是实现的不完整。

我用 C 实现了一个 Lua bson 库。

bson 是为 MongoDB 设计的结构化数据序列化协议,所以有很多设定是为 mongodb 服务的,如果单用于序列化结构化数据,那么那些不一定要实现。但我写这个的最终目的是做一个 lua 的 mongo driver ,所以就实现的比较完整了。

bson 结构中,有一些固定长度的字段,修改它们不必重新编码。这在 mongDB 的通讯协议中非常有用,所以我也加了对应的接口。还有许多特性可能会有用,比如把两个 bson document 连接成一个之类的,等我在写 mongoDB driver 的时候,视情况实现。


2014 : 3 月 12 日补充

因为 mongo 对有些 bson 文档要求 key 的次序, 而 lua 的 table 是无序的。所以增加了 bson.encode_order 按次序打包 document 。

Comments

版权信息处的第一行中 codingow.com 是否少了个 'n'?

@hoddddky
SQL不也是纯字符串么?
我认为MongoDB和MySQL只是数据的组织方式不同而已,事实上也是需要Cache的,所以DBServer到了一定规模肯定还是需要的把?

我x
看你的代码就tm的爽

用惯了MYSQL,再用MongoDB感觉好蛋疼

个人揣测:虽然MongoDB号称十分高效,可是我实在很难想象以MongoDB那样纯字符串处理数据的方式能够高效到哪儿,另外,字符串是不是有点太挥霍内存的嫌疑?

MongoDB 有自己的cache系统,但是觉得这点对游戏服务器来讲,其实也只能说有利有弊,例如角色数据有在线和离线之分,当需要load离线数据时,MongoDB实际还是从物理DB硬盘上load,效率怎样反正很少程序员真正用数据去验证过,我们现在做的一个项目之前几个版本都是用MySql,然后有一个DBServer去处理数据cache,read,write,后来改成MongoDB,就把DBServer给废弃了,说是因为嫌MySql要自己维护缓存麻烦,其实我倒是觉得自己维护的DBServer缓存机制终归比MongoDB那种最求大统一的cache机制的针对性要强,出现效率问题至少能有针对性的目标点去优化,更何况这个东西现在能用得很精的人太少了

Post a comment

非这个主题相关的留言请到:留言本