在做信息管理系统的时候,很多设计人员都喜欢把基础字典缓存到应用服务器或者客户端内存,从而避免频繁的网络传输,提高系统性能,这个也许是约定俗成的。
而我觉得要不要缓存怎么个缓存方法,是由具体场景决定的。我就拿医院信息管理系统(HIS)给大家举个例子,目前大的医院HIS系统基本都采用的是C/S架构,C端会缓存很多字典信息,拿医生站来说吧,当医生登录医生站的时候,开始进行基础字典的下载缓存,这其中包含了疾病字典,药品字典,费用字典。当前这三个字典的记录数都已经过万,三个字典总的记录数已经超过四万。也就是说,所有医生站的客户端登录系统后首先要做的就是把这四万条记录下载到本地内存,而所有医生几乎都是同一时刻上班,当上千个医生一起开机后,就是四千万的记录数要在网络上传输。当然了,有的人可能会说了,当下网络配置足以支撑住四千万记录的传输。有没有考虑过,当网络稍微出现一点故障,本来可以将就用的系统将会变得无法再使用。
其实,我也一直在思考一个问题,每个客户端把这四万条记录下载到本地内存,真正使用到的又有多少呢?最简单的例子,一个产科大夫使用的诊断也就是跟生孩子相关的几个诊断,药品和费用也是固定在一个范围内了,四万条记录,能够使用到的估计也就千分之一左右。花费了大量的力气把大量的使用不到的数据下载到本地,占用了大量的内存空间,我们是否应该反思一下,这种情形是否合适呢?
其实,缓存机制可以有多种途径实现,最常用的是一次性加载所有的缓存数据,此方案适合缓存数据比较小的场景。当数据字典比较庞大,而我们只是使用其中的很少一部分记录时,就根本不需要一次性把所有记录缓存下来,我们可以变通一下,用到哪条缓存哪条,通过使用过程中进行缓存,即达到了缓存字典的目的,又大大降低了缓存记录的数量。
数据要不要缓存,怎么个缓存方法确实需要根据应用场景去分析论证,没有放之四海而皆准的方案,但是总归能找到一个更适合的方案。
领取专属 10元无门槛券
私享最新 技术干货