小弟最近要实现一个效率要求特高的需求,要使用内存数据库(内存表),即将DB中的数据都加载到内存中,内存与DB同步,直接从内存取数据。DB <———> 内存数据库  实时同步DB用的是ORACLE数据库
而内存数据库(内存表)这块小弟比较迷糊,以前也没接触过,不知道这种想法可行不?求高人指点一二。

解决方案 »

  1.   

    LZ可以考虑用分散DATABASE技术。这个技术的一个实现是memcached。和你的需求比较接近。
      

  2.   

    缓存是和数据库不同步的,缓存就是解决频繁访问数据库的问题用的
    所以缓存的数据可以看成历史数据
    简单点举个例子吧:
    你查一次数据库 取得数据肯定就是数据库的最新数据吧
    当有并发达几千人时,很多时候对数据库的访问太频繁,就会占用非常多的CPU
    甚至让服务器挂了,因此可以用缓存解决
    缓存就是第一次读取数据时存起来,放进浏览器里,当别人来访问同一个地方时
    本来应该要查询数据库的,但因为缓存了 所以就直接去缓存的数据
    减少了和数据库的交互,减轻了服务器的负担,
    但是如果有人修改了此查询的记录,他取得还是以前的记录,
    所以缓存可以说是历史数据。
    LZ的想法,我也期待高手来答 呵呵~~~
      

  3.   

    真的不推荐使用缓存!
    虽然java中有个这个东西!
    使用起来如果控制不好的话!服务器经常就死掉了!
    小程序还行!
    稍微大的要求对服务器配置很高的!
    一级缓存系统缓存!它根本不知道多少会够!会一直吃内存直到吃到系统崩溃!
    所以就需要配置二级缓存!
    如果用二级缓存的话!二级缓存本身就几兆!
    也一大点!运用不好的话!很麻烦的!如果一定要配置的话!
    对应一些需要频繁连接的配置!
    一张两张表就行了!
    缓存也就是懒加载,这个不容易控制的!
      

  4.   

    <!-- 连接池启动时的初始值 -->
    <property name="initialSize" value="1" />
    <!-- 连接池的最大值 -->
    <property name="maxActive" value="500" />
    <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->
    <property name="maxIdle" value="2" />
    <!--  最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
    <property name="minIdle" value="1" />
    这是需要在bean.xml中配置的!
    ======
    这个也是需要单独配置的
    <?xml version="1.0" encoding="UTF-8"?>
    <!--
    defaultCache: 节点为缺省的缓存策略
    maxElementsInMemory: 内存中最大允许存在的对象数量
    eternal: 设置缓存中的对象是否永远不过期 
    overflowToDisk: 把溢出的对象存放到硬盘上
    timeToIdleSeconds: 指定缓存对象空闲多长时间就过期,过期的对象会被清除掉
    timeToLiveSeconds: 指定缓存对象总的存活时间
    diskPersistent: 当jvm结束是是否持久化对象
    diskExpiryThreadIntervalSeconds: 指定专门用于清除过期对象的监听线程的轮询时间
    -->
    <ehcache>
    <diskStore path="D:\cache" />
    <defaultCache maxElementsInMemory="1000" eternal="false"
    overflowToDisk="true" timeToIdleSeconds="120"
    timeToLiveSeconds="180"
    diskPersistent="false" diskExpiryThreadIntervalSeconds="60"/>

    <cache name="com.webshop.VO.Users" maxElementsInMemory="100"
    eternal="false" overflowToDisk="true"
    timeToIdleSeconds="300"
    timeToLiveSeconds="600" diskPersistent="false" />
    </ehcache>
      

  5.   

    我要做的是内存数据库,像DB2那样的,但要求与后台的ORACLE实时同步