Существуют ли базы данных действительно долговечные?
Я читал http://www.h2database.com/html/advanced.html и нашел
Некоторые базы данных утверждают, что они могут гарантировать долговечность, но такие утверждения неверны. Был проведен тест на долговечность для H2, HSQLDB, PostgreSQL и Derby. Все эти базы данных иногда теряют совершенные транзакции. Тест включен в загрузку H2, см. Org.h2.test.poweroff.Test
Также это говорит
Если проигрышные транзакции неприемлемы, следует использовать ноутбук или ИБП (источник бесперебойного питания).
Так есть ли база данных, которая долговечна. В документе говорится о команде fsync(), и большинство жестких дисков не подчиняются функции fsync(). Это также говорит об отсутствии надежного способа очистки буферов жесткого диска.
Итак, есть ли время, после которого совершенная транзакция становится долговременной, поэтому мы можем покупать скупки, которые дают минимум резервной копии источника питания.
Также есть способ узнать, что совершенная транзакция является долговременной. Предположим, что мы не покупаем взлеты, и, зная, что транзакция длительная, мы можем показать сообщение об успехе.
1 ответ
Проблема зависит от того, можете ли вы дать HDD/SDD команду фиксировать транзакции на надежные носители. Если запоминающее устройство не имеет возможности для очистки на долговечные носители, то нельзя сказать, что никакая система хранения данных на самом деле надежна.
Однако существует множество NAS-устройств со встроенными ИБП, и они, похоже, соответствуют требованиям к долговечным носителям - если база данных на отдельном сервере передает данные на это устройство и делает контрольную точку, то фиксации сбрасываются на носитель. Пока СМИ переживают перебои в подаче электроэнергии, вы можете сказать, что они долговечны. ИБП на NAS должен быть способен выдавать контролируемое отключение на связанный с ним пакет дисков, гарантируя постоянство.
В качестве альтернативы вы можете использовать что-то вроде SQL Azure, который записывает коммиты в несколько (3) отдельных экземпляров хранилища базы данных на разных серверах. Хотя мы не знаем, достигнут ли когда-нибудь эти записи постоянный носитель, на самом деле это не имеет значения - измерение долговечности - это повторяемость чтения; и это, кажется, соответствует этому требованию.