插入,删除(快速)blob嵌入式java数据库

时间:2011-11-30 11:15:02

标签: java database performance blob

我正在搜索可以处理大型blob对象(最多几GB)的嵌入式本机Java数据库(我不能使用进程外数据库)。我已经尝试了H2,但是在删除大blob时这非常慢。当然这是因为它必须维护/重建单个数据库文件。

是否有任何数据库可以让我快速插入和删除blob?

更新:我最终没有使用数据库。相反,我创建了一个字节存储,将字节附加到打开的文件流,并将文件名,偏移量,长度存储在数据库中。未附加大blob但存储为独立文件。这是获得良好表现的唯一途径。删除操作只适用于大blob,不需要它用于小blob,大小无关紧要(我的阈值是100 KB)

3 个答案:

答案 0 :(得分:0)

您可以尝试JavaDB,这基本上是Apache Derby数据库。我认为它从版本6开始附带Java。 CLOB和BLOB限制为2 GB,不知道这是否适合您。

答案 1 :(得分:0)

  

是否有任何数据库可以让我快速插入和删除blob?

如果H2不起作用,那么您可以尝试DerbySQLite,但无法保证它们会更好地执行。我认为你应该考虑重新设计你的项目。以这种方式存储大型blob对象的效率非常低。

我会考虑使用其他一些机制来保存文件并在数据库中存储文件的路径或ID。您提到您有理由不使用文件系统。如果您编辑问题以解释完全使用数据库的原因,那么我/我们可以回应更好的建议替代方案。

答案 2 :(得分:0)

它是否需要是纯Java数据库,还是使用本机库的数据库/ JDBC驱动程序?如果是这样,您可以查看Firebird EmbeddedJaybird

免责声明:我是Jaybird

的开发者之一