java嵌入式数据库,能够存储为一个文件

java嵌入式数据库,能够存储为一个文件,java,embedded-database,Java,Embedded Database,我需要为一些表格格式的简单数据创建一个存储文件格式,我曾尝试使用HDF5,但由于一些问题,我刚刚放弃,我想重新检查嵌入式数据库的使用,看看它们是否足够快,适合我的应用程序 是否有一个声誉良好的嵌入式Java数据库可以选择将数据存储在一个文件中?我只知道SQLite(Java绑定可用)。我尝试了H2和HSQLDB,但它们似乎是开箱即用地创建了几个文件,我非常希望在一个文件中包含一个数据库 编辑:合理快速的性能非常重要。对象存储不可用;出于性能考虑,我只需要存储整数和blob。(+一些字符串,但不影

我需要为一些表格格式的简单数据创建一个存储文件格式,我曾尝试使用HDF5,但由于一些问题,我刚刚放弃,我想重新检查嵌入式数据库的使用,看看它们是否足够快,适合我的应用程序

是否有一个声誉良好的嵌入式Java数据库可以选择将数据存储在一个文件中?我只知道SQLite(Java绑定可用)。我尝试了H2和HSQLDB,但它们似乎是开箱即用地创建了几个文件,我非常希望在一个文件中包含一个数据库

编辑:合理快速的性能非常重要。对象存储不可用;出于性能考虑,我只需要存储整数和blob。(+一些字符串,但不影响性能)


编辑2:存储数据效率对于较大的数据集很重要,因此XML已经过时。

曾经我使用一个对象数据库将其数据保存到一个文件中。它有一个Java和一个.NET接口。你可能想看看。它叫做。

如果您正在寻找一个小而快速的数据库,可能会与另一个程序一起提供,我会检查一下,我不知道您将如何定义嵌入式数据库,但我在一些项目中使用它作为调试数据库,它可以与源代码一起检入,并且可以在每台开发人员机器上即时使用。

自从您提到sqlite,我假设您不介意使用本机db(只要有好的java绑定可用)。可以很好地使用java,并且默认情况下可以进行单文件存储


如果没有单文件要求,H2和HSQLDB都是很好的选择。

这不是SQL引擎,但如果与一起使用,则可以轻松创建包含所有数据的单XML文件。(Prevayler称之为快照文件。)


虽然它不是基于SQL的,因此需要一些额外的功能,但它的自包含特性使开发(尤其是良好的测试)更加容易。此外,它还具有难以置信的快速性和可靠性。

如果您只需要读访问,那么H2就可以

同样,如果您不需要持久性,也可以使用仅内存版本的H2


如果您同时需要读/写访问和持久性,那么使用标准SQL类型的数据库可能不太走运,因为这些数据库几乎都统一地分别维护索引和数据文件。

H2仅使用一个文件,如果您使用最新的H2版本和PAGE\u STORE选项。这是一项新功能,因此可能不可靠。

我认为现在我将继续使用HDF5进行持久数据存储,与H2或其他数据库一起进行内存索引。我无法让SQLite在我拥有的Java驱动程序中使用BLOB,也无法让嵌入式Firebird启动并运行,而且我还不相信H2与PAGE_STORE的关系。

您可能想看看-我们在几个项目中使用它,而且速度相当快。如果您将其用于ACID类型的应用程序,它确实会使用2个文件(一个数据库文件和一个日志文件),但如果您不需要固体ACID,则可以直接访问直接数据库(无日志文件)

JDBM将很容易地支持整数和BLOB(任何您想要的),并且速度相当快。它不是为并发而设计的,因此如果有多个线程,您必须自己管理锁定,但是如果您正在寻找一个简单、可靠的嵌入式数据库,它是一个不错的选择。

是一个嵌入式纯Java数据库

  • 它将数据存储在一个文件中,即。e

    ChronicleMap<Integer, String> map = ChronicleMap
        .of(Integer.class, String.class)
        .averageValue("my-value")
        .entries(10_000)
        .createPersistedTo(databaseFile);
    
    chronicmap-map=chronicmap
    .of(Integer.class、String.class)
    .averageValue(“我的价值”)
    .参赛作品(万份)
    .createPersistedTo(数据库文件);
    
  • 编年史地图已经成熟(在它处于活动使用状态的几个月内,没有严重的存储错误报告)

  • Idependent基准测试表明,编年史映射是Java的关键和关键值存储

您的用例的主要缺点是,编年史地图只支持一个简单的键值模型,但是可以在此基础上构建更复杂的解决方案

免责声明:我是编年史地图的开发者。

NOsql对象(no2a.k.a)数据库是一个开源的NOsql 使用类似MongoDB的API用Java编写的嵌入式文档存储。信息技术 支持内存和基于单个文件的持久存储


你试过ApacheDerby/JavaDB吗?我不知道它是如何在后台存储数据的,但这是另一件你可以看到的事情。Firebird绝对满足了相当快的要求。:)尝试+1:提到db4o,因为如果您没有使用Jaybird驱动程序,我会发布它。apachederby现在是javadb。因此,它有很好的文档记录和支持,并且可能随IDE一起提供。有一段有趣的历史:Jan Kotek——后来的jdbm贡献者之一,但肯定不是最初的作者——将该项目分叉到mapdb中,并用它做了一些惊人的工作。mapdb已经不再像jdbm那么遥远了——它在任何方面都比jdbm好,Jan继续给人留下深刻印象。值得一看。