Имя БД
Если не изменить значение по умолчанию, база данных будет называться «kaskad».
Политики хранения
Каждая настроенная архивная группа для backend-коннектора соответствует определенной политике хранения. Имя политики хранения – это “имя группы», настроенное в графическом интерфейсе пользователя.
Срок хранения всех политик в базе данных бесконечен. Это делается для того, чтобы предотвратить автоматическое удаления политик хранения. Вместо этого настроенный пользователем период хранения используется внутри backend-коннектора для регулярной проверки того, истек ли сегмент в заданном периоде хранения. Если это так, то backend-коннектор делает резервную копию сегмента, прежде чем он будет удален.
Измерения
Имя измерения всегда совпадает с именем политики хранения.
Тип значения (Valuetype)
Тип значения используется для преобразования прочитанного значения обратно в исходное значение (original value) «КАСКАД Цифра». Он так же указывает, какой столбец в БД должен быть прочитан.
Тип значений | Тип элемента | Суффикс и тип столбца |
---|---|---|
0 | bool | bool |
1 | int | int |
2 | unsigned int | int |
3 | float | float или float_special |
4 | string | string |
5 | blob | Неприменимо |
6 | lang string | string |
7 | char | int |
8 | bit32 | int |
9 | bit64 | int |
10 | time | int |
11 | dpid | string |
12 | long | int |
13 | unsigned long | int |
all | dyn | dyn |
ПРИМЕЧАНИЯ
- если столбец dyn не пуст (не null), он имеет приоритет в обработке
- если столбец float_special не пуст (не null), то он имеет приоритет над float
- float_special хранится в виде строки
Хранение массивов
Если тип элемента – dyn, то он всегда хранится в столбце с суффиксом «dyn_».
Чтобы поместить все элементы в один столбец, используется пользовательский формат.
Этот формат представляет собой повторяющуюся последовательность:
NumberOfBytes:<Bytes>
ПРИМЕР
5:Hello6:World!
Тип данных langString использует формат, полученный из приведенной выше последовательности.
Проще говоря, langString – это массив строк. Но по умолчанию он хранится внутри столбца с суффиксом «string_», но хранится как массив.
Это делает dyn_LangString массивом массивов, который хранится в следующем формате:
ПРИМЕР
14:5:Hello5:Hallo9:3:You2:Du
14 байт – это первая запись в массиве, которая представляет из себя запись 5:Hello5:Hallo
.
Далее следует 9 байт второй записи, которая соответствует 3:You2:Du
.
Вся запись целиком представляет из себя одну строку типа LangString, которая сама по себе является строковым массивом
События / Значения
Имя столбца | Тип | Тип данных | Описание |
---|---|---|---|
time | – | – | Время, когда значение было изменено |
name | tag | – | Имя элемента точки данных |
тип переменной | tag | – | Тип «КАСКАД Цифра» |
alias | tag | – | |
Тип значений | field | int | см. таблицу типов значений |
original_value_suffix | field | – | суффикс определяется в зависимости от типа значения |
_status64 | field | int | |
_manager | field | int | |
_user | field | int | |
_unit | field | string | |
_comment | field | string |
Алармы/Оповещения
Языковые строки
Способ хранения языковых строк алармов отличается от способа хранения обычных языковых строк. Каждая запись языковой строки аларма получает свой собственный столбец вместо использования формата хранения массивов. Это необходимо для реализации фильтрации в «КАСКАД Цифра».
Формат для хранения следующий:
columnName_LangIdSuffix
Пример
_abbr_3
это означало бы, что в этом столбце содержится 4-й язык (индекс начинается с 0), определенный в проекте.
Имя столбца | Тип | Тип данных | Описание |
---|---|---|---|
time | – | – | Время прихода аларма |
name | tag | – | Имя элемента точки данных |
тип переменной | tag | – | Тип «КАСКАД Цифра» |
alias | tag | – | |
_dpeid_dp | tag | – | Идентификатор точки данных |
_dpeid_el | tag | – | Идентификатор элемента точки данных |
alarmvalue_type | field | int | см. таблицу типов значений |
alarmvalue_suffix | field | * | суффикс зависит от alarmvalue_type |
_abbr_ID | field | string | Представляет из себя langString |
_ack_state | field | int | |
_ack_time | field | float | |
_ack_type | field | int | |
_ackable | field | bool | |
_alert_color | field | string | |
_alert_font_style | field | string | |
_alert_fore_color | field | string | |
_alert_id | field | string | |
_class | field | string | |
_comment | field | string | |
_dest | field | int | |
_dest_text_ID | field | string | Представляет из себя langString |
_direction | field | bool | |
_inact_ack | field | bool | |
_panel | field | string | |
_partn_idx | field | int | |
_partner | field | string | |
_prior | field | int | |
_single_ack | field | bool | |
_state | field | int | |
_system_time | field | string | |
_text_ID | field | string | Представляет из себя langString |
_value_status64 | field | int | |
_visible | field | bool | |
countOfValidAddValues | field | int | Количество добавленных значений |
_add_value_n_type | field | int | см. таблицу типов значений |
_add_value_n_suffix | field | * | Суффикс зависит от _add_value_n_type |
Общие замечания
- Запрос должен выбирать хотя бы один файл, иначе результат не будет возвращен.
- Беззнаковые целые изначально не поддерживаются в базе данных, поэтому использваоние выражения WHERE для переменных этого типа может привести к неожиданным результатам запроса.
Запрос беззнаковых целых из базы данных требует ручного приведения типа результирующего значения к беззнаковому типу. - Столбец времени (
time
) всегда находится в форматеUTC
, и он всегда извлекается как первый столбец.
Правила использования кавычек
Выражение | Тип кавычек | Пример |
---|---|---|
SELECT | двойные кавычки | SELECT "_visible" |
FROM | нет кавычек | FROM Events.Event |
WHERE <имя столбца> | двойные кавычки | Где "_state" |
WHERE <значение строки или тега> | одиночные кавычки | WHERE ... = 'text' |
WHERE <числовое значение> | нет кавычек | WHERE ... > 15 |
Регулярное выражение | косая черта | WHERE ... =~ /^[0-9]?/ |
Пример запросов
Проверка работы базы данных в целом
SELECT * FROM Event.Event LIMIT 10
Запрос значений с плавающей точкой
SELECT "name", "original_value_float", "original_value_float_special" FROM Event.Event WHERE "valuetype" = 3
Запрос всех значений определенного типа
SELECT * FROM Event.Event WHERE "variabletype" = 'ExampleDP_Float'
Использование регулярного выражения для запроса всех столбцов «_text» для алармов
SELECT "name", /^_text.*/ FROM Alert.Alert