在系统架构设计中,使用缓存是最常用的降低数据库负载和提升性能的策略,缓存的主要目的是减少对数据库的Read操作。但是在不同的情况下,我们需要使用不同形式的缓存。
比如,如果数据表中的数据是静态的、不会发生变化的,那就非常容易,我们只需要在系统启动的时候,将其加载到内存,以后每次从内存读取数据即可。
再比如,数据表中的数据会发生变化(增删改),但是变化的频率非常低,而恰巧我们的系统对数据实时性的敏感度也不是特别高,那我们可以使用定时刷新的缓存,DataRabbit 中也内置了对这种缓存的支持,可以参见 DataRabbit 轻量的ORM框架(16)-- Entity缓存 。
再比如,数据表中的记录非常多,并且修改方面只会有Insert操作,那么我们可以使用HotCache,把那些经常使用的记录缓存在内存中,并且设定超时机制。HotCache我们会在后面介绍。
再比如,某个数据表的修改经常是Insert和Update操作,但是无论如何Update,每条记录有些固定栏位的值都是不会发生变化的,那我们可以把这些不会发生变化的栏位封装在一个【子对象】中,然后在内存中缓存这些子对象。
举了这么多例子,现在我们进入本文正题,假设我们的某个数据表中的数据会发生变化(增删改),但是变化的频率比较低,但是我们的系统对这个表的数据的实时性的敏感度也特别高,那这时候我们就需要用到【实时同步的实体缓存】,这个缓存中的数据在任何时候都与数据表中的数据是完全一致的。
DataRabbit 中的SyncEntityCache就是这样的缓存。
当然,使用这样的实时同步缓存有一个前提是必须保证的,那就是对目标数据表的修改都必须经由SyncEntityCache来进行,这个前提应该还是比较容易保证的。
评论加载中...- 2009-5-14Objective-C 2.0 with Cocoa Foundation--- 8,类方法以及私有方法
- 2009-5-14Tomcat配置成https方式访问(用单向认证)
- 2009-5-13windows下设置Resin进入系统服务
- 2009-5-13Lucene(2.4.1)技术研究(5)--IndexWrite类源代码解析(三)FSDirectory介绍
- 2009-5-13Lucene(2.4.1)技术研究(5)--IndexWrite类源代码解析(四)RAMDirectory介绍
- 2009-5-13DataRabbit 轻量的数据访问框架(20)-- 实时同步的实体缓存 SyncEntityCache
- 2009-5-13DataRabbit 轻量的数据访问框架(19)-- 读写分离与隔离级别
- 2009-5-12Firebug中的console tab使用总结
- 2009-5-5开源技术基础知识:什么是开源软件?
- 2009-4-28探讨一下Quartz.NET的源代码
