Класс std_file_committer_t

#include <std_file_committer.hpp>

Граф наследования:std_file_committer_t:

committer_t snapshot_file_committer_t Полный список членов класса

Подробное описание

Реализация committer_t, которая записывает все восстановленые страницы БД в новый файл.

Начиная с:
v.1.4.0
В методе detect_nonactual_traces() оставляет в исходном можестве trace-файлов те trace-файлы, которые вошли в актуальный snapshot. Если актуального snapshot-а нет, то полностью очищает исходное множество (т.е. все trace-файлы считаются актуальными).

В методе initialize() создает новый файл нужного размера с нулевым содержимым. Если существует актуальный snapshot, то первоначальное содержимое временного файла берется из актуального snapshot-а и только отсутствующие в snapshot-е страницы заполняются нулевыми значениями.

В методе finalize() переименовывает получившийся файл под именем основного файла БД.

Если вызова finalize() не было (т.е. восстановление завершилось неудачно), то удаляет временный файл в деструкторе.

Метод is_insufficient_trace_info_allowed() возвращает true, если при восстановлении был задействован актуальный snapshot-файл.


Открытые члены

 std_file_committer_t (const std::string &physic_name)
 Инициализирующий конструктор.
const std::string & physic_name () const
 Получить физической имя БД с которой ведется работа.
void set_result_file_name (const std::string &file_name)
 обратного воспроизведения.
Реализация унаследованных методов.
virtual void detect_nonactual_traces (trace_file_number_set_t &traces)
virtual void initialize (oess_1::uint_t total_page_count, oess_1::uint_t page_size, oess_1::uint_t block_size)
virtual void finalize ()
virtual void store_block (oess_1::uint_t ordinal, oess_1::uint_t block_index, const std::string &block_value)
virtual bool is_insufficient_trace_info_allowed () const

Закрытые члены

std::string make_tmp_file_name (const std::string &physic_name)
 восстанавливаемого значения.

Закрытые данные

std::string m_physic_name
 Физическое имя восстанавливаемой БД.
std::auto_ptr< snapshot_collection_tm_snapshots
 Коллекция snapshot-ов, которая относиться к данной БД.
oess_1::file::file_t m_file
 Файл для сохранения значения БД.
bool m_is_file_exists
 Признак того, что файл должен быть уничтожен в деструкторе.
oess_1::uint_t m_page_size
 Размер одной страницы основного файла в байтах.
std::vector< oess_1::char_tm_io_buf
 Буфер для ввода/вывода в методе store_block.
std::string m_result_file_name
 успешного завершения процедуры обратного воспроизведения.


Конструктор(ы)

std_file_committer_t ( const std::string &  physic_name  ) 

Инициализирующий конструктор.

Аргументы:
physic_name  Физическое имя восстанавливаемой БД.


Методы

void detect_nonactual_traces ( trace_file_number_set_t traces  )  [virtual]

Вызывается объектом trace_stream_t перед методом initialize() для того, чтобы определить точное множество trace-файлов для обратного воспроизведения. Если для БД поддерживались snapshot-ы, то часть trace-файлов можно будет проигнорировать т.к. их содержимое уже есть в snapshot-е. Но trace_stream_t не знает про существование snapshot-ов и о том, нужны ли они данному committer-у. Поэтому выбор конкретного подмножества trace-файлов для воспроизведения перекладывается на committer. Для этого trace_stream_t обращается к методу detect_nonactual_traces() и передает все множество найденых trace-файлов. Committer должен вычеркнуть из этого множества все trace-файлы, которые являются актуальными. В результате должно быть получено множество не актуальных trace-файлов, который безопасно могут быть проигнорированны. Если же все trace-файлы являются актуальными, то в итоге должно получиться пустое множество.

trace_stream_t передает в traces не все множество trace-файлов, а только те trace-файлы, актуальность который trace_stream_t не может проверить самостоятельно. Так, trace_stream_t точно знает номера trace-файлов, в которых содержится самая последняя транзакция (таких файлов может быть несколько). Поэтому на вход detect_nonactual_traces() может быть подано пустое множество.

Замещает committer_t.

Переопределяется в snapshot_file_committer_t.

void finalize (  )  [virtual]

Вызывается объектом trace_stream_t после завершения успешного восстановления БД.

Замещает committer_t.

void initialize ( oess_1::uint_t  total_page_count,
oess_1::uint_t  page_size,
oess_1::uint_t  block_size 
) [virtual]

Заметки:
Значение total_page_count не может быть нулевым!

Замещает committer_t.

bool is_insufficient_trace_info_allowed (  )  const [virtual]

Должен возвращать true, если ситуация, когда в актуальном можестве trace-файлов (возвращаемом методом reduce_traces_set()) допускается отсутствие полной информации о содержимом БД. Например, если для восстановления БД кроме trace-файлов используются еще и snapshot-ы, то части trace-файлов (которые были сохранены в snapshot-е) может просто не быть. В этом случае процедура обратного восспроизведения определит, что восстановочной информации недостаточно (т.к. она не знает про существование snapshot-ов). trace_stream_t вызовет данный метод и, если метод, возвратит false, то trace_stream_t породит исключение о недостаточности восстановочной информации. Если же данный метод возвратит true, то процедура обратного воспроизведения будет считаться успешно завершенной.

Замещает committer_t.

std::string make_tmp_file_name ( const std::string &  physic_name  )  [private]

восстанавливаемого значения.

Аргументы:
physic_name  Физическое имя восстанавливаемой БД.

void store_block ( oess_1::uint_t  ordinal,
oess_1::uint_t  block_index,
const std::string &  block_value 
) [virtual]

Вызвается объектом trace_stream_t при необходимости сохранения значения фрагмента страницы в восстанавливаемом основном файле.

Размер блока задается в методе initialize().

Заметки:
Не гарантируется, что при воспроизведении trace-файла страницы будут отдаваться committer-у в порядке возрастания их номеров. Например, вместо 0-й страницы committer-у может быть передана страница 12034. Committer сам должен определить, что такой страницы еще нет и что нужно заполнить предшествующие 12033 страницы нулевыми значениями. Так же не гарантируется, что фрагменты будут восстанавливаться в порядке возрастания их индексов на странице.

Замещает committer_t.


Данные класса

bool m_is_file_exists [private]

Признак того, что файл должен быть уничтожен в деструкторе.

Выставляется в initialize(), если файл был успешно открыт.

Сбрасывается в finalize(), если файл был успешно переименован.

oess_1::uint_t m_page_size [private]

Размер одной страницы основного файла в байтах.

Выставляется в initialize().

std::string m_result_file_name [private]

успешного завершения процедуры обратного воспроизведения.

По умолчанию имеет значение имени основного файла БД.


Объявления и описания членов классов находятся в файлах:
Документация по ObjESSty. Последние изменения: Fri Oct 13 18:35:39 2006. Создано системой  doxygen 1.4.7
Hosted by uCoz