Новый HSQLDB подвержен повреждению данных?
Я хочу использовать встроенные таблицы на основе файлов HSQLDB в моей производственной системе, но я слышал, что раньше у нее были некоторые проблемы с повреждением данных. Поэтому мой вопрос - уязвимы ли его новые версии (2.2.8) к проблемам с повреждением данных, например, когда машина потеряла питание или был остановлен процесс Java? И есть ли варианты конфигурации, которые помогут избежать этого?
2 ответа
HSQLDB предназначен для восстановления базы данных после сбоя компьютера или Java-процесса.
С годами упорство улучшилось. В настоящее время нет известных проблем. При настройках по умолчанию в случае сбоя вы можете потерять только те изменения, которые были внесены в базу данных за последние полсекунды. И вы можете уменьшить это до нуля, если хотите.
В любом случае, для большей безопасности рекомендуется использовать встроенные функции резервного копирования базы данных. HSQLDB опирается на JVM fsync() и другие методы, которые взаимодействуют с ОС. Они, как правило, надежны, но могут показывать сбой в какой-то момент.
Да, hsqldb может повредить данные даже без внезапно умирающего процесса. Будьте готовы построить систему автоматического резервного копирования / восстановления, а иногда и инструменты для исправления поврежденных данных.
Мой опыт работы с HSQL:
- Неуникальные значения в столбце устанавливаются как уникальные. (hsql 1.8).
- Повреждены все не-ascii символы во всех столбцах varchar (hsql 2. что-то, если память служит).
- Повреждены все значения во всех столбцах меток времени. (последние hsql)
Тем не менее, это довольно хорошая база данных большую часть времени. Если вы присматриваете за ребенком только один или два раза, вы вряд ли столкнетесь с проблемами коррупции.