#include <types.hpp>
Граф наследования:committer_t:
Открытые члены | |
virtual void | detect_nonactual_traces (trace_file_number_set_t &traces)=0 |
virtual void | initialize (oess_1::uint_t total_page_count, oess_1::uint_t page_size, oess_1::uint_t block_size)=0 |
virtual void | finalize ()=0 |
virtual void | store_block (oess_1::uint_t ordinal, oess_1::uint_t block_index, const std::string &block_value)=0 |
virtual bool | is_insufficient_trace_info_allowed () const =0 |
virtual void detect_nonactual_traces | ( | trace_file_number_set_t & | traces | ) | [pure 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() может быть подано пустое множество.
traces | Текущее множество номеров trace-файлов, актуальность которых trace_stream_t не может проверить самостоятельно. На выходе должно содержать номера trace-файлов, которые могут быть проигнорированны. |
Замещается в std_file_committer_t, unclear_file_committer_t и snapshot_file_committer_t.
virtual void finalize | ( | ) | [pure virtual] |
Вызывается объектом trace_stream_t после завершения успешного восстановления БД.
Замещается в std_file_committer_t и unclear_file_committer_t.
virtual void initialize | ( | oess_1::uint_t | total_page_count, | |
oess_1::uint_t | page_size, | |||
oess_1::uint_t | block_size | |||
) | [pure virtual] |
Вызывается объектом trace_stream_t перед началом восстановления БД для того, чтобы сообщить коммитеру о самых важных параметрах восстанавливаемого файла.
total_page_count | Общее количество страниц в файле. |
page_size | Размер одной страницы в файле. |
block_size | Размер одного блока на странице. Гарантируется, что page_size будет кратен block_size. |
Замещается в std_file_committer_t и unclear_file_committer_t.
virtual bool is_insufficient_trace_info_allowed | ( | ) | const [pure virtual] |
Должен возвращать true, если ситуация, когда в актуальном можестве trace-файлов (возвращаемом методом reduce_traces_set()) допускается отсутствие полной информации о содержимом БД. Например, если для восстановления БД кроме trace-файлов используются еще и snapshot-ы, то части trace-файлов (которые были сохранены в snapshot-е) может просто не быть. В этом случае процедура обратного восспроизведения определит, что восстановочной информации недостаточно (т.к. она не знает про существование snapshot-ов). trace_stream_t вызовет данный метод и, если метод, возвратит false, то trace_stream_t породит исключение о недостаточности восстановочной информации. Если же данный метод возвратит true, то процедура обратного воспроизведения будет считаться успешно завершенной.
Замещается в std_file_committer_t и unclear_file_committer_t.
virtual void store_block | ( | oess_1::uint_t | ordinal, | |
oess_1::uint_t | block_index, | |||
const std::string & | block_value | |||
) | [pure virtual] |
Вызвается объектом trace_stream_t при необходимости сохранения значения фрагмента страницы в восстанавливаемом основном файле.
Размер блока задается в методе initialize().
ordinal | Порядковый номер страницы. |
block_index | Порядковый номер (индекс) блока на странице. |
block_value | Значение блока. |
Замещается в std_file_committer_t и unclear_file_committer_t.