[問題] BerkeleyDB for JAVA的相關問題

看板java作者時間18年前 (2007/07/07 03:17), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
爬了一些文,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
文章代碼(AID): #16ZfKsVJ (java)
文章代碼(AID): #16ZfKsVJ (java)