我们有一个具有仅2列,主密钥和第二列保持状态的10000行的表。问题是,我们需要这个状态在3个物理位置在美国被复制(约2000英里外),以接近实时或以最快的速度实际可能在网络上。任何3个地点都可以在这个表中给定的行应在接近实时地复制到其他2个位置更新状态。

是否有任何开源或商业轻质内存数据库,可以帮助我们实现我们正在尝试做的。磁盘持久性并不重要位置。

有帮助吗?

解决方案

查核 Redis的。这里的复制HOWTO

另外,如果你决定,DB并不绝对需要在内存中,它只是需要要快,你可能要考虑的 CouchDB的。它可以做连续复制,这基本上是瞬间,并在所有节点都是高手。它有一个很好深思熟虑的冲突检测和解决机制。 本博客文章是一个伟大的介绍最新和最伟大CouchDB的复制能力。

其他提示

虽然有内置的没有复制的支持,您可以使用触发与中-Memory 的SQLite数据库。在触发器,使用自定义函数的变化传达给其他网站。

您可能想看看 ALTIBASE 。他们说,他们拥有世界上最快的内存数据库。他们说,他们是5至10倍,比大多数内存DBMS更快,他们也有在网站上的免费试用。

我执行复杂的SQL这在我WebSphere服务器已超过6000个10000次。总净执行时间是这样的:

          Derby (In Memory)   Oracle(standard DB) SQLite (In Memory)  HSQLDb (In Memory)
          nano sec.  second    nano sec.  second  nano sec.  second   nano sec. second
1. try    58000000    0,058   6149976000   6,1    1141988000   1,14   999403000    1,00
2. try    78560000    0,078   5268477000   5,2    1182621000   1,18   1338705000   1,34
3. try    58849000    0,058   5200898000   5,2    1133003000   1,13   2239527000   2,24
4. try    60901000    0,06    5435216000   5,4    1205442000   1,21   1370711000   1,37
5. try    58798000    0,058   6501929000   6,5    1186734000   1,19   1001800000   1,00
6. try    62928000    0,062   5913053000   5,9    1224470000   1,22   1066736000   1,07
7. try    71171000    0,071   5111207000   5,1    1200769000   1,20   1304524000   1,30
8. try    66913000    0,066   5517989000   5,5    1173495000   1,17   1299230000   1,30
9. try    58777000    0,058   7209555000   7,2    1179013000   1,18   1031795000   1,03
10. try   75299000    0,075   5356514000   5,3    1182715000   1,18   1368461000   1,37
average   65019600    0,064   5766481400   5,7    1181025000   1,18   1302089200   1,30

我显然比较德比,SQLite和HSQLDB。 Oracle是不是在内存数据库。但我把它的结果表,因为在内存数据库和正常分贝之间表演的速度差。

PS:在SQLite和HSQLDB结果是不稳定的。所以,我选择在100试10个稳定的结果。有时HSQLDB比SQLite的速度更快。我认为他们的表现都相同。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top