Глава 12. Приложение В

Описание процесса ручной установки БД для СУБД Firebird

Для работы модуля необходимо завести учетную запись пользователя СУБД Firebird. Для этого используется утилита управления учетными записями gsec. Пример создания пользователя (подробности: Server configuration and management):

# gsec -user sysdba -password masterkey
GSEC> add stg -pw 123456

Для корректной работы модуля пользователь должен иметь право на запись и чтение данных в таблицы БД.

Модуль для работы с СУБД Firebird требует наличия правильно созданной базы данных. SQL-скрипт для создания находится в каталоге projects/stargazer/inst/var/00-base-00.sql. В обычных условиях выполнение make install или make install-data автоматически создает базу данных, используя этот скрипт. Для того чтобы создать ее вручную необходимо в файле SQL-скрипта раскомментировать строки:

connect 'localhost:/var/stg/stargazer.fdb' user 'stg' password '123456';
drop database;
create database 'localhost:/var/stg/stargazer.fdb' user 'stg' password '123456' default character set win1251;

и заменить в них адрес сервера, путь к базу, имя пользователя БД и пароль. После этого выполнить команду isql -i <файл_скрипта>.

Внимание! Для пользователей Debian и, возможно, некоторых других дистрибутивов командный интерпретатор SQL для СУБД Firebird называется isql-fb.

Описание структуры БД для СУБД Firebird

Таблица tb_admins (учетные записи администраторов системы):

  • pk_admin – уникальный идентификатор учетной записи администратора;

  • login – название учетной записи администратора;

  • passwd – пароль для учетной записи администратора (в зашифрованном виде);

  • chg_conf – флаг, позволяющий менять конфигурационные параметры пользователя;

  • chg_password – флаг, позволяющий менять пароль пользователя;

  • chg_stat – флаг, позволяющий менять статистические данные пользователя;

  • chg_cash – флаг, позволяющий менять количество денег на счету у пользователя;

  • usr_add_del – флаг, позволяющий удалять и добавлять пользователей;

  • chg_tariff – флаг, позволяющий управлять тарифами;

  • chg_admin – флаг, позволяющий управлять учетными записями администраторов системы;

  • chg_service – зарезервировано;

  • chg_corporation – зарезервировано.

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

Таблица tb_tariffs (описание тарифов):

  • pk_tariff – уникальный идентификатор тарифа;

  • name – название тарифа;

  • fee – абонплата;

  • free – количество бесплатных мегабайт трафика, входящих в абонплату;

  • passive_cost – стоимость «заморозки» пользователя;

  • traff_type — тип тарификации трафика:

    • up+down — входящий и исходящий трафик тарифицируется суммарно;

    • up — тарифицируется только исходящий трафик;

    • down — тарифицируется только входящий трафик;

    • max — тарифицируется большее количество трафика;

  • period — тип абонплаты:

    • day — ежедневная абонплата (параметр Fee трактуется как значение списываемое ежедневно);

    • month — ежемесячная абонплата (классическая, параметр Fee трактуется как значение списываемое за месяц, в том числе в режиме SpreadFee);

  • change_policy — политика смены тарифа:

    • allow — на период действия политики смена тарифного плана разрешена;

    • to_cheap — на период действия политики разрешена смена тарифного плана на более дешевый;

    • to_expensive — на период действия политики разрешена смена тарифного плана на более дорогой;

    • deny — на период действия политики смена тарифного плана запрещена;

  • change_policy_pimeout — момент завершения действия политики тарификации (0 - политика тарификации не завершается никогда);

С таблицей связана хранимая процедура sp_add_tariff, получающая в качестве параметров название тарифа и количество направлений. Возвращает сгенерированный идентификатор (первичный ключ) тарифа. При вызове создает запись в таблице tb_tariffs и указанное количество записей в таблице tb_tariffs_params, соответствующее количеству направлений. С таблицей так же связана хранимая процедура sp_delete_tariff, получающая на вход название тарифа и удаляющая его из таблицы tb_tariffs и связанные с ним данные из таблицы tb_tariffs_params.

Таблица tb_tariffs_params (параметры тарифов):

  • pk_tariff_param – уникальный идентификатор записи информации о направлении в тарифе;

  • fk_tariff – внешний ключ для связи с тарифом;

  • dir_num – номер направления;

  • price_day_a – стоимость 1 Мб трафика днем до превышения порога;

  • price_day_b – стоимость 1 Мб трафика днем после превышения порога;

  • price_night_a – стоимость 1 Мб трафика ночью до превышения порога;

  • price_night_b – стоимость 1 Мб трафика ночью после превышения порога;

  • threshold – порог по трафику;

  • time_day_begins – время начала дня;

  • time_day_ends – время конца дня.

С таблицей связан триггер tr_tariffs_params_bi, выполняющий автогенерацию идентификаторов записей (первичных ключей) в таблице.

Таблица tb_corporations – зарезервирована.

С таблицей связан триггер tr_corporations_bi, выполняющий автогенерацию первичных ключей.

Таблица tb_users (учетные записи пользователей системы):

  • pk_user – уникальный идентификатор пользователя;

  • fk_tariff – внешний ключ для связи с тарифом;

  • fk_tariff_change – внешний ключ для связи с тарифом (может быть пустым);

  • fk_corporation – зарезервировано;

  • address – адрес пользователя;

  • always_online – флаг «всегда on-line»;

  • credit – величина кредита в деньгах;

  • credit_expire – дата окончания действия кредита;

  • disabled_detail_stat — отключение детальной статистики пользователя;

  • disabled – флаг «отключен»;

  • email – email пользователя;

  • grp – название группы пользователя;

  • note – примечание;

  • passive – флаг «заморозки»;

  • passwd – пароль пользователя (в открытом виде);

  • phone – номер телефона пользователя;

  • name – название учетной записи пользователя (логин);

  • real_name – реальное имя пользователя.

С таблицей связана хранимая процедура sp_add_user, принимающая на вход 2 параметра: название учетной записи пользователя и количество направлений. Возвращает сгенерированное значение первичного ключа. При вызове создает запись в таблице tb_users, соответствующую ей запись в таблице tb_stats и указанное количество записей в таблице tb_stats_traffic. Так же с таблицей связана хранимая процедура sp_delete_user, получающая в качестве входного параметра название учетной записи (логин) пользователя и удаляющая учетную запись и всю сопутствующую информацию (данные пользователя, IP-адреса, сообщения, журналы параметров, статистику и детальную статистику, журналы сессий) о пользователе из базы.

Таблица tb_detail_stats (детальная статистика по пользователям системы):

  • pk_detail_stat – уникальный идентификатор записи детальной статистики;

  • fk_user – внешний ключ для связи с пользователем;

  • dir_num – номер направления;

  • ip – удаленный IP-адрес (в формате 32-битного беззнакового целого);

  • download – количество принятых байт;

  • upload – количество отправленных байт;

  • cost – стоимость объема данных;

  • from_time – время начала сессии;

  • till_time – время завершения сеанса.

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

Таблица tb_services – зарезервирована. С ней связан триггер tr_services_bi, выполняющий автогенерацию первичных ключей. Так же с ней связана хранимая процедура sp_delete_service, удаляющая всю информацию связанную с записью в данной таблице.

Таблица tb_users_services – зарезервирована. С ней связан триггер tr_users_services_bi, выполняющий автогенерацию первичных ключей.

Таблица tb_messages (сообщения пользователям):

  • pk_message – уникальный идентификатор сообщения;

  • fk_user – внешний ключ для связи с пользователем;

  • ver – версия формата сообщения;

  • msg_type – тип сообщения;

  • last_send_time – время последней отсылки сообщения;

  • creation_time – время создания сообщения;

  • show_time – время показа сообщения;

  • repeat – количество повторений;

  • repeat_period – период повторения;

  • msg_text – текст сообщения.

С таблицей связана хранимая процедура sp_add_message, которая получает на вход идентификатор, параметры и текст сообщения. В случае если идентификатор пустой – сообщение добавляется в таблицу. Если не пустой – параметры и текст сообщения обновляются. Процедура возвращает идентификатор сообщения.

Таблица tb_stats (статистика пользователя):

  • pk_stat – уникальный идентификатор записи статистики;

  • fk_user – внешний ключ для связи с пользователем;

  • cash – количество денег на счету;

  • free_mb – количество не истраченных бесплатных Мб;

  • last_activity_time – время последней активности пользователя;

  • last_cash_add – последнее пополнение счета;

  • last_cash_add_time – время последнего пополнения счета;

  • passive_time – время, проведенное пользователем в «замороженном» состоянии за месяц (используется для вычисления объема снимаемой абонплаты);

  • stats_date – дата записи статистики (месячной статистики).

С таблицей связана хранимая процедура sp_add_stat, получающая на вход набор данных статистики, добавляющая запись в таблицу и возвращающая сгенерированный первичный ключ записи.

Таблица tb_stats_traffic (статистика по направлениям):

  • pk_stat_traffic – уникальный идентификатор записи статистики;

  • fk_stat – внешний ключ для связи со статистикой пользователя (текущей или месячной);

  • dir_num – номер направления;

  • download – объем входящего трафика;

  • upload – объем исходящего трафика.

С таблицей связан триггер tr_stat_traffic_bi, служащий для автогенерации первичного ключа.

Таблица tb_users_data (данные пользователя):

  • pk_user_data – уникальный идентификатор записи;

  • fk_user – внешний ключ для связи с пользователем;

  • num – номер поля данных;

  • data – текст поля данных.

С таблицей связан триггер tr_user_data_bi, служащий для автогенерации первичного ключа.

Таблица tb_allowed_ip (IP-адреса пользователя):

  • pk_allowed_ip – уникальный идентификатор записи;

  • fk_user – внешний ключ для связи с пользователем;

  • ip – IP-адрес (в формате 32-битного беззнакового целого);

  • mask – маска (в формате 32-битного беззнакового целого).

С таблицей связан триггер tr_allowed_ip_bi, служащий для автогенерации первичного ключа.

Таблица tb_sessions_log (журнал сессии):

  • pk_session_log – уникальный идентификатор записи в журнале;

  • fk_user – внешний ключ для связи с пользователем;

  • event_time – время события;

  • event_type – тип события (connect/disconnect);

  • ip – IP-адрес пользователя.

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

Таблица tb_sessions_data (данные сессии):

  • pk_session_data – уникальный идентификатор записи данных;

  • fk_session_log – внешний ключ для связи с записью в журнале сессии;

  • dir_num – номер направления;

  • session_upload – объем исходящего трафика за сессию;

  • session_download – объем входящего трафика за сессию;

  • month_upload – объем исходящего трафика за месяц;

  • month_download – объем входящего трафика за месяц.

С таблицей связан триггер tr_session_data_bi, служащий для автогенерации первичного ключа.

Таблица tb_parameters (параметры пользователя):

  • pk_parameter – уникальный идентификатор параметра;

  • name – название параметра.

С таблицей связан триггер tr_parameter_bi, служащий для автогенерации первичного ключа.

Таблица tb_params_log (журнал изменений параметров пользователя):

  • pk_param_log – уникальный идентификатор записи в журнале изменений параметров пользователя;

  • fk_user – внешний ключ для связи с пользователем;

  • fk_parameter – внешний ключ для связи с таблицей параметров;

  • event_time – время изменения;

  • from_val – старое значение (в виде строки);

  • to_val – новое значение (в виде строки);

  • comment – коментарий.

С таблицей связан триггер tr_param_log_bi, служащий для автогенерации первичного ключа.