Пространство имен oess_1::db::storage::trx::impl


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

Детали реализации.

Начиная с:
v.1.4.0


Классы

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 
)

Вспомогательная функция для вычисления контрольной суммы.

Начиная с:
v.1.4.0
Контрольная сумма вычисляется по алгоритму adler32.

Возвращает:
значение контрольной суммы.
Аргументы:
what  Данные, над которыми нужно проводить вычисления.
size  Объем данных.

void oess_1::db::storage::trx::impl::create_trace_file ( const std::string &  physic_name,
oess_1::uint_t  file_ordinal 
)

Создает новый, пустой trace-файл.

Начиная с:
v.1.4.0
Аргументы:
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-файлы.

Начиная с:
v.1.4.0
Исключения, производные от oess_1::ex_t наружу не выпускаются, но их описания накапливаются в errors.
Аргументы:
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-файлов для указанного режима.

Начиная с:
v.1.4.0
Режим trace_all
Должно быть не менее одного trace-файла.
Режим trace_last
Должен быть только один trace-файл с номером 0.
Возвращает:
0, если все нормально. Код ошибки, если количество или состав trace-файлов не соответствуют trace_mode.
Аргументы:
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]

Обработать очередную транзакцию.

Возвращает:
true, если при обработке этой транзакции что-то было восстановлено.
Аргументы:
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  Необязательный поток для выдачи информации по ходу восстановления.


Переменные

const oess_1::uint_t checksum_field_size

Инициализатор

Длина контрольной суммы.

const oess_1::uint_t header_field_size

Инициализатор

Длина заголовка.

const oess_1::uint_t data_field_offset

Инициализатор

Смещение, с которого начинаются данные на странице.


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