5

我们有一个 10000 行的表,它只有 2 列、一个主键和一个保持状态的第二列。问题是我们需要在美国的 3 个物理位置(相距约 2000 英里)以近乎实时的速度或通过网络尽可能快地复制此状态。3 个位置中的任何一个都可以更新此表中给定行的状态,该状态应近乎实时地复制到其他 2 个位置。

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

4

4 回答 4

4

查看Redis。这是复制方法

此外,如果您决定数据库不一定需要在内存中,它只需要快速,您可能需要考虑CouchDB。它可以做连续复制,本质上是即时的,所有节点都是master。它有一个深思熟虑的冲突检测和解决机制。这篇博文很好地介绍了最新最好的 CouchDB 复制功能。

于 2010-03-24T22:31:27.320 回答
1

尽管没有内置的复制支持,但您可以将触发器与内存中的SQLite数据库一起使用。在触发器中,使用自定义函数将更改传达给其他站点。

于 2010-03-24T22:43:05.207 回答
1

您可能想查看Altibase。他们说他们拥有世界上最快的内存数据库。他们说它们比大多数内存 DBMS 快 5 到 10 倍,并且他们还在网站上提供免费试用。

于 2013-03-20T15:40:59.883 回答
0

我在我的 Websphere Server 中执行了一个复杂的 SQL,它有超过 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

我显然比较了 Derby、SQLite 和 HSQLDB。Oracle 不是内存数据库。但是我把它的结果放到表格中是因为显示内存数据库和普通数据库之间的速度差异。

PS:在 SQLite 和 HSQLDB 中结果不稳定。所以我在 100 次尝试中选择了 10 个稳定的结果。有时 HSQLDB 比 SQLite 更快。我认为他们的表现是一样的。

于 2013-12-04T15:41:32.823 回答