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


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

Пространство имен для средств работы с физическим хранилищем, в котором находится БД.


Классы

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_tcreate_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

Тип идентификатора цепочки.

Начиная с:
v.1.4.0
Заметки:
В версии 1.4.0 это номер блока, который является головой цепочки.

typedef oess_1::uchar_t trace_mode_t

Тип для описания режима восстановочной информации.

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

typedef oess_1::uchar_t trace_compression_mode_t

Тип для хранения режима компрессии данных в trace-stream.

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

typedef oess_1::ushort_t area_ordinal_t

Тип для хранения порядкового номера области.

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

typedef oess_1::ushort_t segment_ordinal_t

Тип для хранения порядкового номера сегмента.

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


Функции

create_cfg_file ( const std::string &  file_name,
const config_t &  config 
)

Сохранить конфигурацию в указанный конфигурационный файл.

Начиная с:
v.1.4.0
Аргументы:
file_name  Имя создаваемого конфигурационного файла.
config  Сохраняемая в файле конфигурация.

load_cfg_file ( const std::string &  file_name  ) 

Прочитать конфигурацию из указанного конфигурационного файла.

Начиная с:
v.1.4.0
Аргументы:
file_name  Имя конфигурационного файла.
Примеры:
sample/app_recovery/main.cpp и sample/db_copy_content/main.cpp.

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 
)

Создание нового хранилища.

Начиная с:
v.1.4.0
Создает необходимые файлы хранилища. Если эти файлы уже существовали, то они уничтожаются.

В новое хранилище сразу записывается первая цепочка. Предполагается, что в этой цепочке будет находиться описатель хранилища. Далее идентификатор этой цепочке будет возвращаться при каждом открытии хранилища.

Возвращается указатель на штатную реализацию интерфейса 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 
)

Открытие существующего хранилища.

Начиная с:
v.1.4.0
Открывает указанное хранилище и считывает оттуда объект, который был записан первым при создании хранилища.

Возвращается указатель на штатную реализацию интерфейса chain_storage_t. Созданная БД является открытой и с ней можно осуществлять работу.

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

Проверка существования хранилища.

Начиная с:
v.1.4.0
Хранилище считается существующим, если:
Аргументы:
physic_name  Физическое имя БД, существование которой будет проверяться.

destroy_chain_storage ( const std::string &  physic_name  ) 

Уничтожение хранилища.

Начиная с:
v.1.4.0
Уничтожаются все файлы, которые имеют отношение к указанному хранилищу.
Аргументы:
physic_name  Физическое имя уничтожаемой БД.

std::auto_ptr< dirty_page_storage_t > create_std_dirty_page_storage (  ) 

Создать штатную реализацию хранилища грязных страниц.

Начиная с:
v.1.3.1
Возвращает:
указатель на динамически созданный объект.

create_std_entity_stream ( chain_storage_t &  storage,
oess_1::uint_t  id,
const chain_id_t description_chain 
)

Создать штатную реализацию интерфейса entity_stream_t.

Начиная с:
v.1.4.0
Возвращает:
указатель на динамически созданный объект, ответственность за уничтожение которого несет вызывающая сторона.
Аргументы:
storage  Хранилище, в котором поток сущностей физически расположен.
id  Идентификатор, назначенный этому потоку.
description_chain  Идентификатор цепочки, в которой сохранен описатель потока.

create_entity_stream_description ( chain_storage_t &  storage  ) 

Создать в хранилище описание для нового потока сущностей.

Начиная с:
v.1.4.0
Аргументы:
storage  Хранилище, в котором поток сущностей физически расположен.

destroy_entity_stream_description ( chain_storage_t &  storage,
const chain_id_t description_chain 
)

Уничтожить описание потока сущностей, расположенное в указанной цепочке.

Начиная с:
v.1.4.0
Аргументы:
storage  Хранилище, в котором поток сущностей физически расположен.
description_chain  Идентификатор цепочки, в которой сохранен описатель потока.

