唔,我知道有人已经做了 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 。
网友评论已有0条评论, 我也要评论