Классы | |
class | chain_ostream_t |
Выходной поток, который скрывает в себе детали распределения образа транзакции по страницам trace-файла. Подробнее... | |
class | last_trx_only_chain_ostream_t |
Выходной поток, который сохраняет в себе только описание последней транзакции. Подробнее... | |
class | reverse_loader_t |
Класс для чтения транзакций из trace-stream в обратном порядке. Подробнее... | |
class | end_of_trace_ex_t |
Достигнут конец всего trace-потока. Подробнее... | |
class | broken_page_ex_t |
Из trace-файла извлечена поврежденная страница. Подробнее... | |
class | broken_trx_ex_t |
Из trace-потока извлечена поврежденная транзакция. Подробнее... | |
class | replay_completion_map_t |
Битовая карта для определения уже восстановленных фрагментов основного файла. Подробнее... | |
class | replay_context_t |
Контекст, в котором осуществляется обратный просмотр. Подробнее... | |
class | trx_page_delta_processor_t |
class | trx_page_processor_t |
Константы, которые определяют расположение отдельных | |
полей в заголовке страницы. | |
const oess_1::uint_t | checksum_field_offset = 0 |
Смещение, с которого начинается контрольная сумма. | |
const oess_1::uint_t | checksum_field_size |
Длина контрольной суммы. | |
const oess_1::uint_t | header_field_offset = checksum_field_size |
Смещение, с которого начинается сам заголовок. | |
const oess_1::uint_t | header_field_size |
Длина заголовка. | |
const oess_1::uint_t | data_field_offset |
Смещение, с которого начинаются данные на странице. | |
Функции | |
oess_1::uint_t | calc_checksum (const oess_1::char_t *what, oess_1::uint_t size) |
Вспомогательная функция для вычисления контрольной суммы. | |
void | create_trace_file (const std::string &physic_name, oess_1::uint_t file_ordinal) |
Создает новый, пустой trace-файл. | |
void | destroy_trace_files (const std::string &physic_name, const trace_file_number_set_t &all_traces, std::string &errors) |
Удаляет указанные trace-файлы. | |
err_code_t | check_trace_file_count (const trace_mode_t &trace_mode, const trace_file_number_set_t &traces) |
Проверяет состав trace-файлов для указанного режима. | |
void | initialize_compression (const config_t &config) |
void | use_zlib_compression (const oess_1::char_t *what, oess_1::uint_t uncompressed_size, std::vector< char_t > &compressed_data, oess_1::uint_t &compressed_size) |
void | serialize_item (const trace_stream_item_t &item, const trace_compression_mode_t &required_compression_mode, oess_1::io::mem_buf_t &result_receiver) |
Сериализовать объект trace_stream_image_t и получить двоичный образ транзакции для сохранения в trace-stream. | |
void | unpack_all_zlib_compressed (const oess_1::char_t *image, oess_1::uint_t compressed_size, oess_1::uint_t uncompressed_size, trace_stream_item_t &item) |
Десериализовать объект trace_stream_image_t из заархивированного в режиме all_zlib_compressed образа. | |
void | deserialize_item (const oess_1::char_t *image, oess_1::uint_t image_len, trace_stream_item_t &item) |
static void | do_recover_db_with_damaged_last_trx (committer_t &committer, const config_t &config) |
Выполнить восстановление БД, которая находится в режиме trace_last и при этом trace-файл с последней транзакцией поврежден. | |
static bool | process_trx (const trace_stream_item_t &trx, replay_context_t &ctx) |
Обработать очередную транзакцию. | |
static void | calc_used_unused_traces (const trace_file_number_set_t &all_traces, const trace_file_number_set_t &all_used_traces, trace_file_number_set_t *used_traces, trace_file_number_set_t *unused_traces) |
Формирует можества актуальных и не актуальных trace-файлов. | |
static void | do_normal_recover (const std::string &physic_name, const config_t &config, const trace_file_number_set_t &all_traces, committer_t &committer, trace_file_number_set_t *used_traces, trace_file_number_set_t *unused_traces, std::ostream *verbose_stream, reverse_loader_t &loader, trace_file_number_set_t &trx_used_traces, const oess_1::char_t *image, oess_1::uint_t image_len) |
Выполнить обычное восстановление БД, которая находится в режиме trace_all. | |
static void | do_reverse_replay (const std::string &physic_name, const config_t &config, const trace_file_number_set_t &all_traces, committer_t &committer, trace_file_number_set_t *used_traces, trace_file_number_set_t *unused_traces, std::ostream *verbose_stream) |
Реализация восстановления основного файла БД путем обратного воспроизведения trace-stream. |
oess_1::uint_t oess_1::db::storage::trx::impl::calc_checksum | ( | const oess_1::char_t * | what, | |
oess_1::uint_t | size | |||
) |
Вспомогательная функция для вычисления контрольной суммы.
what | Данные, над которыми нужно проводить вычисления. |
size | Объем данных. |
void oess_1::db::storage::trx::impl::create_trace_file | ( | const std::string & | physic_name, | |
oess_1::uint_t | file_ordinal | |||
) |
Создает новый, пустой trace-файл.
physic_name | Физической имя БД для которой нужно определить имя trace-файла. |
file_ordinal | Порядковый номер trace-файла. |
void oess_1::db::storage::trx::impl::destroy_trace_files | ( | const std::string & | physic_name, | |
const trace_file_number_set_t & | all_traces, | |||
std::string & | errors | |||
) |
Удаляет указанные trace-файлы.
physic_name | Физическое имя БД с которой происходит работа. |
all_traces | Номера trace-файлов для удаления. |
errors | Приемник описаний перехваченных в процессе работы исключений. |
err_code_t oess_1::db::storage::trx::impl::check_trace_file_count | ( | const trace_mode_t & | trace_mode, | |
const trace_file_number_set_t & | traces | |||
) |
Проверяет состав trace-файлов для указанного режима.
trace_mode | Режим сохранения восстановочной информации для проверяемой БД. |
traces | Состав trace-файлов для этой БД. |
void oess_1::db::storage::trx::impl::initialize_compression | ( | const config_t & | config | ) |
Проверить, какой режим компрессии должен использоваться и, если необходимо выполнить инициализацию соответствующей библиотеки.
void oess_1::db::storage::trx::impl::use_zlib_compression | ( | const oess_1::char_t * | what, | |
oess_1::uint_t | uncompressed_size, | |||
std::vector< char_t > & | compressed_data, | |||
oess_1::uint_t & | compressed_size | |||
) |
what | Что архивировать. |
uncompressed_size | Исходный размер. |
compressed_data | Приемник результата. |
compressed_size | Приемник размера результата. |
void oess_1::db::storage::trx::impl::serialize_item | ( | const trace_stream_item_t & | item, | |
const trace_compression_mode_t & | required_compression_mode, | |||
oess_1::io::mem_buf_t & | result_receiver | |||
) |
Сериализовать объект trace_stream_image_t и получить двоичный образ транзакции для сохранения в trace-stream.
Осуществляется попытка применения метода компрессии all_zlib_compressed. Если результат получается меньше длины исходного образа, то сериализуется сжатый образ. В противном случае сериализуется исходный образ.
item | Образ транзакции. |
required_compression_mode | Режим компрессии, который нужно использовать. |
result_receiver | Приемник результирующего образа. |
void oess_1::db::storage::trx::impl::unpack_all_zlib_compressed | ( | const oess_1::char_t * | image, | |
oess_1::uint_t | compressed_size, | |||
oess_1::uint_t | uncompressed_size, | |||
trace_stream_item_t & | item | |||
) |
Десериализовать объект trace_stream_image_t из заархивированного в режиме all_zlib_compressed образа.
image | Начало заархивированного представления. |
compressed_size | Длина заархивированного представления. |
uncompressed_size | Длина исходного представления. |
item | Приемник десериализованного представления. |
void oess_1::db::storage::trx::impl::deserialize_item | ( | const oess_1::char_t * | image, | |
oess_1::uint_t | image_len, | |||
trace_stream_item_t & | item | |||
) |
Десериализовать объект trace_stream_image_t из поднятого из trace-stream образа транзакции.
image | Образ транзакции. |
image_len | Длина образа транзакции. |
item | Приемник десериализованного представления. |
static void oess_1::db::storage::trx::impl::do_recover_db_with_damaged_last_trx | ( | committer_t & | committer, | |
const config_t & | config | |||
) | [static] |
Выполнить восстановление БД, которая находится в режиме trace_last и при этом trace-файл с последней транзакцией поврежден.
В этом случае нужно у commiter-а вызвать всего два метода:
Больше ничего не нужно делать, т.к. для восстановления БД достаточно переименовать "грязный" файл.
static bool oess_1::db::storage::trx::impl::process_trx | ( | const trace_stream_item_t & | trx, | |
replay_context_t & | ctx | |||
) | [static] |
Обработать очередную транзакцию.
trx | Описание транзакции, которую нужно обработать. |
ctx | Контекст, на котором происходит работа. |
static void oess_1::db::storage::trx::impl::calc_used_unused_traces | ( | const trace_file_number_set_t & | all_traces, | |
const trace_file_number_set_t & | all_used_traces, | |||
trace_file_number_set_t * | used_traces, | |||
trace_file_number_set_t * | unused_traces | |||
) | [static] |
Формирует можества актуальных и не актуальных trace-файлов.
all_traces | Множество номеров всех trace-файлов в trace-stream. |
all_used_traces | Множество trace-файлов, которые были использованы при восстановлении БД. |
used_traces | Необязательный приемник множества номеров trace-файлов, которые реально были использованы при восстановлении БД. |
unused_traces | Нeобязательный приемник множества номеров trace-файлов, которые оказались либо не актуальными, либо вовсе не использовались. |
static void oess_1::db::storage::trx::impl::do_normal_recover | ( | const std::string & | physic_name, | |
const config_t & | config, | |||
const trace_file_number_set_t & | all_traces, | |||
committer_t & | committer, | |||
trace_file_number_set_t * | used_traces, | |||
trace_file_number_set_t * | unused_traces, | |||
std::ostream * | verbose_stream, | |||
reverse_loader_t & | loader, | |||
trace_file_number_set_t & | trx_used_traces, | |||
const oess_1::char_t * | image, | |||
oess_1::uint_t | image_len | |||
) | [static] |
Выполнить обычное восстановление БД, которая находится в режиме trace_all.
physic_name | Физическое имя БД с которой производится работа. |
config | Конфигурация БД. |
all_traces | Множество номеров всех trace-файлов в trace-stream. |
committer | Объект, который физически будет восстанавливать основной файл. |
used_traces | Необязательный приемник множества номеров trace-файлов, которые реально были использованы при восстановлении БД. |
unused_traces | Нeобязательный приемник множества номеров trace-файлов, которые оказались либо не актуальными, либо вовсе не использовались. |
verbose_stream | Необязательный поток для выдачи информации по ходу восстановления. |
loader | Загрущик описаний транзакций. |
trx_used_traces | Текущее множество использованных trace-файлов. |
image | Образ транзакции, с которой нужно начинать восстановление. |
image_len | Длина образа транзакции, с которой нужно начинать восстановление. |
static void oess_1::db::storage::trx::impl::do_reverse_replay | ( | const std::string & | physic_name, | |
const config_t & | config, | |||
const trace_file_number_set_t & | all_traces, | |||
committer_t & | committer, | |||
trace_file_number_set_t * | used_traces, | |||
trace_file_number_set_t * | unused_traces, | |||
std::ostream * | verbose_stream | |||
) | [static] |
Реализация восстановления основного файла БД путем обратного воспроизведения trace-stream.
Если обнаруживается, что в trace-stream вообще нет транзакций, а БД работает в режиме trace_all, то порождается исключение, т.к. это недопустимо (нет даже самой первой транзакции с записью метаинформации при создании БД). Если же оказывается, что БД работает в режиме trace_last, то такая ситуация считается допустимой и приводит только к тому, что в метод commiter.initialize() передается значение 0 в качетсве total_page_count.
physic_name | Физическое имя БД с которой производится работа. |
config | Конфигурация БД. |
all_traces | Множество номеров всех trace-файлов в trace-stream. |
committer | Объект, который физически будет восстанавливать основной файл. |
used_traces | Необязательный приемник множества номеров trace-файлов, которые реально были использованы при восстановлении БД. |
unused_traces | Нeобязательный приемник множества номеров trace-файлов, которые оказались либо не актуальными, либо вовсе не использовались. |
verbose_stream | Необязательный поток для выдачи информации по ходу восстановления. |
Инициализатор
Смещение, с которого начинаются данные на странице.