The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Вышла СУБД Firebird 3.0.2 с устранением опасной уязвимости"
Отправлено Аноним, 27-Мрт-17 15:17 
>Как то за десять лет администрирования ни разу не видел подобного

Это твои личные трудности. Объясняю на пальцах. Современный журнал это не просто один файл. Это _система_, которая может работать с файлами, а может и не работать с ними, например, журнал может быть в ОЗУ.

Журнальные файлы могут работать в режиме round-bobbin, в таком режиме транзакции пишутся по очереди, сначала в один файл, затем в другой, затем в третий, потом снова в первый. Альтернативно, журнальные файлы могут работать в режиме контрольных точек, в таком случае, в зависимости от левой пятки DBA, один (или несколько) файлов находятся в режиме RW, а остальные в RDONLY (они даже могут быть не открыты БД). И в том и другом случае обеспечивается определенный уровень надежности от сбоя -- откат произведется на самую последнюю верную транзакцию.

Поверх этого, накручивается система сжатия и архивирования журнальных файлов, т.е. посути 2й вариант выше, но предназначен для копирования журнальных файлов на внешние хосты (сервера) или внешние устройства (флешки, ленты и т.п.).

Журнальные файлы и их архивы активно применяются в современных БД по еще одной важной причине: в то время как файл БД может быть невероятно огромным, журнальные файлы (особенно в сжатом виде) весят _намного_ меньше. Стандартной практикой является фуллбэкап раз в 7-30 дней, а бэкапы журналов могут быть хоть по-часовыми (зависит от кол-ва коммитов).

Итого, сам смысл журнала никуда не девается. Это промежуточное звено между началом коммита и конечной записи его в файл БД. На основе расхождений данных и обеспечивается защита от сбоев (не 100%, т.к. диск может рассыпаться ... и без возможности восстановления). Другие технологии вроде полного бэкапа, UPS, рейды и т.п. решают _совершенно_ иные задачи (хоть и имеющие общую цель -- снизить риск утери _всех_ данных).

Поэтому, твой довод про то, что БД работает на файловом уровне не верен в корне. Если бы БД работала в raw-режиме, то ее не спасет тот же самый ресет, т.к. атомарность записи на диск не зависит от того как работает БД, а зависит от кол-ва данных, которые содержаться в транзакции. Тут-то и проявляется некомпетентность, т.к. считать что одна транзакция есть один insert это все что нужно. В сложных системах происходит десятки или даже сотни insert'ов в _одной_ транзакции. И если такая транзакция накроется, то и все insert'ы не попадут в файл БД и все будет тип-топ (т.е. не надо "до-инсерчивать" потерянные инсерты, как было бы в случае одиночных коммит=insert'ов).

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру