MongoDB lua driver
唔,我知道有人已经做了 MongoDB 的 lua driver ,比如这个 。但我不想仅仅是对 C++ API 的封装,而想从协议层做起,这样日后可以方便改为异步模型,也好整合到 skynet 中去。
这里还有一份纯 Lua 的实现,是从协议层做的封装。但有几个问题,一是依赖 lua-socket 库,二是纯 lua 实现不如 C 库性能好,三是特性没有支持完整。
我曾经想在 C Driver 的基础上做封装。做的过程中发现 c driver 代码质量不高,且特性支持不完整,最终我考虑自己从协议层开始重新做一份。
mongo 的文档不算完整,我感觉协议定义也不是很严谨。所以在实现过程中遇到许多麻烦。原本认为一天能写完的,结果做了三天。今天终于可以发布一个初步的版本了。
https://github.com/cloudwu/lua-mongo
制作这个 driver 的思路是,把 bson 的编解码部分完全独立开,放到另一个项目 lua-bson 中。
这样,以后为 skynet 做特别版可以更灵活一些。因为 skynet 需要一个异步模型,bson 包的打包过程和 mongo 的 driver 可能在不同的 lua state 完成。
性能相关的部分我想放到 C 代码中完成,但 C 代码只提供最基本的 api ,功能性需求用 lua 实现即可。
目前只是一个初步的东西。因为我几乎没有用过 MongoDB ,对它的了解仅限于对协议的研究。希望有熟悉 mongo 的同学可以协助我来完善这个 driver 。
Comments
终于把代码嵌到项目里面了, 不过插入一个简单的数据都特别慢, 只有25条/秒, 而原来mysql可以一秒执行几百条, 我再看看是哪里的问题
Posted by: 游优 | (9) September 29, 2017 04:44 PM
你的例子 搞了2天 都跑步起来啊
真坑啊
Posted by: 2341 | (8) June 24, 2015 11:57 AM
hi,基于你的代码,我们适配了ngx_lua模块
Posted by: boyxuper | (7) March 24, 2015 10:58 AM
@过海漂
不要用连 C99 都不支持的落后编译器. btw, inline 在上个世纪就写入 C 语言标准里了.
Posted by: Cloud | (6) December 25, 2014 07:40 PM
今天对这个感兴趣,下载下来编译
结果一大堆错误,我自认还算有经验
既然提交到github上,让人们公开使用,那还是要用心点,保证一定的质量
,简单说,就是 inline是c++里的工程里的bsoon.c默认是按c方式编译,感觉不专业,不符合云风大侠的一贯作风
Posted by: 过海漂 | (5) December 23, 2014 05:35 PM
mongodb-c-driver 代码质量还好了,至少有了不是,虽然文档确实少,且用的也很少。
你做 skynet 想干嘛,难道不是0mq 的 req-rep 模式可以替代的?
Posted by: lyxmoo | (4) June 25, 2013 10:52 AM
代码这个的东西真的很折磨人!
Posted by: 深圳翻译公司 | (3) June 21, 2013 02:36 PM
这些代码真的很折磨人!
Posted by: 深圳翻译公司 | (2) June 21, 2013 02:34 PM
您到底要做什么啊。
Posted by: 您到底要做什么? | (1) June 19, 2013 02:32 PM