Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1347968
  • 博文数量: 277
  • 博客积分: 2551
  • 博客等级: 少校
  • 技术积分: 3918
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-21 22:46
文章分类

全部博文(277)

文章存档

2017年(3)

2016年(9)

2015年(65)

2014年(27)

2013年(85)

2012年(61)

2011年(27)

分类: Mysql/postgreSQL

2013-07-07 18:27:10

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

上一篇:为何要使用数据库

下一篇:内核新认识

给主人留下些什么吧!~~