我要寻找的是一个无SQL、嵌入库的磁盘(即不在内存中)数据库,它可以从java访问(最好在我的JVM实例中运行).这并不是一个真正的数据库,我很想建立自己的数据库.基本上,我在寻找数据库中的"我们应该把它保存在内存中还是放在磁盘上"部分.
我们的模型已经增长到几千兆字节.现在,这些都是在内存中完成的,这意味着我们正在推动JVM达到几千兆字节以上.目前,它们都存储在一个平面XML文件中,使用Xstream进行序列化和反序列化,并使用内置gzip库的Java‘a进行压缩.当我们的模型保持在100MB以下时,这是很好的,但现在它比100MB更大,这就成了一个问题.
粗略地说,这种模式可以分解为
- Project
- 配置组件(有向无环图),对数据库不友好
- a list of a dozen "experiment" structures
- 每个都包含大约12个"运行模型" struct 的列表.
- 每个运行模型包含数百兆数据.一旦写好,就再也不会编辑了.
- 每个都包含大约12个"运行模型" struct 的列表.
What I'd like to do is have something that conforms to a map interface, of guid -> run-model. This mini-database would keep a flat table of these objects. On our experiment model, we would replace the list of run-models with a list of guids, and add, at the application layer, a get call to this map, which would pull it off the disk and into memory.
这意味着我们可以用XML(我非常满意)来配置我们的程序,并在DBMS中保留一个 Big Data 表,这将防止我们消耗多GB的内存.在程序启动和退出时,我可以从存档格式加载和卸载模型的两部分(XML格式的配置部分和数据库格式的运行模型).
我对此有点热衷于此,并且认为我可能可以使用X-Stream的一些XML判断策略和自定义映射实现来实现它,但是我脑海中有个声音告诉我应该找一个库来做这件事.
我应该自己滚动,还是有足够小的数据库来满足这个要求?
谢谢你们,
-杰夫