Вставить, удалить (быстро) blob встроенную базу данных Java

Я ищу встроенную собственную базу данных Java (я не могу использовать базу данных вне процесса), которая может обрабатывать большие объекты blob (до нескольких ГБ). Я пробовал H2, но он очень медленный при удалении больших BLOB-объектов. Конечно, это потому, что он должен поддерживать/перестраивать один файл базы данных.

Существуют ли какие-либо базы данных, которые дадут мне быструю вставку и удаление с помощью больших двоичных объектов?

Обновление: в итоге я не использовал базу данных. Вместо этого я создал хранилище байтов, добавляя байты к открытому файловому потоку и сохраняя имя файла, смещение, длину в базе данных. Большие BLOB-объекты не добавлялись, а сохранялись как независимые файлы. Это был единственный способ добиться хороших результатов. Операции удаления будут работать только с большими BLOB-объектами, для маленьких BLOB-объектов это не требуется, размер незначителен (мой порог составляет 100 КБ).


person Stig    schedule 30.11.2011    source источник
comment
Другими вариантами являются Apache Derby и HSQLDB. Вы их пробовали?   -  person a_horse_with_no_name    schedule 30.11.2011
comment
BLOB-объекты никогда не должны храниться ни в каких базах данных, они должны храниться только в вашей файловой системе.   -  person Maurício Linhares    schedule 30.11.2011
comment
Я не пробовал никакой другой. У меня есть причина не использовать файловую систему.   -  person Stig    schedule 30.11.2011
comment
@MaurícioLinhares: это не глобальное правило. Существуют веские причины (и преимущества) для хранения больших двоичных объектов в базе данных.   -  person a_horse_with_no_name    schedule 30.11.2011
comment
@Stig, I have a reason to not use the filesystem Я подозреваю, что ты нам не рассказываешь что-то важное. ;) Какова причина?   -  person Peter Lawrey    schedule 30.11.2011
comment
Мне нужно хранить файлы/пути из разных ОС, и я не хочу никаких проблем с конкретными ограничениями ОС в файловой системе.   -  person Stig    schedule 11.12.2011


Ответы (3)


Существуют ли какие-либо базы данных, которые дадут мне быструю вставку и удаление с помощью больших двоичных объектов?

Если H2 не сработал, вы можете попробовать Derby или SQLite, но нет никакой гарантии, что они будут работать лучше. Я думаю, вам следует подумать о перепроектировании вашего проекта. Хранение больших BLOB-объектов таким образом очень неэффективно.

Я бы подумал об использовании какого-либо другого механизма для сохранения файлов и сохранения пути или идентификатора файла в базе данных. Вы упомянули, что у вас есть причины не использовать файловую систему. Если вы отредактируете свой вопрос, чтобы объяснить причины, по которым вы полностью используете базу данных, я / мы можем ответить, чтобы предложить лучшие альтернативы.

person Gray    schedule 30.11.2011

Вы можете попробовать JavaDB, которая по сути представляет собой базу данных Apache Derby. Я думаю, он поставляется с Java с версии 6. CLOB и BLOB ограничены 2 ГБ, не знаю, подойдет ли это вам.

person pushy    schedule 30.11.2011

Должна ли это быть чистая база данных Java, или также разрешен драйвер базы данных/JDBC, использующий собственную библиотеку? Если это так, вы можете посмотреть на Firebird Embedded и Jaybird.

Отказ от ответственности: я являюсь одним из разработчиков Jaybird

person Mark Rotteveel    schedule 30.11.2011