Обмен и хранение данных¶
Key-Value Storage¶
Кеу-Value Storage (KVS)
- хранилище «ключ-значение» является простейшим хранилищем данных, использующим ключ для доступа к значению. Такие хранилища используются для создания специализированных файловых систем, в качестве кэшей для объектов, а также в системах, спроектированных с прицелом на масштабируемость.
Любой проект имеет большое количество настроек, поэтому хранение и управление настройками проекта — это типовая задача. Для решения этой задачи CPS Platform предлагает использовать готовый модуль - хранилище Key-Value (KV)
, который позволяет хранить и управлять настройками пользователей, сервисов и устройств.
Модуль KVS предоставляет отдельные области для следующих сущностей:
Устройства
Пользователи
Сервисы
А также области с публичными данными для:
Пользователя
Сервиса
Все KV
объединяются в группы в своей области данных.
Группы не нужно явно создавать или удалять.
Название группы — это произвольный набор символов, который используется для полного названия ключа (Key
).
Key
— это идентификатор, который используется для доступа к значению (Value
).
Формат полного названия ключа – это комбинация : Название группы
+ Название ключа
.
Полное название ключа уникально в рамках своей области данных.
Value
— это любой валидный JSON.
В качестве значений в JSON могут быть использованы:
Объект
— это неупорядоченное множество парключ
:значение
, заключённое в фигурные скобки{ }
.Ключ
описывается строкой, между ним и значением стоит символ:
. Парыключ
:значение
отделяются друг от друга запятыми.Массив (одномерный)
— это упорядоченное множество значений. Массив заключается в квадратные скобки[ ]
. Значения разделяются запятыми.Число
.- Литералы
true
,false
иnull
. Строка
— это упорядоченное множество из нуля или более символов юникода, заключенное в двойные кавычки.
CPS Platform предоставляет возможность подписки на изменение значения ключа, который еще не существует.
Последовательности данных¶
Последовательность данных
- основная структура для хранения данных в CPS Platform.
Идентифицируются именем - имя последовательности уникально в своей области данных.
CPS Platform предоставляет отдельные области данных для аждого устройства, пользователя, сервиса.
Все сообщения в последовательности
имеют ключи, по которым автоматически определяется порядок записей в очереди на уровне базы данных.
Типы данных ключей:
Insert time
(auto datetimenow())Timestamp
Integer
Float
Последовательности
используются:
- для хранения истории параметров/значений для последующей их визуализации, например, в виде графика показателей датчиков температуры за определенный промежуток времени.
- для отправки сообщений от устройств к сервису, но не в обратную сторону. В целях безопасности устройства не имеют прав на чтение данных, которые сами записывают в последовательность.
Действия над последовательностями
данных:
- Создание новой очереди, если она не существует
- Удаление очереди
- Добавление сообщения
- Выборка и просмотр всех/первых N/последних N сообщений (сообщения упорядочены)
- Подписка на новые данные последовательности
- Просмотр состояния очереди: количество сообщений, значение минимального и максимального ключей
Очереди команд¶
Команды необходимы для взаимодействия пользовательского приложения или сервиса с устройствами.
Очереди команд
позволяют отправлять на устройства короткие команды и некоторую дополнительную информацию, на которые устройство реагирует в порядке, который определяется временем добавления команды в очередь.
У каждого устройства есть гарантировано одна стандартная очередь команд
.
Оператор может контролировать исполнение команд и время их исполнения. Совместно с очередями команд
можно использовать триггеры
, что позволяет автоматизировать действия только средствами платформы и не требует постоянной обработки в реальном режиме времени со стороны клиентского ПО.
Устройство может иметь несколько независимых друг от друга очередей команд
.
CPS Platform позволяет создавать очереди
, которые идентифицируются именем, имя уникально в своей области данных:
очереди команд
каждого устройстваочереди команд
каждого пользователяочереди команд
каждого сервиса
Команды делятся на:
Добавленные
Взятые к исполнению
Исполненные
Отмененные
Исполнение команды
сдвигает курсор на одно деление в сторону уже исполненных команд. При исполнении команды устройство может записать ответ с данными.
Если команда взята к исполнению, но не исполнена за N секунд, то она автоматически получает состояние отмененной
.
Обработка событий¶
Триггеры
и фильтры
позволяют реализовать простую логику обработки событий, которая не требует анализа всех сообщений в мобильном приложении, что в свою очередь позволяет выполнять действия по наступлению предварительно указанных условий (событий) без вовлечения в этот процесс пользователя, например, пользователь или приложение находится в оффлайн режиме.
Триггеры
и фильтры
назначаются от имени пользователя.
Простые триггеры
и фильтры
могут быть подключены к конкретной очереди команд.
Триггеры
можно назначать на ключи в Key Value Storage
.
В CPS Platform доступны простые фильтры
, например, для сглаживание и прореживания значений во времени.
Действия триггеров
:
- Перенаправление сообщения в другую очередь данных или команд
- Отправка HTTP- запроса
- Нотификация по E-mail
- Нотификация через SMS
Фильтры
используют для изменения или отклонения входных данных от устройств.