我看过键值数据库Redis,并对提供以下内容的替代方案感到好奇:
与其将外部数据库引擎作为一个单独的进程启动,然后例如通过C接口连接到它,不如:
redisContext *c = redisConnect("127.0.0.1", 6379);
是否有其他选择,可以选择将数据库代码作为库包含在内,并在二进制文件中将数据加载为文件?例如,给定二进制文件myDbBinary
和命令:
$ myBinary --filter=filterOptions db.dat
二进制文件myBinary
不会启动单独的数据库进程并连接到其端口,而是myBinary
将文件中的键(和散列)加载db.dat
到内存(或类似的VM安排)中,然后可以对其进行过滤(使用filterOptions
,无论它们是什么)并执行密钥/哈希查找。
C和Python与数据和存储指令的接口。
散列支持,我的意思是键将散列表保留为一个值。
是否存在这样的软件?
SQLite确实具有大量的内置和隐式锁管理。因此,您可以有多个进程共享一个SQLite数据存储(文件),并且仍然可以得到合理的ACID保证(甚至通过NFS),而不必显式地编写自己的锁管理和争用处理。(请注意,并发支持将非常薄弱,仅限于平台的fnctl / flock性能;但是对于低流量情况它仍然是理智的,以后可以将其扩展到PostgreSQL或MySQL等)。