C 本地数据库的对等复制

C 本地数据库的对等复制,c,replication,C,Replication,我有一个C语言的程序,可以监控流量并记录用户访问的URL。目前,我正在一个哈希表中维护它。我的密钥是src IP地址,结果是一个带有URL链接列表的数据结构。我目前正在哈希表中维护50k到100k条记录。当用户注销时,记录可以被删除 该程序在主备对上独立运行。我想将这个数据库复制到另一台机器上,以防我的主机器崩溃(这两个系统充当客户机和服务器),并继续记录与用户相关的内容 困难的方法是编写代码,将这些信息发送到对等机,并在对等机系统上接收和存储。问题是,它将添加大量代码(和bug!)。要进行数据

我有一个C语言的程序,可以监控流量并记录用户访问的URL。目前,我正在一个哈希表中维护它。我的密钥是src IP地址,结果是一个带有URL链接列表的数据结构。我目前正在哈希表中维护50k到100k条记录。当用户注销时,记录可以被删除

该程序在主备对上独立运行。我想将这个数据库复制到另一台机器上,以防我的主机器崩溃(这两个系统充当客户机和服务器),并继续记录与用户相关的内容

困难的方法是编写代码,将这些信息发送到对等机,并在对等机系统上接收和存储。问题是,它将添加大量代码(和bug!)。要进行数据复制和数据存储,以下是一些先决条件:

  • 我想在这些机器之间复制数据记录。除非需要,否则我不会考虑添加另一台机器/集群
  • 首选库,以便快速查询。如果不是同一台机器上的另一个进程,我可以将其IPC
  • 应支持添加、更新和删除操作
  • 内存中的数据库是必须的
  • 支持具有不同密钥的多个此类数据库
  • 已经发布/订阅的东西
  • 如果备份停止并再次返回,则具有重新同步功能
  • 接口应该是C语言
我看到的可能选项有zookeeper、redis、memcached、SQLLite和berkeley db

  • 动物园管理员-需要奇数个系统才能打破僵局。不适合1对1
  • Redis-使用hiredis for C界面看起来符合我的要求。但要分开处理
  • Memcached-我没有任何缓存要求
  • sqllite-带C接口的嵌入式数据库
  • 伯克利DB-嵌入式数据库,具有更好的可扩展性

因此,Redis、SQLLite和Berkeley DB看起来是我前进的选择。感谢您对DBs的任何帮助/想法,我应该根据自己的需求进行更多研究。或者如果我需要研究其他DBs?如果我的问题很笼统,我道歉。如果这个问题不属于这里,请给我指出正确的论坛。

这是一个好问题,但这里的关键短语是“我正在寻找图书馆的建议”,不幸的是,这意味着这个问题与主题无关。请花些时间阅读,特别是那些名为和的章节。@JoachimPileborg谢谢。我修改了我的问题,列出了我所寻找的选项。如果它是通用的,请告诉我正确的论坛,以帮助我开始。