Обмен и хранение данных

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

Фильтры используют для изменения или отклонения входных данных от устройств.