是否有任何用於Java的數據庫,可以在嵌入式模式下運行,某些表在存儲在內存中時從磁盤加載其他數據? H2和JavaDB似乎是Java DB的兩個領導者,我知道他們都有內存模式,但是他們是否會讓您將整個數據庫加載到內存中,還是可以根據表格來決定?內存中的Java數據庫
回答
這是緩存表常見問題在HSQL網站提及。
•不HSQLDB在存儲器中存儲的所有數據。不內存用完結果?
•它存儲在內存中的所有數據只有當你想,通過默認情況下,CREATE TABLE結果在內存表中,因爲這是較小表格的最佳類型。對於較大的表格,使用CREATE CACHED TABLE並調整緩存大小以適應您的內存使用需求(只需8MB左右)。請參閱本指南的「系統管理和部署問題」一章。 HSQLDB沒有簡單的規則,也沒有拼版,因爲只使用幾個設置就可以實現最大的靈活性。 HSQLDB的一個流行用途是用於OLAP,ETL和數據挖掘應用程序,其中使用巨大的Java內存分配來將數百萬行數據保存在內存中。
我認爲緩存表已經足夠強大,足以滿足您的需求。
從http://hsqldb.org/web/hsqlFAQ.html
緩存表和存儲器表
MEMORY表和CACHED表說的比較,通常使用用於數據存儲。兩者的區別如下:
當數據庫啓動並存儲在內存中時,將從* .script文件中讀取所有MEMORY表的數據。相反,在訪問表之前,高速緩存表的數據不會被讀入內存。而且,每個CACHED表的數據只有一部分保存在內存中,允許具有更多數據的表可以保存在內存中。
當數據庫以正常方式關閉時,MEMORY表的所有數據都寫入磁盤。相比之下,CACHED表中已更改的數據在運行和關閉期間會被寫出。
所有CACHED表的數據高速緩存的大小和容量都是可配置的。這使得可以允許將CACHED表中的所有數據緩存在內存中。在這種情況下,訪問速度很好,但比MEMORY表略慢。
對於正常的應用程序,建議MEMORY表用於少量數據,留下大數據集的CACHED表。對於速度至關重要且具有大量可用內存的特殊應用,MEMORY表也可用於大型表。
H2和Derby(JavaDB)似乎還不支持此功能。糾正我,如果這不是事實。
大多數內存數據庫(如HSQLDB有緩存部分(或全部)數據到磁盤的能力,通常是足夠低的水平,因此是透明的程序員,但肯定是配置
- 1. IMDB(內存數據庫)與Java集合
- 2. 將數據保存在內存中而不是保存在數據庫中java
- 3. 使用Java類在內存數據庫中添加數據?
- 4. 在Java中創建內存中sqlite數據庫的示例(Android)?
- 5. 內存數據庫vs圖數據庫
- 6. SQLite中內存數據庫的優點
- 7. 休眠中的內存數據庫
- 8. 內存數據庫中的Rails
- 9. 共享內存中的sqlite3數據庫
- 10. 100%內存中的HSQL數據庫
- 11. 內存數據庫中的Postgresql django
- 12. 清理內存中的數據庫
- 13. Python中的內存數據庫
- 14. 在內存中的SQLite數據庫
- 15. 在內存中固定一個數據庫/將數據庫附加到內存數據庫中
- 16. Spring內存數據庫
- 17. 內存映射數據庫
- 18. 恢復內存數據庫
- 19. PostgreSQL在內存數據庫
- 20. JBPM 6 - 內存數據庫
- 21. 緩存內存中的數據庫內容以提高性能
- 22. java h2內存中數據庫錯誤:表未找到
- 23. SQLite.NET內存(:內存:)數據庫比基於文件的數據庫慢很多
- 24. Java ZonedDateTime保存在數據庫中
- 25. 確定將數據存儲在內存或數據庫中
- 26. 在內存數據庫設計中
- 27. 內存中數據庫關閉()
- 28. Datamapper在內存數據庫中
- 29. 實時或內存數據庫中
- 30. 在內存中有數據庫 - C
是否有任何文件可以指向我?從我在H2網站上看到的內容來看,只有DB不持久時,內存纔有效。 – 2009-12-21 07:42:28
你可能想看看Terracotta http://www.terracotta.org/ – Bostone 2009-12-22 05:58:02
@DroidIn。網秦兵馬俑是商業?它是一種緩存而不是DB,對吧? – 2011-08-18 22:55:24