JAVA内存数据库(内存表)

小贝壳666 2010-05-10 05:36:06
小弟最近要实现一个效率要求特高的需求,要使用内存数据库(内存表),即将DB中的数据都加载到内存中,内存与DB同步,直接从内存取数据。

DB <———> 内存数据库 实时同步

DB用的是ORACLE数据库
而内存数据库(内存表)这块小弟比较迷糊,以前也没接触过,不知道这种想法可行不?求高人指点一二。
...全文
3504 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
枯荣无波 2011-06-17
  • 打赏
  • 举报
回复
这个我也不知道,我也想设置一个内存表,不知道如何做。
小贝壳666 2010-05-11
  • 打赏
  • 举报
回复
还望高人指点迷津
小贝壳666 2010-05-11
  • 打赏
  • 举报
回复
我要做的是内存数据库,像DB2那样的,但要求与后台的ORACLE实时同步
lijinglong6140 2010-05-10
  • 打赏
  • 举报
回复
<!-- 连接池启动时的初始值 -->
<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>
lijinglong6140 2010-05-10
  • 打赏
  • 举报
回复
真的不推荐使用缓存!
虽然java中有个这个东西!
使用起来如果控制不好的话!服务器经常就死掉了!
小程序还行!
稍微大的要求对服务器配置很高的!
一级缓存系统缓存!它根本不知道多少会够!会一直吃内存直到吃到系统崩溃!
所以就需要配置二级缓存!
如果用二级缓存的话!二级缓存本身就几兆!
也一大点!运用不好的话!很麻烦的!如果一定要配置的话!
对应一些需要频繁连接的配置!
一张两张表就行了!
缓存也就是懒加载,这个不容易控制的!
tfish2014 2010-05-10
  • 打赏
  • 举报
回复
缓存是和数据库不同步的,缓存就是解决频繁访问数据库的问题用的
所以缓存的数据可以看成历史数据
简单点举个例子吧:
你查一次数据库 取得数据肯定就是数据库的最新数据吧
当有并发达几千人时,很多时候对数据库的访问太频繁,就会占用非常多的CPU
甚至让服务器挂了,因此可以用缓存解决
缓存就是第一次读取数据时存起来,放进浏览器里,当别人来访问同一个地方时
本来应该要查询数据库的,但因为缓存了 所以就直接去缓存的数据
减少了和数据库的交互,减轻了服务器的负担,
但是如果有人修改了此查询的记录,他取得还是以前的记录,
所以缓存可以说是历史数据。
LZ的想法,我也期待高手来答 呵呵~~~
看近行远 2010-05-10
  • 打赏
  • 举报
回复
怎么看不懂
hepeng_8 2010-05-10
  • 打赏
  • 举报
回复
缓存?
高深的
暂时不东
小贝壳666 2010-05-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hq1305018 的回复:]
LZ可以考虑用分散DATABASE技术。这个技术的一个实现是memcached。和你的需求比较接近。
[/Quote]
楼上的兄弟多给些资料啊,先谢了
hq1305018 2010-05-10
  • 打赏
  • 举报
回复
LZ可以考虑用分散DATABASE技术。这个技术的一个实现是memcached。和你的需求比较接近。
牛叔 2010-05-10
  • 打赏
  • 举报
回复
缓存?
高深的
俺不懂

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