请问一个如何设计Cache(要求提高搜索速度)的问题

03-12-27 晨曦
         

banq以及各位高手.

我们现在在做一个关于ip系统方面的问题,我现在遇到一些问题

我们用的数据库是oracle9i,开发工具jboss,问题如下:

1.在访问数据库方面,由于数据库较大(如1000万条),我们设计连接数据库的最低层时需要设计3个方面的功能:Cache,connectionpool,query对于connectionpool和query具体用到哪些类,如何去设计我们还是很清楚的,到了如何设计cache(要求5秒钟内能搜索到1000万条数据库的信息)遇到这样一个问题,如何去设计这个框架

以下是我们初步设计的方案:

首先设计一个Timer,然后遍历每个连接的状态,再设计一个连接池,以此来当连接关闭之后,我们直接从连接池中删除临时数据.

         

wwlhp@jdon.com
2003-12-28 13:14

wwlhp@jdon.com0lu3N0007b.jar

这是我写的一个Cache,希望对你有帮助:)。

fiddle
2003-12-29 12:25

connection pool 网上一大堆,很成熟的东西干麻要自己开发?

query 是什么东东?

如果设计目标是快速的从1000万里面搜索出符合条件的记录,建议如下:

1、做好表设计,只要做好索引,1000万的记录不算大,再大10倍的表也小CASE

2、网上找LRU来做cache就好了,用LinkedHashMap也很容易实现

yyanghhong
2004-01-02 07:44

提高单个查询性能的关键是数据库的设计和sql的优化, 和java没关系,

connection和cache技术是用来提高并发访问的性能, 和单个查询性能没关系.

去看看oracle的文档关于patition和materialized view, CBO, skip index的介绍吧.

晨曦
2004-01-02 13:55

To yyanghhong:

首先谢谢你的建议,你所说的是如何设计数据库方面的,而我们现在oracle数据库已经做好了,而由于数据太多,我们就必须设计一个cache来缓冲客户的瓶颈问题,我们的要求是这样的;设计一个cache

1.客户传过来的数据如何在内存中保存

2.如何分辨出搜索数据的属性(类)

3.对于cache中内存是如何分区?如何查找哪个内存的分区?

4.内存如何分配查找数据(即如何给连接发出命令)?

5.内存数据库(如何做:数据如何存储?如何分类?如何排序?是否同步)

6.搜索的数据是否在cache,如果不在又要如何去发出命令呢

毕竟cache中所存储的数据只有很少一部分,所以如何对连接发出命令是很重要的

这些就是我们所要的做的.所以说如何去做这个CACHE就很重要了

5Go 1 2 3 4 ... 5 下一页