我们有一个 10000 行的表,它只有 2 列、一个主键和一个保持状态的第二列。问题是我们需要在美国的 3 个物理位置(相距约 2000 英里)以近乎实时的速度或通过网络尽可能快地复制此状态。3 个位置中的任何一个都可以更新此表中给定行的状态,该状态应近乎实时地复制到其他 2 个位置。
是否有任何开源或商业轻量级内存数据库可以帮助我们实现我们正在尝试做的事情。磁盘持久性在这里并不重要。
我们有一个 10000 行的表,它只有 2 列、一个主键和一个保持状态的第二列。问题是我们需要在美国的 3 个物理位置(相距约 2000 英里)以近乎实时的速度或通过网络尽可能快地复制此状态。3 个位置中的任何一个都可以更新此表中给定行的状态,该状态应近乎实时地复制到其他 2 个位置。
是否有任何开源或商业轻量级内存数据库可以帮助我们实现我们正在尝试做的事情。磁盘持久性在这里并不重要。
您可能想查看Altibase。他们说他们拥有世界上最快的内存数据库。他们说它们比大多数内存 DBMS 快 5 到 10 倍,并且他们还在网站上提供免费试用。
我在我的 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 更快。我认为他们的表现是一样的。