我的应用程序允许多个用户上传他们自己的Lua脚本,我希望添加数据库功能,没有任何高性能,只是键/值存储或NoSQL类型的东西。
该应用程序是一个分叉服务器,因此每个数据库的多个副本都非常浪费。
每次加载应用程序时,都会从Lua脚本中重新加载数据库,然后自行销毁(无需在加载后保持加载数据)。
我对MongoDB和Redis非常熟悉,那些支持的操作对于我需要的东西来说太过分了。实际上,除了我需要共享数据之外,STL映射就足够了,而不是每个我的进程的分叉实例的数据的单独副本。 boost共享内存STL类我无法可靠地工作,这个服务器需要非常非常可靠。 (如果没有更容易的话,将Redis编译成共享模块(.so)是我会考虑做的事情)
有了这样的背景,我正在寻找一个具有以下特性的内存专用数据库(按优先顺序排列,后面的列表不太重要,但仍然需要。
C ++源代码
密钥值存储,NoSQL,支持FindGreaterThanOrEqual(upper_bound)和FindLessThanOrEqual(lower_bound)
作为主要流程的一部分链接或编译,而不是单独的流程。我不希望我们的DevOP必须处理单独的服务器,还有一件事要出错。
跨多个进程的共享访问,不使用IPC,只使用共享内存(速度)
非常容易使用这样的API(非常粗略的想法):
写(const char * database_name,const char * key,const char * value)
写(const char * database_name,const int key,const int value)
string Read(const char * database_name,const char * key)
int Read(const char * database_name,int key)
无需创建数据库,如果不存在则写入应隐式创建,并且对缺少的数据库的读取就像缺少值一样。
有什么建议吗?
答案 0 :(得分:0)
对于嵌入式数据库,您可以将绑定添加到任何现代嵌入式库,例如http://sphia.org(http://sophia.systems/)
如果你需要一个带内置数据库的Lua语言解释器,你可以看看http://tarantool.org
答案 1 :(得分:0)