]> git.stg.codes - stg.git/blob - doc/help/ch12.xml
Use std::lock_guard instead of STG_LOCKER.
[stg.git] / doc / help / ch12.xml
1 <chapter xml:id="ch12">
2     <title>Приложение В</title>
3         <simplesect>
4         <title>Описание процесса ручной установки БД для СУБД Firebird</title>
5         <para>Для работы модуля необходимо завести учетную запись пользователя СУБД Firebird. Для этого используется утилита управления учетными записями gsec. Пример создания пользователя (подробности: Server configuration and management):</para>
6 <programlisting linenumbering="unnumbered">
7 # gsec -user sysdba -password masterkey
8 GSEC&gt; add stg -pw 123456
9 </programlisting>
10         <para>Для корректной работы модуля пользователь должен иметь право на запись и чтение данных в таблицы БД.</para>
11         <para>Модуль для работы с СУБД Firebird требует наличия правильно созданной базы данных. SQL-скрипт для создания находится в каталоге projects/stargazer/inst/var/00-base-00.sql. В обычных условиях выполнение make install или make install-data автоматически создает базу данных, используя этот скрипт. Для того чтобы создать ее вручную необходимо в файле SQL-скрипта раскомментировать строки:
12 <programlisting linenumbering="unnumbered">
13 connect 'localhost:/var/stg/stargazer.fdb' user 'stg' password '123456';
14 drop database;
15 create database 'localhost:/var/stg/stargazer.fdb' user 'stg' password '123456' default character set win1251;
16 </programlisting>
17         и заменить в них адрес сервера, путь к базу, имя пользователя БД и пароль. После этого выполнить команду isql -i &lt;файл_скрипта&gt;.</para>
18         <formalpara>
19                 <title>Внимание!</title>
20                 <para>Для пользователей Debian и, возможно, некоторых других дистрибутивов командный интерпретатор SQL для СУБД Firebird называется isql-fb.</para>
21         </formalpara>
22         </simplesect>
23         <simplesect>
24         <title>Описание структуры БД для СУБД Firebird</title>
25         <para>Таблица tb_admins (учетные записи администраторов системы):</para>
26         <itemizedlist mark="opencircle">
27                 <listitem><para>pk_admin – уникальный идентификатор учетной записи администратора;</para></listitem>
28                 <listitem><para>login – название учетной записи администратора;</para></listitem>
29                 <listitem><para>passwd – пароль для учетной записи администратора (в зашифрованном виде);</para></listitem>
30                 <listitem><para>chg_conf – флаг, позволяющий менять конфигурационные параметры пользователя;</para></listitem>
31                 <listitem><para>chg_password – флаг, позволяющий менять пароль пользователя;</para></listitem>
32                 <listitem><para>chg_stat – флаг, позволяющий менять статистические данные пользователя;</para></listitem>
33                 <listitem><para>chg_cash – флаг, позволяющий менять количество денег на счету у пользователя;</para></listitem>
34                 <listitem><para>usr_add_del – флаг, позволяющий удалять и добавлять пользователей;</para></listitem>
35                 <listitem><para>chg_tariff – флаг, позволяющий управлять тарифами;</para></listitem>
36                 <listitem><para>chg_admin – флаг, позволяющий управлять учетными записями администраторов системы;</para></listitem>
37                 <listitem><para>chg_service – зарезервировано;</para></listitem>
38                 <listitem><para>chg_corporation – зарезервировано.</para></listitem>
39         </itemizedlist>
40         <para>С таблицей связан триггер tr_admin_bi, выполняющий автогенерацию идентификатора (первичного ключа) учетных записей администраторов системы.</para>
41         <para>Таблица tb_tariffs (описание тарифов):</para>
42         <itemizedlist mark="opencircle">
43                 <listitem><para>pk_tariff – уникальный идентификатор тарифа;</para></listitem>
44                 <listitem><para>name – название тарифа;</para></listitem>
45                 <listitem><para>fee – абонплата;</para></listitem>
46                 <listitem><para>free – количество бесплатных мегабайт трафика, входящих в абонплату;</para></listitem>
47                 <listitem><para>passive_cost – стоимость «заморозки» пользователя;</para></listitem>
48                 <listitem><para>traf_type – тип подсчета трафика (upload, download, upload+download, MAX(upload, download)).</para></listitem>
49         </itemizedlist>
50         <para>С таблицей связана хранимая процедура sp_add_tariff, получающая в качестве параметров название тарифа и количество направлений. Возвращает сгенерированный идентификатор (первичный ключ) тарифа. При вызове создает запись в таблице tb_tariffs и указанное количество записей в таблице tb_tariffs_params, соответствующее количеству направлений. С таблицей так же связана хранимая процедура sp_delete_tariff, получающая на вход название тарифа и удаляющая его из таблицы tb_tariffs и связанные с ним данные из таблицы tb_tariffs_params.</para>
51         <para>Таблица tb_tariffs_params (параметры тарифов):</para>
52         <itemizedlist mark="opencircle">
53                 <listitem><para>pk_tariff_param – уникальный идентификатор записи информации о направлении в тарифе;</para></listitem>
54                 <listitem><para>fk_tariff – внешний ключ для связи с тарифом;</para></listitem>
55                 <listitem><para>dir_num – номер направления;</para></listitem>
56                 <listitem><para>price_day_a – стоимость 1 Мб трафика днем до превышения порога;</para></listitem>
57                 <listitem><para>price_day_b – стоимость 1 Мб трафика днем после превышения порога;</para></listitem>
58                 <listitem><para>price_night_a – стоимость 1 Мб трафика ночью до превышения порога;</para></listitem>
59                 <listitem><para>price_night_b – стоимость 1 Мб трафика ночью после превышения порога;</para></listitem>
60                 <listitem><para>threshold – порог по трафику;</para></listitem>
61                 <listitem><para>time_day_begins – время начала дня;</para></listitem>
62                 <listitem><para>time_day_ends – время конца дня.</para></listitem>
63         </itemizedlist>
64         <para>С таблицей связан триггер tr_tariffs_params_bi, выполняющий автогенерацию идентификаторов записей (первичных ключей) в таблице.</para>
65         <para>Таблица tb_corporations – зарезервирована.</para>
66         <para>С таблицей связан триггер tr_corporations_bi, выполняющий автогенерацию первичных ключей.</para>
67         <para>Таблица tb_users (учетные записи пользователей системы):</para>
68         <itemizedlist mark="opencircle">
69                 <listitem><para>pk_user – уникальный идентификатор пользователя;</para></listitem>
70                 <listitem><para>fk_tariff – внешний ключ для связи с тарифом;</para></listitem>
71                 <listitem><para>fk_tariff_change – внешний ключ для связи с тарифом (может быть пустым);</para></listitem>
72                 <listitem><para>fk_corporation – зарезервировано;</para></listitem>
73                 <listitem><para>address – адрес пользователя;</para></listitem>
74                 <listitem><para>always_online – флаг «всегда on-line»;</para></listitem>
75                 <listitem><para>credit – величина кредита в деньгах;</para></listitem>
76                 <listitem><para>credit_expire – дата окончания действия кредита;</para></listitem>
77                 <listitem><para>disabled_detail_stat — отключение детальной статистики пользователя;</para></listitem>
78                 <listitem><para>disabled – флаг «отключен»;</para></listitem>
79                 <listitem><para>email – email пользователя;</para></listitem>
80                 <listitem><para>grp – название группы пользователя;</para></listitem>
81                 <listitem><para>note – примечание;</para></listitem>
82                 <listitem><para>passive – флаг «заморозки»;</para></listitem>
83                 <listitem><para>passwd – пароль пользователя (в открытом виде);</para></listitem>
84                 <listitem><para>phone – номер телефона пользователя;</para></listitem>
85                 <listitem><para>name – название учетной записи пользователя (логин);</para></listitem>
86                 <listitem><para>real_name – реальное имя пользователя.</para></listitem>
87         </itemizedlist>
88         <para>С таблицей связана хранимая процедура sp_add_user, принимающая на вход 2 параметра: название учетной записи пользователя и количество направлений. Возвращает сгенерированное значение первичного ключа. При вызове создает запись в таблице tb_users, соответствующую ей запись в таблице tb_stats и указанное количество записей в таблице tb_stats_traffic. Так же с таблицей связана хранимая процедура sp_delete_user, получающая в качестве входного параметра название учетной записи (логин) пользователя и удаляющая учетную запись и всю сопутствующую информацию (данные пользователя, IP-адреса, сообщения, журналы параметров, статистику и детальную статистику, журналы сессий) о пользователе из базы.</para>
89         <para>Таблица tb_detail_stats (детальная статистика по пользователям системы):</para>
90         <itemizedlist mark="opencircle">
91                 <listitem><para>pk_detail_stat – уникальный идентификатор записи детальной статистики;</para></listitem>
92                 <listitem><para>fk_user – внешний ключ для связи с пользователем;</para></listitem>
93                 <listitem><para>dir_num – номер направления;</para></listitem>
94                 <listitem><para>ip – удаленный IP-адрес (в формате 32-битного беззнакового целого);</para></listitem>
95                 <listitem><para>download – количество принятых байт;</para></listitem>
96                 <listitem><para>upload – количество отправленных байт;</para></listitem>
97                 <listitem><para>cost – стоимость объема данных;</para></listitem>
98                 <listitem><para>from_time – время начала сессии;</para></listitem>
99                 <listitem><para>till_time – время завершения сеанса.</para></listitem>
100         </itemizedlist>
101         <para>С таблицей связан триггер tr_detail_stats_bi, выполняющий автогенерацию уникальных идентификаторов записей детальной статистики (первичных ключей).</para>
102         <para>Таблица tb_services – зарезервирована. С ней связан триггер tr_services_bi, выполняющий автогенерацию первичных ключей. Так же с ней связана хранимая процедура sp_delete_service, удаляющая всю информацию связанную с записью в данной таблице.</para>
103         <para>Таблица tb_users_services – зарезервирована. С ней связан триггер tr_users_services_bi, выполняющий автогенерацию первичных ключей.</para>
104         <para>Таблица tb_messages (сообщения пользователям):</para>
105         <itemizedlist mark="opencircle">
106                 <listitem><para>pk_message – уникальный идентификатор сообщения;</para></listitem>
107                 <listitem><para>fk_user – внешний ключ для связи с пользователем;</para></listitem>
108                 <listitem><para>ver – версия формата сообщения;</para></listitem>
109                 <listitem><para>msg_type – тип сообщения;</para></listitem>
110                 <listitem><para>last_send_time – время последней отсылки сообщения;</para></listitem>
111                 <listitem><para>creation_time – время создания сообщения;</para></listitem>
112                 <listitem><para>show_time – время показа сообщения;</para></listitem>
113                 <listitem><para>repeat – количество повторений;</para></listitem>
114                 <listitem><para>repeat_period – период повторения;</para></listitem>
115                 <listitem><para>msg_text – текст сообщения.</para></listitem>
116         </itemizedlist>
117         <para>С таблицей связана хранимая процедура sp_add_message, которая получает на вход идентификатор, параметры и текст сообщения. В случае если идентификатор пустой – сообщение добавляется в таблицу. Если не пустой – параметры и текст сообщения обновляются. Процедура возвращает идентификатор сообщения.</para>
118         <para>Таблица tb_stats (статистика пользователя):</para>
119         <itemizedlist mark="opencircle">
120                 <listitem><para>pk_stat – уникальный идентификатор записи статистики;</para></listitem>
121                 <listitem><para>fk_user – внешний ключ для связи с пользователем;</para></listitem>
122                 <listitem><para>cash – количество денег на счету;</para></listitem>
123                 <listitem><para>free_mb – количество не истраченных бесплатных Мб;</para></listitem>
124                 <listitem><para>last_activity_time – время последней активности пользователя;</para></listitem>
125                 <listitem><para>last_cash_add – последнее пополнение счета;</para></listitem>
126                 <listitem><para>last_cash_add_time – время последнего пополнения счета;</para></listitem>
127                 <listitem><para>passive_time – время, проведенное пользователем в «замороженном» состоянии за месяц (используется для вычисления объема снимаемой абонплаты);</para></listitem>
128                 <listitem><para>stats_date – дата записи статистики (месячной статистики).</para></listitem>
129         </itemizedlist>
130         <para>С таблицей связана хранимая процедура sp_add_stat, получающая на вход набор данных статистики, добавляющая запись в таблицу и возвращающая сгенерированный первичный ключ записи.</para>
131         <para>Таблица tb_stats_traffic (статистика по направлениям):</para>
132         <itemizedlist mark="opencircle">
133                 <listitem><para>pk_stat_traffic – уникальный идентификатор записи статистики;</para></listitem>
134                 <listitem><para>fk_stat – внешний ключ для связи со статистикой пользователя (текущей или месячной);</para></listitem>
135                 <listitem><para>dir_num – номер направления;</para></listitem>
136                 <listitem><para>download – объем входящего трафика;</para></listitem>
137                 <listitem><para>upload – объем исходящего трафика.</para></listitem>
138         </itemizedlist>
139         <para>С таблицей связан триггер tr_stat_traffic_bi, служащий для автогенерации первичного ключа.</para>
140         <para>Таблица tb_users_data (данные пользователя):</para>
141         <itemizedlist mark="opencircle">
142                 <listitem><para>pk_user_data – уникальный идентификатор записи;</para></listitem>
143                 <listitem><para>fk_user – внешний ключ для связи с пользователем;</para></listitem>
144                 <listitem><para>num – номер поля данных;</para></listitem>
145                 <listitem><para>data – текст поля данных.</para></listitem>
146         </itemizedlist>
147         <para>С таблицей связан триггер tr_user_data_bi, служащий для автогенерации первичного ключа.</para>
148         <para>Таблица tb_allowed_ip (IP-адреса пользователя):</para>
149         <itemizedlist mark="opencircle">
150                 <listitem><para>pk_allowed_ip – уникальный идентификатор записи;</para></listitem>
151                 <listitem><para>fk_user – внешний ключ для связи с пользователем;</para></listitem>
152                 <listitem><para>ip – IP-адрес (в формате 32-битного беззнакового целого);</para></listitem>
153                 <listitem><para>mask – маска (в формате 32-битного беззнакового целого).</para></listitem>
154         </itemizedlist>
155         <para>С таблицей связан триггер tr_allowed_ip_bi, служащий для автогенерации первичного ключа.</para>
156         <para>Таблица tb_sessions_log (журнал сессии):</para>
157         <itemizedlist mark="opencircle">
158                 <listitem><para>pk_session_log – уникальный идентификатор записи в журнале;</para></listitem>
159                 <listitem><para>fk_user – внешний ключ для связи с пользователем;</para></listitem>
160                 <listitem><para>event_time – время события;</para></listitem>
161                 <listitem><para>event_type – тип события (connect/disconnect);</para></listitem>
162                 <listitem><para>ip – IP-адрес пользователя.</para></listitem>
163         </itemizedlist>
164         <para>С таблицей связана хранимая процедура sp_append_session_log, получающая в качестве параметров данные для записи в журнал сессии. Добавляет запись в журнал и возвращает сгенерированный первичный ключ.</para>
165         <para>Таблица tb_sessions_data (данные сессии):</para>
166         <itemizedlist mark="opencircle">
167                 <listitem><para>pk_session_data – уникальный идентификатор записи данных;</para></listitem>
168                 <listitem><para>fk_session_log – внешний ключ для связи с записью в журнале сессии;</para></listitem>
169                 <listitem><para>dir_num – номер направления;</para></listitem>
170                 <listitem><para>session_upload – объем исходящего трафика за сессию;</para></listitem>
171                 <listitem><para>session_download – объем входящего трафика за сессию;</para></listitem>
172                 <listitem><para>month_upload – объем исходящего трафика за месяц;</para></listitem>
173                 <listitem><para>month_download – объем входящего трафика за месяц.</para></listitem>
174         </itemizedlist>
175         <para>С таблицей связан триггер tr_session_data_bi, служащий для автогенерации первичного ключа.</para>
176         <para>Таблица tb_parameters (параметры пользователя):</para>
177         <itemizedlist mark="opencircle">
178                 <listitem><para>pk_parameter – уникальный идентификатор параметра;</para></listitem>
179                 <listitem><para>name – название параметра.</para></listitem>
180         </itemizedlist>
181         <para>С таблицей связан триггер tr_parameter_bi, служащий для автогенерации первичного ключа.</para>
182         <para>Таблица tb_params_log (журнал изменений параметров пользователя):</para>
183         <itemizedlist mark="opencircle">
184                 <listitem><para>pk_param_log – уникальный идентификатор записи в журнале изменений параметров пользователя;</para></listitem>
185                 <listitem><para>fk_user – внешний ключ для связи с пользователем;</para></listitem>
186                 <listitem><para>fk_parameter – внешний ключ для связи с таблицей параметров;</para></listitem>
187                 <listitem><para>event_time – время изменения;</para></listitem>
188                 <listitem><para>from_val – старое значение (в виде строки);</para></listitem>
189                 <listitem><para>to_val – новое значение (в виде строки);</para></listitem>
190                 <listitem><para>comment – коментарий.</para></listitem>
191         </itemizedlist>
192         <para>С таблицей связан триггер tr_param_log_bi, служащий для автогенерации первичного ключа.</para>
193          <para>
194          <mediaobject>
195             <imageobject>
196                 <imagedata fileref="images/firebird-erd.png" format="PNG"/>
197             </imageobject>
198         </mediaobject>
199         </para> 
200         </simplesect>
201 </chapter>