create_stream_storage ( const std::string &  physic_name,
const config_t &  config 
)

Создание нового хранилища.

Начиная с:
v.1.4.0
Создает необходимые файлы хранилища. Если эти файлы уже существовали, то они уничтожаются.

Возвращается указатель на штатную реализацию интерфейса 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 
)

Открытие существующего хранилища.

Начиная с:
v.1.4.0
Открывает указанное хранилище и считывает оттуда объект, который был записан первым при создании хранилища.

Возвращается указатель на штатную реализацию интерфейса 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  ) 

Проверка существования хранилища.

Начиная с:
v.1.4.0
Хранилище считается существующим, если:
Аргументы:
physic_name  Физическое имя БД, существование которой будет проверяться.

destroy_stream_storage ( const std::string &  physic_name  ) 

Уничтожение хранилища.

Начиная с:
v.1.4.0
Уничтожаются все файлы, которые имеют отношение к указанному хранилищу.
Аргументы:
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  Указанная пользовалем информация.


Переменные

const oess_1::uint_t no_chain_length_limit

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

    static_cast< oess_1::uint_t >( -1 )
Константа, которая указывает на отсутствие ограничений на длину извлекаемой цепочки.

Начиная с:
v.1.4.0
Предназначена для использования в качестве параметра max_length метода chain_storage_t::chain_load().

const trace_mode_t trace_no = 0

Режим, в котором восстановочная информация вообще не сохраняется.

Начиная с:
v.1.4.0
Данный режим обеспечивает наивысшую скорость работы с БД, но не гарантирует никакой безопасности.

const trace_mode_t trace_last = 1

Режим, в котором сохраняется информация только о последней транзакции.

Начиная с:
v.1.4.0
В данном режиме в trace-файл помещается только одна транзакция -- последняя. При необходимости зафиксировать в БД следующую транзакцию все предыдущее содержимое trace-файла удаляется.

Этот режим обеспечивает среднюю скорость работы. Но позволяет восстановить БД после таких сбоев, как аварийное завершение приложения, когда последняя транзакция еще могла быть не сохранена в БД полностью.

Для того, чтобы иметь возможность восстановить основной файл хранилища после более фатальных сбоев (например, повреждения файловой системы или носителя) необходимо использовать внешние инструменты, т.к. аппаратное зеркалирование или реплицирующие файловые системы.

const trace_mode_t trace_all = 2

Режим, в котором сохраняется полный след проводимых транзакций.

Начиная с:
v.1.4.0
В данном режиме информация по каждой транзакции дописывается в конец trace-stream. Это позволяет восстановить весь основной файл БД путем воспроизведения trace-файлов. Т.е. этот режим позволяет восстанавливать БД после жестких сбоев при условии, что настроена репликация и сохранение в надежном месте trace-файлов.

Этот режим обеспечивает наименьшую скорость работы с БД и требует большого объема дискового пространства.

const trace_compression_mode_t trace_no_compression = 0

Без компрессии.

Начиная с:
v.1.4.0
Этот вариант может оказаться предпочтительным при малых объемах данных в транзакции (например, из-за малого размера страницы хранилища и малого размера объектов в хранилище) или когда данные плохо сжимаются (например, объекты содержат заархивированную или зашифрованную информацию). В этих случаях реального уменьшения образа транзакции в результате архивации может не быть.

const trace_compression_mode_t trace_zlib_compression = 1

Весь образ транзакции архивируется с помощью zlib.

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

const trace_compression_mode_t trace_default_compression = trace_no_compression

Режим компрессии, который должен использоваться по-умолчанию.

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

const oess_1::uint_t max_file_size = 0x7fffffffu

Общее количество байт в файле, включая общий заголовок.

Максимальное 31-битовое число, т.к. в соответствии с POSIX размер файла ограничивается 31-битовым значением

const oess_1::uint_t min_page_size

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

Минимальный размер одной страницы.

На странице должно помещаться хотя бы два элемента заголовка логического сегмента.


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