Действительно ли я являюсь сумасшедшим? Переключение признанного продукта от HSQLDB до Derby Apache

У меня есть установленный программный продукт, который использует HSQLDB в качестве его внутренней базы данных настроек. Клиентские проекты хранятся в этой базе данных. За эти годы HSQLDB служил нам обоснованно хорошо, но он имеет некоторые проблемы устойчивости/повреждения, что мы должны были кодировать круги вокруг, и даже затем, мы, может казаться, не защищаем нас от них полностью.

Я рассматриваю изменяющиеся внутренние базы данных. Выполнение этого было бы довольно болезненным от ракурса разработки, но поврежденные базы данных (и потерянные данные) не являются забавой объяснить клиентам.

Таким образом, мой вопрос: у кого-либо есть достаточно опыта высказать мнение о долгосрочной устойчивости Derby Apache? Я нашел сообщение через Google, жалуясь, что Derby был нестабилен, но это было с 2006, таким образом, я развлеку идею, что это было улучшено за прошлые 4 года. Или, есть ли встроенная (незавершенная) база данных другого чистого Java, которую я мог использовать (коммерческий или с открытым исходным кодом). Производительность не очень важна для меня. Устойчивость является королем. Целостность данных через потери мощности, хорошую поддержку BLOB и горячее резервное копирование - все необходимость.

Не предлагайте что-то, что не является основанной на SQL реляционной базой данных. Я пытаюсь модифицировать существующий продукт, не запускаются с нуля, спасибо.

22
задан CarlG 29 June 2010 в 20:53
поделиться

5 ответов

Есть ли у кого-нибудь достаточно опыта, чтобы взвесить -временная стабильность Apache Derby? (...)

Derby, ex IBM Cloudscape (и теперь также распространяемая Sun как JavaDB) - это ACID-совместимая база данных, которая может поддерживать множество одновременных пользователей, работающих в режиме встроенного или в серверном режиме, и, как известно, прочный и готовый к производству. Он не такой быстрый, как HSQLDB (Derby использует надежные операции), но он надежен. Тем не менее, вы должны провести свои собственные тесты.

См. Также

7
ответ дан 29 November 2019 в 04:04
поделиться

Я использовал Derby 24/7 как внутреннюю базу данных, поддерживающую систему автоматизации сборки и управления тестированием в течение 4 лет. Он использовался всемирной командой и никогда не ломался, не терял данные и не повреждал мои записи. Единственная причина, по которой мы перестали его использовать, заключается в том, что нашу компанию купил другой и было принято решение на более высоком уровне. Дерби прочный, надежный и заслуживает вашего внимания.

12
ответ дан 29 November 2019 в 04:04
поделиться

Попробуйте найти H2 . Он был создан парнем, который изначально создал HSQLDB, но построен с нуля, поэтому не использует никакого кода HSQLDB. Не уверен, насколько его стабильность сравнивается с HSQL, поскольку я не использовал HSQL много лет, а в настоящее время я использую H2 только для короткоживущих баз данных. Я лично обнаружил, что с H2 легче начать, чем с Derby, но, возможно, это потому, что у H2 есть шпаргалка.

Возможно, можно будет перекодировать код для использования уровня абстракции, а затем запустить тесты для сравнения H2 и Derby с обнаруженными вами проблемами.

Что касается управления проектами, есть ли у вашей дорожной карты основная версия? Возможно, сейчас самое подходящее время, чтобы вырвать кишки таким образом, и я бы не сказал, что вы сошли с ума, потому что это потенциально может избавить от многих трудностей, с которыми приходится справляться. Если вы хотите внести изменения, которые могут повлиять на живые системы без предупреждений и резервных копий, вы можете сошли с ума.

3
ответ дан 29 November 2019 в 04:04
поделиться

Для каждого ядра базы данных существует определенный риск повреждения. Я являюсь основным автором базы данных H2, и мне также приходили сообщения о неработающих базах данных. Тестирование может снизить вероятность ошибок, но, к сожалению, практически невозможно гарантировать, что какое-то программное обеспечение «не содержит ошибок».

Что касается трех баз данных Java: HSQLDB, Apache Derby и H2, я не могу сказать, какая из них наиболее стабильна. Я могу говорить только о Н2. Я думаю, что для большинства операций H2 теперь стабилен. Существует множество тестовых примеров, специально предназначенных для проверки повреждения баз данных. Это включает в себя автоматические тесты на потерю мощности (с использованием таймера рождественского света). С помощью тестов на сбой питания я обнаружил, что стабильность также зависит от файловой системы: иногда я получал сообщения об ошибке CRC, означающие, что операционная система не может прочитать файл (это была Windows). В таком случае вы мало что можете сделать.

Что касается критически важных данных, в любом случае я бы не стал полагаться на стабильность программного обеспечения. Очень важно регулярно создавать резервные копии и тестировать их. У некоторых баз данных есть несколько способов создания резервных копий. H2, например, имеет функцию онлайн-резервного копирования и функцию записи файла сценария SQL. Альтернативой является использование репликации или кластеризации. H2 поддерживает простой кластерный режим, я считаю, что Derby поддерживает репликацию.

19
ответ дан 29 November 2019 в 04:04
поделиться

Этот поиск показывает 215 сообщений в списке рассылки HSQLDB Users, содержащих строку "corrupt". http://search.gmane.org/?query=corrupt&author=&group=gmane.comp.java.hsqldb.user&sort=date&DEFAULTOP=and&xP=Zcorrupt&xFILTERS=Gcomp.java.hsqldb.user---A

Этот поиск показывает 264 сообщения в списке рассылки пользователей Derby, содержащих ту же строку. http://search.gmane.org/?query=corrupt&author=&group=gmane.comp.apache.db.derby.user&sort=date&DEFAULTOP=and&xP=Zcorrupt&xFILTERS=Gcomp.apache.db.derby.user---A

Этот поиск показывает 1003 сообщения в списке рассылки Derby Dev с той же строкой http://search.gmane.org/?query=corrupt&author=&group=gmane.comp.apache.db.derby.devel&sort=date&DEFAULTOP=and&xP=Zcorrupt&xFILTERS=Gcomp.apache.db.derby.devel---A

Просмотр некоторых сообщений показывает возможные или реальные случаи повреждения баз данных, которые происходят, несмотря на все усилия разработчиков баз данных.

У HSQLDB была своя доля проблем с повреждением баз данных, но с годами она улучшилась. В последних версиях были введены меры предосторожности и исправления для предотвращения всех проблем, о которых сообщалось в последние несколько лет.

Новая функция хранения лобов, однако, оказалась с логической ошибкой, в результате которой лобы "забываются" после обновления. В настоящее время эта проблема исправляется, а для ее устранения проводятся более тщательные тесты.

Такие пользователи, как CarlG, очень помогли за эти годы в исправлении ошибок как в Derby, так и в HSQLDB.

Фред Тусси, проект HSQLDB

7
ответ дан 29 November 2019 в 04:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: