Class mgr db::Cache

Материал из ISPWiki
Перейти к: навигация, поиск

Работа с базами данных

Класс mgr_db::Cache

Представление кэша работы с базами данных

#include <mgrdb_struct.h> 

Описание:

class mgr_db::Cache

Потокобезопасный кэш работы с базой данных имеет следующие особенности:

  • Работа с подключениями к базе данных:
    • Использует потокобезопасный механизм работы с подключениями к базе данных (TConnection)
    • Используется транзакционный механизм работы с базой данных в рамках подключения. Транзакция начинается автоматически перед выполнением первого запроса к базе данных, имеются методы, позволяющие вручную выполнить фиксацию или откат транзакции.
    • При фиксации или откате транзакции используемый механизм TConnection возвращает используемое подключение в список неактивных подключений (освобождает его)
  • Работа с таблицами баз данных:
    • При вызове метода Cache::Register, таблицы приводятся в базе данных в соответствие с их описанием (Connection::FixTable)
    • Если таблица была создана в базе данных в ходе Cache::Register, для нее выполнятся также описанные в CustomTable::OnCreateTable действия. Если таблица уже существовала, эти действия выполнены не будут
    • Существует возможность использовать внешние списки SQL-команд, которые необходимо выполнить при создании таблицы в базе данных Список SQL-команд представляет собой файл, содержащий список запросов SQL. Каждый новый запрос должен начинаться с новой строки Данные файлы должны располагаться в каталоге etc/sql. Имя файла должно соответствовать следующему формату: {имя_таблицы}.sql В параметрах подключения к базе данных имеется возможность указать имя продукта в параметре ConnectionParams::client. В случае, если для подключения указано имя продукта, имя файла должно соответствовать следующему формату: {имя_продукта}.{имя_таблицы}.sql
    • Существует возможность добавления дополнительных полей в таблицы. Для этого надо создать каталог etc/sql/{имя_продукта}.{имя_таблицы}.addon или etc/sql/{имя_таблицы}.addon Каждый файл в любом из этих каталогов описывает отдельное поле таблицы. Имя поля совпадает с именем файла. По умолчанию будет создано поле типа VARCHAR(255) (другие типы на данный момент не поддерживаются)

Потомки:


Классы

struct mgr_db::Cache::RevReference

Открытые типы (кратко)

typedef std::shared_ptr<CustomTable> CustomTablePtr

Открытые члены (кратко)

Cache ( const ConnectionParams & , size_t max_size = 256 )

Конструктор, принимает параметры подключения и максимальное количество кэшируемых записей для таблицы БД


virtual  ~Cache ()

Деструктор


QueryPtr Query ( const string & )

Выполняет запрос к базе данных, принимает строку запроса и возвращает объект запроса к БД


Stmt Prepare ( const string & )

Принимает параметризованную строку запроса (параметры обозначаются символом "?") и возвращает объект подготовленного запроса к БД


string EscapeValue ( const string & )

Экранирует недопустимые для конкретной СУБД символы в переданной строке, оборачивает саму строку в символы "'".


string ConcatValues ( const string & , const string & , const string &delim = "" )

Конкатенирует строки через разделитель для конкретной СУБД. Разделитель (последний аргумент) экранируется, если пустой не добавляется.


string ForUpdate ( const string &value )

Добавляем в запрос модификатор FOR UPDATE если субд поддерживает данный механизм


void Commit ()

Фиксирует транзакцию в текущем подключении к БД


void Rollback ()

Откатывает транзакцию в текущем подключении к БД


const ConnectionParams & params ()

Возвращает параметры подключения к БД


Connection * GetConnection ()

Возвращает текущее подключение к БД


void ClearCache ( const string &name , ClearReason reason = crNone )

Отчитстить кэш для заданной таблицы


CustomTablePtr TableByName ( const string &name )

Получить курсор по имени таблицы


template <class Type>

void

Register ()

Регистрирует входящие в кэш таблицы,.


template <class Type>

std::shared_ptr<Type>

Get ()

Возвращает объект кэшированной таблицы БД


template <class Type>

std::shared_ptr<Type>

Get ( const string &key )

Возвращает объект кэшированной таблицы БД, завершается с ошибкой, если в необходимой таблице не найдено передаваемое ключевое значение


void RebuildGlobalIndex ()

Перестроить глобальный индекс по всем зарегистрированным таблицам


void GetTableList ( StringVector &names )

Получить список всех зарегистрированных таблиц


const std::multimap<string, RevReference> & GetReferenceList () const

GetReferenceList.

Приватные члены (кратко)

virtual void onBeginTransaction ()

Выполняет необходимые действия после начала транзакции

Конструкторы

Cache ( const ConnectionParams & , size_t max_size = 256 )

Конструктор, принимает параметры подключения и максимальное количество кэшируемых записей для таблицы БД

virtual ~Cache ()

Деструктор

Методы

QueryPtr Query ( const string & )

Выполняет запрос к базе данных, принимает строку запроса и возвращает объект запроса к БД

Stmt Prepare ( const string & )

Принимает параметризованную строку запроса (параметры обозначаются символом "?") и возвращает объект подготовленного запроса к БД

string EscapeValue ( const string & )

Экранирует недопустимые для конкретной СУБД символы в переданной строке, оборачивает саму строку в символы "'".

string ConcatValues ( const string & , const string & , const string &delim = "" )

Конкатенирует строки через разделитель для конкретной СУБД. Разделитель (последний аргумент) экранируется, если пустой не добавляется.

string ForUpdate ( const string &value )

Добавляем в запрос модификатор FOR UPDATE если субд поддерживает данный механизм

void Commit ()

Фиксирует транзакцию в текущем подключении к БД

void Rollback ()

Откатывает транзакцию в текущем подключении к БД

const ConnectionParams &params ()

Возвращает параметры подключения к БД

Connection * GetConnection ()

Возвращает текущее подключение к БД

void ClearCache ( const string &name , ClearReason reason = crNone )

Отчитстить кэш для заданной таблицы

CustomTablePtr TableByName ( const string &name )

Получить курсор по имени таблицы

void Register ()

Данная функция/метод является inline функцией

Регистрирует входящие в кэш таблицы,.

See also: Cache

std::shared_ptr<Type> Get ()

Данная функция/метод является inline функцией

Возвращает объект кэшированной таблицы БД

std::shared_ptr<Type> Get ( const string &key )

Данная функция/метод является inline функцией

Возвращает объект кэшированной таблицы БД, завершается с ошибкой, если в необходимой таблице не найдено передаваемое ключевое значение

void RebuildGlobalIndex ()

Перестроить глобальный индекс по всем зарегистрированным таблицам

void GetTableList ( StringVector &names )

Получить список всех зарегистрированных таблиц

const std::multimap<string, RevReference> &GetReferenceList () const

GetReferenceList.

Returned:

virtual void onBeginTransaction ()

Данная функция/метод является inline функцией

Данный метод является приватным

Выполняет необходимые действия после начала транзакции

Типы

typedef std::shared_ptr<CustomTable> CustomTablePtr