如果考虑使用数据库来做数据存储和访问,就需要考虑应用程序与数据库的关系。
信息系统无非就是处理数据,包括接收网络数据,分析数据,存储数据。
应用程序希望数据的读取和存储不影响其分析和处理,所以数据缓存很有必要,也就是说数据的读取和存储不是信息系统的瓶颈。
数据库虽然实现了应用程序与数据的无关性,但是引入了另外一种关联性,主要是针对关系型数据库,即应用程序与表的耦合性。
同样也就导致了缓存与表的关联性,在一定程度上限制了应用程序的可扩展性,所以出现了一种NoSQL数据库。
应用程序中有关数据库的数据缓存如果能够减少与表的关联,可维护性和可扩展性就要好很多了。
以MySQL为例,它的查询缓存可能并不能产生多大的效果,尤其针对写操作比较频繁的情况,同时由于为了减少对数据库的并发写的压力,都是需要做一个应用层的缓存。
至于应用层的缓存,是否应该是按表设计与特定应用关联,还是做一些抽象,做到通用一点都是值得考虑的。
再者,应用层的缓存是否应该与应用程序在同一个机器内或同一个进程内,访问比较方便,否则仍然有网络延迟的开销。
最后,应用层一般都是有数据库代理的,在这里封装了数据库的访问,是否应该将数据库代理和缓存合并在一起,作为一个同机器的进程提供服务,也是需要考虑的。
阅读(1474) | 评论(0) | 转发(0) |