Классы | |
| 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 |
Инициализатор
Минимальный размер одной страницы.На странице должно помещаться хотя бы два элемента заголовка логического сегмента.
1.4.7