У меня есть установленный программный продукт, который использует HSQLDB в качестве его внутренней базы данных настроек. Клиентские проекты хранятся в этой базе данных. За эти годы HSQLDB служил нам обоснованно хорошо, но он имеет некоторые проблемы устойчивости/повреждения, что мы должны были кодировать круги вокруг, и даже затем, мы, может казаться, не защищаем нас от них полностью.
Я рассматриваю изменяющиеся внутренние базы данных. Выполнение этого было бы довольно болезненным от ракурса разработки, но поврежденные базы данных (и потерянные данные) не являются забавой объяснить клиентам.
Таким образом, мой вопрос: у кого-либо есть достаточно опыта высказать мнение о долгосрочной устойчивости Derby Apache? Я нашел сообщение через Google, жалуясь, что Derby был нестабилен, но это было с 2006, таким образом, я развлеку идею, что это было улучшено за прошлые 4 года. Или, есть ли встроенная (незавершенная) база данных другого чистого Java, которую я мог использовать (коммерческий или с открытым исходным кодом). Производительность не очень важна для меня. Устойчивость является королем. Целостность данных через потери мощности, хорошую поддержку BLOB и горячее резервное копирование - все необходимость.
Не предлагайте что-то, что не является основанной на SQL реляционной базой данных. Я пытаюсь модифицировать существующий продукт, не запускаются с нуля, спасибо.
Есть ли у кого-нибудь достаточно опыта, чтобы взвесить -временная стабильность Apache Derby? (...)
Derby, ex IBM Cloudscape (и теперь также распространяемая Sun как JavaDB) - это ACID-совместимая база данных, которая может поддерживать множество одновременных пользователей, работающих в режиме встроенного или в серверном режиме, и, как известно, прочный и готовый к производству. Он не такой быстрый, как HSQLDB (Derby использует надежные операции), но он надежен. Тем не менее, вы должны провести свои собственные тесты.
Я использовал Derby 24/7 как внутреннюю базу данных, поддерживающую систему автоматизации сборки и управления тестированием в течение 4 лет. Он использовался всемирной командой и никогда не ломался, не терял данные и не повреждал мои записи. Единственная причина, по которой мы перестали его использовать, заключается в том, что нашу компанию купил другой и было принято решение на более высоком уровне. Дерби прочный, надежный и заслуживает вашего внимания.
Попробуйте найти H2 . Он был создан парнем, который изначально создал HSQLDB, но построен с нуля, поэтому не использует никакого кода HSQLDB. Не уверен, насколько его стабильность сравнивается с HSQL, поскольку я не использовал HSQL много лет, а в настоящее время я использую H2 только для короткоживущих баз данных. Я лично обнаружил, что с H2 легче начать, чем с Derby, но, возможно, это потому, что у H2 есть шпаргалка.
Возможно, можно будет перекодировать код для использования уровня абстракции, а затем запустить тесты для сравнения H2 и Derby с обнаруженными вами проблемами.
Что касается управления проектами, есть ли у вашей дорожной карты основная версия? Возможно, сейчас самое подходящее время, чтобы вырвать кишки таким образом, и я бы не сказал, что вы сошли с ума, потому что это потенциально может избавить от многих трудностей, с которыми приходится справляться. Если вы хотите внести изменения, которые могут повлиять на живые системы без предупреждений и резервных копий, вы можете сошли с ума.
Для каждого ядра базы данных существует определенный риск повреждения. Я являюсь основным автором базы данных H2, и мне также приходили сообщения о неработающих базах данных. Тестирование может снизить вероятность ошибок, но, к сожалению, практически невозможно гарантировать, что какое-то программное обеспечение «не содержит ошибок».
Что касается трех баз данных Java: HSQLDB, Apache Derby и H2, я не могу сказать, какая из них наиболее стабильна. Я могу говорить только о Н2. Я думаю, что для большинства операций H2 теперь стабилен. Существует множество тестовых примеров, специально предназначенных для проверки повреждения баз данных. Это включает в себя автоматические тесты на потерю мощности (с использованием таймера рождественского света). С помощью тестов на сбой питания я обнаружил, что стабильность также зависит от файловой системы: иногда я получал сообщения об ошибке CRC, означающие, что операционная система не может прочитать файл (это была Windows). В таком случае вы мало что можете сделать.
Что касается критически важных данных, в любом случае я бы не стал полагаться на стабильность программного обеспечения. Очень важно регулярно создавать резервные копии и тестировать их. У некоторых баз данных есть несколько способов создания резервных копий. H2, например, имеет функцию онлайн-резервного копирования и функцию записи файла сценария SQL. Альтернативой является использование репликации или кластеризации. H2 поддерживает простой кластерный режим, я считаю, что Derby поддерживает репликацию.
Этот поиск показывает 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