作者archerlin ()
看板java
标题[问题] BerkeleyDB for JAVA的相关问题
时间Sat Jul 7 03:17:07 2007
爬了一些文,Javaworld也全文检索了,甚至也google了许久,
发现Java的programmer好像很少在用 BerkeleyDB 耶?
这个连Google都爱用的小巧可爱的DB
http://www.oracle.com/database/berkeley-db.html
怎麽到了Java世界里好像爹不疼娘不爱了...:p
最近我在试着实做try它...发现了一些问题,
希望也有在摸的前辈能指点一下迷津...
因为初学乍用,我是以最简单的类似Hash的方式去操作他,
用最简单的 <Key, Value> 概念,使用Binding的方法。
八大primitive data 用 TupleBinding里的getPrimitiveBinding,例如存Long用
EntryBinding myBinding = TupleBinding.getPrimitiveBinding(Long.class);
後来摸出了存放物件的方法,例如
EntryBinding dataBinding = new SerialBinding(classCatalog, MyObject.class);
接着用dataBinding.objectToEntry()来序列化
dataBinding.entryToObject()来反序列化,从DB内取得物件
发现他存取速度真的很快,比MySQL的SELECT * 之类的 Query要来的快太多了!
(简直就是有如Java内部的HashMap离线版 XD )
但是经由我反覆的insert/delete/update後,问题来了,
我去观察 Database Environments 底下的 00000000.jdb和je.lck档案
发现 *.jdb 档案大小不断的肥大起来,既使里面存的笔数一样,
我新增1000笔再删除1000笔 *.jdb他老兄还是不断的在长大!!
请问有无最佳化DB的方式,能把DB里不必要的增删资讯给去除掉?
或是当初在设 Environment环境时是不是有哪些参数可以调整?
把Cache调大有用吗?
还有他的Txn (Transaction)相关的该如何设定?
BerkeleyDB能自动做到多Thread的sync吗?该Lock时会自动Lock吗?
以上的问题还有观念有误的地方,
希望有摸过的先进不吝指教一番,谢谢罗!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.31.160.158