Hello!
On Thu, Apr 24, 2014 at 1:38 AM, Aaron Lewis wrote:
> 想找个LevelDB的实现,发现还真没有现成的。
>
> 我想的是直接用nginx去操作数据库,而不是再走一次socket,有这样的驱动吗
>
直接从 nginx 操作基于硬盘的数据库并不是 ngx_lua 模块推荐的玩法。因为
1. 文件相关的系统调用几乎总是会阻塞 nginx 的事件循环,尤其是在 Linux 上面。你需要自己引入 OS 线程池,而这会极大地增加实现的复杂度。
2. nginx 使用的是多 worker 进程的模型,所以你需要自己处理多个 worker 进程在同时访问同一个数据库时的一致性问题(比如你需要自己锁)。
即使你真的实现了这种模式,性能也很可能要低于走 socket 的方式,而且扩展性也很差。
Regards,
-agentzh