java 嵌入式库磁盘键值数据库 [已关闭]
我认为我正在寻找的是一个无SQL,库嵌入的磁盘(即不在内存中)数据库,可以从java访问(最好在我的JVM实例中运行)。这并不是一个真正的数据库,我很想自己动手。基本上,我正在寻找数据库的“我们应该将其保存在内存中还是放在磁盘上”部分。
我们的模型已增长到几 GB。现在,这一切都是在内存中完成的,这意味着我们正在将JVM推送到几千兆字节以上。它目前全部存储在一个平面XML文件中,使用xstream进行序列化和反序列化,并使用内置gzip库中的Java'a进行压缩。当我们的模型保持在100MB以下时,这很有效,但现在它比它大,它成为一个问题。
从广义上讲,该模型可以分解为
- 项目
- 配置组件(有向无环图),根本不对数据库友好
- 十几种“实验”结构的列表
- 每个都包含大约十几个“运行模型”结构的列表。
- 每个运行模型包含数百兆兆的数据。一旦写完,它们永远不会被编辑。
- 每个都包含大约十几个“运行模型”结构的列表。
我想做的是拥有一些符合映射界面的东西,guid->运行模型。这个迷你数据库将保留这些对象的平面表。在我们的实验模型上,我们将运行模型列表替换为 guid 列表,并在应用程序层添加对此映射的 get 调用,这会将其从磁盘中拉出并放入内存中。
这意味着我们可以在XML中保持程序的配置(我对此非常满意),并在DBMS中保留一个大数据表,这将防止我们消耗数GB的内存。在程序启动和退出时,我可以从存档格式中加载和卸载模型的两个部分(XML 中的配置部分和数据库格式的运行模型)。
我对此感到很无聊,并认为我可能会用一些X-Stream的XML检查策略和自定义映射实现来实现它,但是我脑海中有一个声音告诉我,我应该找一个库来做这件事。
我应该自己滚动还是有一个足够小的数据库来满足这个要求?
谢谢你们,
-杰夫