基于大数据量的缓存查询实现方案

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/webwalker/article/details/4832576

       业务、应用系统最常用的就是基于数据的查询,这不同于宏观意义上的系统各个层面优化(应用端、服务端、DB端等等),基于数据的查询更多时候需要考虑数据的规模、用户的习惯、数据的变化性等因素,但同时数据查询的优化也贯穿着系统的各个层面。本文主要针对一个特定领域进行分析,以供各位参考!
       基于数据的查询往往首要考虑的是缓存数据,那么缓存的前提:
       1、数据不会实时变化
       2、每个用户最大范围的可以共用数据集合
      基于缓存的实现方案,通常需要这样的一个缓存框架来完成,OK,接下来首先来应用温老师的ADMEMS矩阵方法进行结构化的需求分析,来看看我们的关键性需求、功能以及约束影响:

 

功能

质量

约束

业务级需求

当前:管理游戏类复杂产品的数据缓存

未来:管理其他类产品的数据缓存

新产品上线快,发布频繁

缓存数据的关键性

支持DB直连和缓存切换

与关联业务系统缓存同时生效

支持缓存更新、刷新(5分钟时效)

支持缓存故障恢复

支持其他类产品缓存管理

用户级需求

手机平台

Web平台

游戏平台

高可用

易用性

性能:缓存查询、吞吐

分布式的使用要求

不同平台的差异因素

开发级需求

 

数据安全机制

可重用、可扩展

 

 

补充说明:
1、可扩展性
不同类型数据库的以插件方式接入缓存体系(Oracle、SQL Server等等)
2、可用性
数据获取重试机制、缓存刷新重试机制、缓存通知重试机制
3、性能
以最小粒度为数据缓存更新点
4、故障恢复
分布式服务器、单台WEB下线,上线,缓存数据重新拉取

 

废话不多说,针对以上的需求分析,现对该缓存的预设计实现方案陈述如下:



另外,考虑到Cache应用到不同的系统层面,也应一并考虑到如下的优化:
1、应用端
如果是列表类,动态变化的查询,可采用分页查询
另外根据业务需求,可将首页或查询命中率较高的页数据进行缓存
同时可配合异步查询的方式进行
2、数据库
查询优化,针对不同的查询维度,进行分区并建立合适的索引,适当时候考虑数据迁移
另外建立数据同步机制,完成读写分离

 

其他,待补充!

 

其他参考:

1、海量数据的缓存

2、J2EE综合:如何处理大数据量的查

3、大数据量分页显示

4、大数据量分页查询方法

5、结合索引优化SQL语句提高数据库查询效率

 

阅读更多
换一批

没有更多推荐了,返回首页