应该支持多个连接,最好是通过ODBC。客户端将在同一台计算机上作为单独的进程运行。不需要持久性,因为客户端将处理其他地方的持久性。如果重要的话,客户端是用C ++编写的。
数据非常简单,它是一组不相关的双向地图。访问可以直接通过值或范围(between X and Y
)进行,无需更新。我们实际上并不需要SQL,因此也可以考虑非SQL解决方案。
客户端应用程序是多进程的,可以在多台计算机上运行。每台计算机都应具有此类数据库的本地副本,该数据库由本地客户端针对中央存储库进行更新。
多次修改:
答案 0 :(得分:1)
仅仅因为我对它的熟悉,我会选择mysql。要将其用作内存数据库,请使用内存作为表类型。 Redis是一个内存NoSql数据库,它可能非常适合这种情况(它在内存中运行,只有持久性的光盘写入才能被禁用)。
答案 1 :(得分:1)
没有使用带有RAM数据库的SQLite的任何特殊原因?
答案 2 :(得分:1)
出于安全原因,RAM磁盘不是一个选项 - 我们不希望有权访问该机器的任何人都能够查看数据
你运气不好。任何有权访问机器的人都可以查看/ proc / $ PID / mem中的数据。
如果您正在谈论非根访问,请使用/ tmp / $目录/方法与chmod 700。
答案 3 :(得分:1)
这是您可以在Linux下使用的技巧,它被称为“懒惰卸载”。
现在tmpfs仍然存在并且只要进程正在访问它就会继续存在,但是不再由不相关的进程访问它,因为它的挂载点中不再存在它。
请注意,这绝不会阻止root获取tmpfs中的数据,只是让它变得更难。
另请注意,它可能会被交换,因此如果您绝对需要非持久性,则应禁用swap(或使用加密交换)。
答案 4 :(得分:0)
试试Boost.MultiIndex。这不是一个明显的选择,但它基于关系数据库概念。
多索引的概念 相同的元素集合是 借用关系数据库 术语和允许的 复杂数据的规范 结构本着繁衍的精神 索引关系表,简单 集合和地图是不够的。一个广泛的 提供指数选择, 以类似的STL容器为模型 比如std :: set,std :: list和hashed 集。
答案 5 :(得分:0)
使用mysql和datadir =为此目的安装的tmpfs。你需要做一些启动脚本,它在启动时安装数据库(使用mysql_install_db或其他东西),当然,因为你将丢失所有数据。
答案 6 :(得分:0)
memcached可以是一个可行的解决方案。它是一个键值存储,可以设置为在一定时间内保存值,可扩展且易于设置和开始使用。它也可以在各种环境中运行。 Here's the wiki site for more information,特别是因为主页几乎没有帮助。