TimesTen作为一个内存数据库,数据完全放置在内存中,那么它的数据持久性如何保持?以及如何实现高可用性保证的呢?
TimesTen的数据持久性是通过磁盘上的DataStore文件和Log文件保持的。TimesTen每一次操作,都会先缓存在内存的LogBuffer中,然后由后台的守护进程异步地同步到磁盘上的Log文件中。TimesTen每隔一段时间或者收集到一定的脏日志量后,就触发一次Checkpoint,将内存中变化的数据增量写到磁盘上的DataStore文件中,然后清除掉已经同步过的Log文件。所以当掉电,或者其它故障时,TimesTen可以通过这些文件进行自动恢复。
至于高可用性保证,如果是单节点,不想有任何的数据丢失,TimesTen可以通过设置参数DurableCommits =1来保证,即每次提交都强制性同步到磁盘上(缺省为异步方式),这种情况下,数据库写的性能会受到影响。所以如果既想保持高性能,又能保证数据的高可用性,TimesTen通过Replication机制完美地达到了上述两点,通过Replication,TimesTen在多个节点的之间保持数据的自动高效同步。节点之间由多种复制模式可以选择:Active-Standby,Active-Active,Active-Standby-Disaster Recovery等等;数据的传送模式也有同步、半同步、完全同步等三种模式。
文章 (RSS)
June 14th, 2009于9:01 am
[...] 数据持久性 [...]