Классы | |
class | chain_storage_t |
Интерфейс для работы с уже открытым хранилищем цепочек. Подробнее... | |
class | hard_config_t |
Конфигурационные параметры, которые не могут быть изменены после создания БД. Подробнее... | |
class | config_t |
Конфигурация, необходимая для хранилища. Подробнее... | |
class | dirty_page_actor_t |
Базовый класс для функтора, который будет выполнять какие-то действия над страницами в dirty page storage. Подробнее... | |
class | dirty_page_storage_t |
Интерфейс хранилища грязных страниц, в которое выталкиваются грязные страницы из кэша при проведении транзакции. Подробнее... | |
class | entity_stream_t |
Интерфейс потока сущностей в хранилище. Подробнее... | |
class | loaded_page_t |
Представление одной страницы хранилища, загруженной в ОП. Подробнее... | |
class | page_index_calculator_t |
Объект для вычисления номеров страниц/блоков исходя из размера одной страницы и одного блока. Подробнее... | |
class | stream_storage_t |
Интерфейс хранилища потоков сущностей. Подробнее... | |
Пространства имен | |
namespace | impl |
Детали реализации. | |
namespace | trx |
Восстановочная и трасировочная информация для хранилища. | |
Режим сохранения восстановочной/трассировочной информации. | |
typedef oess_1::uchar_t | trace_mode_t |
Тип для описания режима восстановочной информации. | |
const trace_mode_t | trace_no = 0 |
Режим, в котором восстановочная информация вообще не сохраняется. | |
const trace_mode_t | trace_last = 1 |
Режим, в котором сохраняется информация только о последней транзакции. | |
const trace_mode_t | trace_all = 2 |
Режим, в котором сохраняется полный след проводимых транзакций. | |
Параметры компрессии данных в trace-stream. | |
typedef oess_1::uchar_t | trace_compression_mode_t |
Тип для хранения режима компрессии данных в trace-stream. | |
const trace_compression_mode_t | trace_no_compression = 0 |
Без компрессии. | |
const trace_compression_mode_t | trace_zlib_compression = 1 |
Весь образ транзакции архивируется с помощью zlib. | |
const trace_compression_mode_t | trace_default_compression = trace_no_compression |
Режим компрессии, который должен использоваться по-умолчанию. | |
Средства для манипуляции хранилищем цепочек. | |
create_chain_storage (const std::string &physic_name, const config_t &config, oess_1::io::istream_t &from, oess_1::uint_t length, chain_id_t &first_chain) | |
Создание нового хранилища. | |
open_chain_storage (const std::string &physic_name, const config_t &config, bool is_read_only, bool is_auto_repair_enabled, oess_1::io::ostream_t &to, oess_1::uint_t length, chain_id_t &first_chain) | |
Открытие существующего хранилища. | |
is_chain_storage_exists (const std::string &physic_name) | |
Проверка существования хранилища. | |
destroy_chain_storage (const std::string &physic_name) | |
Уничтожение хранилища. | |
Средства для упрощения сохранения в хранилище цепочек | |
сериализуемых объектов. | |
template<class T> | |
chain_id_t | create_in_storage (chain_storage_t &storage, const T &what) |
Создание цепочки для объекта. | |
template<class T> | |
void | load_from_storage (chain_storage_t &storage, const chain_id_t &chain, T &what, oess_1::uint_t length=no_chain_length_limit) |
Загрузка объекта из цепочки. | |
template<class T> | |
void | update_in_storage (chain_storage_t &storage, const chain_id_t &chain, const T &what) |
Обновление значения объекта в цепочке. | |
Определения типов | |
typedef oess_1::uint_t | chain_id_t |
Тип идентификатора цепочки. | |
typedef oess_1::ushort_t | area_ordinal_t |
Тип для хранения порядкового номера области. | |
typedef oess_1::ushort_t | segment_ordinal_t |
Тип для хранения порядкового номера сегмента. | |
Функции | |
create_cfg_file (const std::string &file_name,const config_t &config) | |
Сохранить конфигурацию в указанный конфигурационный файл. | |
load_cfg_file (const std::string &file_name) | |
Прочитать конфигурацию из указанного конфигурационного файла. | |
std::auto_ptr< dirty_page_storage_t > | create_std_dirty_page_storage () |
Создать штатную реализацию хранилища грязных страниц. | |
create_std_entity_stream (chain_storage_t &storage, oess_1::uint_t id, const chain_id_t &description_chain) | |
Создать штатную реализацию интерфейса entity_stream_t. | |
create_entity_stream_description (chain_storage_t &storage) | |
Создать в хранилище описание для нового потока сущностей. | |
destroy_entity_stream_description (chain_storage_t &storage, const chain_id_t &description_chain) | |
Уничтожить описание потока сущностей, расположенное в указанной цепочке. | |
create_stream_storage (const std::string &physic_name, const config_t &config) | |
Создание нового хранилища. | |
open_stream_storage (const std::string &physic_name, const config_t &config, bool is_read_only, bool is_auto_repair_enabled) | |
Открытие существующего хранилища. | |
is_stream_storage_exists (const std::string &physic_name) | |
Проверка существования хранилища. | |
destroy_stream_storage (const std::string &physic_name) | |
Уничтожение хранилища. | |
static void | remove_if_exists (const std::string &file_name) |
static void | remove_old_files (const std::string &physic_name, const config_t &config) |
static void | make_new_files (const std::string &physic_name, const config_t &config) |
static void | open_and_fill_tmp_storage (const std::string &physic_name, const config_t &config, oess_1::io::istream_t &from, oess_1::uint_t length, chain_id_t &first_chain) |
static void | remove_tmp_files (const std::string &physic_name, const config_t &config) |
static void | create_and_fill_db (const std::string &physic_name, const config_t &config, oess_1::io::istream_t &from, oess_1::uint_t length, chain_id_t &first_chain) |
config_t | merge_configs (const config_t &loaded, const config_t &user) |
Производит объединение прочитанной из конфигурационного файла конфигурации и указанной пользователем конфигурации. | |
Переменные | |
const chain_id_t | invalid_chain_id = 0 |
Аналог NULL для идентификатора цепочки. | |
const oess_1::uint_t | no_chain_length_limit |
Константа, которая указывает на отсутствие ограничений на длину извлекаемой цепочки. | |
const oess_1::uint_t | c_invalid_ent_id = 0 |
Аналог NULL для идентификатора сущности. | |
const oess_1::uint_t | max_file_size = 0x7fffffffu |
Общее количество байт в файле, включая общий заголовок. | |
const oess_1::uint_t | max_page_size = 64 * 1024 |
Максимальный размер одной страницы. | |
const oess_1::uint_t | min_page_size |
Минимальный размер одной страницы. |
typedef oess_1::uint_t chain_id_t |
Тип идентификатора цепочки.
typedef oess_1::uchar_t trace_mode_t |
Тип для описания режима восстановочной информации.
Тип для хранения режима компрессии данных в trace-stream.
typedef oess_1::ushort_t area_ordinal_t |
Тип для хранения порядкового номера области.
typedef oess_1::ushort_t segment_ordinal_t |
Тип для хранения порядкового номера сегмента.
create_cfg_file | ( | const std::string & | file_name, | |
const config_t & | config | |||
) |
Сохранить конфигурацию в указанный конфигурационный файл.
file_name | Имя создаваемого конфигурационного файла. |
config | Сохраняемая в файле конфигурация. |
load_cfg_file | ( | const std::string & | file_name | ) |
Прочитать конфигурацию из указанного конфигурационного файла.
file_name | Имя конфигурационного файла. |
create_chain_storage | ( | const std::string & | physic_name, | |
const config_t & | config, | |||
oess_1::io::istream_t & | from, | |||
oess_1::uint_t | length, | |||
chain_id_t & | first_chain | |||
) |
Создание нового хранилища.
В новое хранилище сразу записывается первая цепочка. Предполагается, что в этой цепочке будет находиться описатель хранилища. Далее идентификатор этой цепочке будет возвращаться при каждом открытии хранилища.
Возвращается указатель на штатную реализацию интерфейса chain_storage_t. Созданная БД является открытой и с ней можно осуществлять работу.
physic_name | Физическое имя создаваемой БД. |
config | Конфигурация для новой БД. |
from | Отсюда нужно брать значение объекта для первой цепочки. |
length | Длина объекта, который должен быть сохранен в первой цепочке БД. |
first_chain | Приемник идентификатора первой цепочки хранилища. |
open_chain_storage | ( | const std::string & | physic_name, | |
const config_t & | config, | |||
bool | is_read_only, | |||
bool | is_auto_repair_enabled, | |||
oess_1::io::ostream_t & | to, | |||
oess_1::uint_t | length, | |||
chain_id_t & | first_chain | |||
) |
Открытие существующего хранилища.
Возвращается указатель на штатную реализацию интерфейса chain_storage_t. Созданная БД является открытой и с ней можно осуществлять работу.
physic_name | Физическое имя открываемой БД. |
config | Конфигурация для БД. |
is_read_only | true, если БД открывается в режиме read-only. |
is_auto_repair_enabled | true, если разрешается автоматическое восстановление БД после сбоя. |
to | Приемник значение объекта из первой цепочки в БД. |
length | Ограничение на длину объекта, который считывается из первой цепочки в БД. |
first_chain | Приемник идентификатора первой цепочки хранилища. |
is_chain_storage_exists | ( | const std::string & | physic_name | ) |
Проверка существования хранилища.
physic_name | Физическое имя БД, существование которой будет проверяться. |
destroy_chain_storage | ( | const std::string & | physic_name | ) |
Уничтожение хранилища.
physic_name | Физическое имя уничтожаемой БД. |
std::auto_ptr< dirty_page_storage_t > create_std_dirty_page_storage | ( | ) |
Создать штатную реализацию хранилища грязных страниц.
create_std_entity_stream | ( | chain_storage_t & | storage, | |
oess_1::uint_t | id, | |||
const chain_id_t & | description_chain | |||
) |
Создать штатную реализацию интерфейса entity_stream_t.
storage | Хранилище, в котором поток сущностей физически расположен. |
id | Идентификатор, назначенный этому потоку. |
description_chain | Идентификатор цепочки, в которой сохранен описатель потока. |
create_entity_stream_description | ( | chain_storage_t & | storage | ) |
Создать в хранилище описание для нового потока сущностей.
storage | Хранилище, в котором поток сущностей физически расположен. |
destroy_entity_stream_description | ( | chain_storage_t & | storage, | |
const chain_id_t & | description_chain | |||
) |
Уничтожить описание потока сущностей, расположенное в указанной цепочке.
storage | Хранилище, в котором поток сущностей физически расположен. |
description_chain | Идентификатор цепочки, в которой сохранен описатель потока. |
create_stream_storage | ( | const std::string & | physic_name, | |
const config_t & | config | |||
) |
Создание нового хранилища.
Возвращается указатель на штатную реализацию интерфейса stream_storage_t. Созданная БД является открытой и с ней можно осуществлять работу.
physic_name | Физическое имя создаваемой БД. |
config | Конфигурация для новой БД. |
open_stream_storage | ( | const std::string & | physic_name, | |
const config_t & | config, | |||
bool | is_read_only, | |||
bool | is_auto_repair_enabled | |||
) |
Открытие существующего хранилища.
Возвращается указатель на штатную реализацию интерфейса stream_storage_t. Созданная БД является открытой и с ней можно осуществлять работу.
physic_name | Физическое имя открываемой БД. |
config | Конфигурация для БД. |
is_read_only | true, если БД открывается в режиме read-only. |
is_auto_repair_enabled | true, если разрешается автоматическое восстановление БД после сбоя. |
is_stream_storage_exists | ( | const std::string & | physic_name | ) |
Проверка существования хранилища.
physic_name | Физическое имя БД, существование которой будет проверяться. |
destroy_stream_storage | ( | const std::string & | physic_name | ) |
Уничтожение хранилища.
physic_name | Физическое имя уничтожаемой БД. |
static void oess_1::db::storage::remove_if_exists | ( | const std::string & | file_name | ) | [static] |
Удаляет указанный файл, если этот файл существует.
static void oess_1::db::storage::remove_old_files | ( | const std::string & | physic_name, | |
const config_t & | config | |||
) | [static] |
Удаляет файлы, которые могли остаться от предыдущей БД.
static void oess_1::db::storage::make_new_files | ( | const std::string & | physic_name, | |
const config_t & | config | |||
) | [static] |
Создает новые файлы, которые необходимы для открытия БД.
static void oess_1::db::storage::open_and_fill_tmp_storage | ( | const std::string & | physic_name, | |
const config_t & | config, | |||
oess_1::io::istream_t & | from, | |||
oess_1::uint_t | length, | |||
chain_id_t & | first_chain | |||
) | [static] |
Открыть хранилище, используюя вместо основного файла временный файл. В открытое хранилище в рамках транзакции записывается первая цепочка.
static void oess_1::db::storage::remove_tmp_files | ( | const std::string & | physic_name, | |
const config_t & | config | |||
) | [static] |
Удалить временные файлы, которые использовались для создания БД.
На самом деле временные файлы переименовываются в основные файлы БД.
static void oess_1::db::storage::create_and_fill_db | ( | const std::string & | physic_name, | |
const config_t & | config, | |||
oess_1::io::istream_t & | from, | |||
oess_1::uint_t | length, | |||
chain_id_t & | first_chain | |||
) | [static] |
Создает БД и производит ее первоначальное заполнение.
config_t oess_1::db::storage::merge_configs | ( | const config_t & | loaded, | |
const config_t & | user | |||
) |
Производит объединение прочитанной из конфигурационного файла конфигурации и указанной пользователем конфигурации.
Правила объединения см. в open_chain_storage().
loaded | Прочитанная из конфигурационного файла информация. |
user | Указанная пользовалем информация. |
Инициализатор
static_cast< oess_1::uint_t >( -1 )
const trace_mode_t trace_no = 0 |
Режим, в котором восстановочная информация вообще не сохраняется.
const trace_mode_t trace_last = 1 |
Режим, в котором сохраняется информация только о последней транзакции.
Этот режим обеспечивает среднюю скорость работы. Но позволяет восстановить БД после таких сбоев, как аварийное завершение приложения, когда последняя транзакция еще могла быть не сохранена в БД полностью.
Для того, чтобы иметь возможность восстановить основной файл хранилища после более фатальных сбоев (например, повреждения файловой системы или носителя) необходимо использовать внешние инструменты, т.к. аппаратное зеркалирование или реплицирующие файловые системы.
const trace_mode_t trace_all = 2 |
Режим, в котором сохраняется полный след проводимых транзакций.
Этот режим обеспечивает наименьшую скорость работы с БД и требует большого объема дискового пространства.
const trace_compression_mode_t trace_no_compression = 0 |
Без компрессии.
Весь образ транзакции архивируется с помощью zlib.
Режим компрессии, который должен использоваться по-умолчанию.
const oess_1::uint_t max_file_size = 0x7fffffffu |
Общее количество байт в файле, включая общий заголовок.
Максимальное 31-битовое число, т.к. в соответствии с POSIX размер файла ограничивается 31-битовым значением
const oess_1::uint_t min_page_size |
Инициализатор
Минимальный размер одной страницы.На странице должно помещаться хотя бы два элемента заголовка логического сегмента.