应该支持多个连接,最好通过ODBC。 客户端将作为单独的进程在同一台机器上运行。 没有必要坚持,因为客户将处理其他地方的持久性。 客户端是用C ++编写的。
数据非常简单,是一组不相关的双向地图。 访问是直接由值或范围( between X and Y
),没有更新。 实际上我们并不需要SQL,因此也可以考虑使用非SQL解决scheme。
客户端应用程序是多进程的,可以在多台机器上运行。 每台机器都应该有一个这样的数据库的本地副本,由本地客户端通过中央存储进行更新。
多个编辑 :
只是因为我熟悉它,我会去与MySQL。 要将其用作内存数据库,请使用内存作为表类型。 Redis是一个内存中的NoSql数据库,它可能是一个完美的适合这个(它在内存中运行,光盘写入的持久性只能被禁用)。
不使用SQLite打开RAM db的任何特定原因?
由于安全原因,RAM磁盘不是一个选项 – 我们不希望任何有权访问机器的人都能够查看数据
你不走运。 任何有权访问机器的人都可以通过/ proc / $ PID / mem查看数据。
如果你说的是非root用户访问,而不是使用chmod 700的/ tmp / $ directory /方法。
这里有一个你可以在Linux下使用的技巧,叫做“Lazy unmount”。
现在,只要进程正在访问tmpfs,tmpfs仍然存在,并且将继续存在,但不再由不相关的进程访问,因为它不再存在于其挂载点中。
请注意,这绝不会阻止root获取tmpfs中的数据,只会让它更难一些。
还要注意,它可能会被交换,所以如果你绝对需要它是非持久化的,你应该禁用交换(或使用加密的交换)。
尝试Boost.MultiIndex 。 不是一个明显的选择,但它是基于关系数据库的概念。
在相同的元素集合上进行多索引的概念是从关系数据库术语中借鉴的,并且允许根据乘法索引关系表的精神描述复杂的数据结构,其中简单的集合和映射是不够的。 提供了广泛的索引选择,仿照类似的STL容器,如std :: set,std :: list和散列集。
使用MySQL与datadir =您为此目的安装的tmpfs。 您需要在启动时制作一些启动脚本来安装数据库(使用mysql_install_db或其他),当然,因为您将丢失所有数据。
memcached可以是一个可行的解决方案。 这是一个键值存储,可以设置为在一定的时间内保存值,可扩展且易于设置和开始使用。 它也运行在各种环境中。 这里是维基网站的更多信息 ,特别是因为主页面几乎没有帮助。