我要寻找的是一个无SQL、嵌入库的磁盘(即不在内存中)数据库,它可以从java访问(最好在我的JVM实例中运行).这并不是一个真正的数据库,我很想建立自己的数据库.基本上,我在寻找数据库中的"我们应该把它保存在内存中还是放在磁盘上"部分.

我们的模型已经增长到几千兆字节.现在,这些都是在内存中完成的,这意味着我们正在推动JVM达到几千兆字节以上.目前,它们都存储在一个平面XML文件中,使用Xstream进行序列化和反序列化,并使用内置gzip库的Java‘a进行压缩.当我们的模型保持在100MB以下时,这是很好的,但现在它比100MB更大,这就成了一个问题.

粗略地说,这种模式可以分解为

  • Project
    1. 配置组件(有向无环图),对数据库不友好
    2. a list of a dozen "experiment" structures
      • 每个都包含大约12个"运行模型" struct 的列表.
        1. 每个运行模型包含数百兆数据.一旦写好,就再也不会编辑了.

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判断策略和自定义映射实现来实现它,但是我脑海中有个声音告诉我应该找一个库来做这件事.

我应该自己滚动,还是有足够小的数据库来满足这个要求?

谢谢你们,

-杰夫

推荐答案

Database相关问答推荐

powerapps 中的 ClearCollect 未按预期收集数据

数据库是序列图中的控制器还是边界?

add_index 到数据模型 - Ruby on Rails 教程

授予对具有特定前缀的多个表的权限

SQL 概念 LEFT OUTER JOIN 和 WHERE NOT EXISTS 基本相同吗?

try 重新打开一个已经关闭的对象:SQLiteDatabase

使 H2 将引用的名称和未引用的名称视为相同

Oracle 和 SQL Server 中的 NVARCHAR 之间的区别?

如何在 PDO 中获取数据库名称?

为数据库应用程序留下审计跟踪/更改历史的有效策略?

你可以在一个 Hibernate Session 中有多个事务吗?

C++ SQL 数据库库比较

如何从 PostgreSQL 数据库中的文本文件加载数据?

SQL - 如何转置?

如何在 Windows 中将用户添加到 PostgreSQL?

SQL全文搜索与LIKE

Codeigniter - 使用多个数据库

做或不做:将图像存储在数据库中

是否有用于 postgresql 的数据可视化工具,它也能够显示模式间关系?

如何使用 liquibase,一个具体的例子