Структуры

Материал из Hivext Wiki

Перейти к: навигация, поиск

Содержание

Структуры

Сервис структур позволяет гибко управлять базой данных, создавать таблицы, поля с указанием типа, делать записи в таблицах, проводить ассоциации между данными. Сервис базируется на технологии ORM (технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая "виртуальную объектную базу данных"). Сервис структур содержит собственный SQL процессор (HiveQL) для структурированных запросов что полностью исключает возможность вредоносных инъекций. Сервис управления доступом также работает со структурами, позволяя задавать индивидуальные права доступа как на типы данных, так и на объекты.

Варианты использования сервиса:

  • Разработка любых приложений где требуется хранение информации;
  • Обмен данными между клиентами через объекты сервиса;
  • Построение API импорта данных из ваших проектов для других разработчиков приложений;
  • Дублирование данных чтобы снизить риски их потери, шифрование если это необходимо.

Общая информация

Параметр Значение
Версия сервиса 1.0 [stable]
Пространство имен Data
Имя сервиса Base
Локальный доступ hivext.data.base.{название_метода}
Сетевой доступ http://api.hivext.ru/1.0/data/base/{протокол}/{название_метода}
Характеристика
  • Объектно реляционная проекция (ORM);
  • Сервис и данные доступны на любой платформе и устройстве где поддерживаются HTTP запросы;
  • Работа с базой данных на уровне типов и объектов;
  • SQL процессор для структурированных запросов к объектам (выборка по значениям свойств и их сочетаниям);
  • Гибкое управление данными через методы сервиса;
  • Уникальные поля и специальные типы данных.
Квоты
  • При запросе массивов возвращается не более 1000 объектов за один запрос.
Консоль http://code.hivext.ru/development/APIConsole/#Data.Base

Методы

Разделение методов сервиса по категориям

Типы Объекты

DefineType
Определение нового типа данных.
UndefineType
Удаление типа данных.
RenameType
Переименование типа данных.
GetType
Получение информации о типе.
GetTypes
Получение информации о всех типах для заданного приложения.
GetTypesCount
Получение общего количества типов для заданного приложения.
AddField
Добавить поле в указанный тип данных.
RemoveField
Удалить поле из указанного типа данных.
RenameField
Переименовать поле для указанного типа данных.
SetUniqueFields
Указать уникальные поля в типе данных.
GetUniqueFields
Получение информации о уникальных полях типа данных.

CreateObject
Создание объекта.
CreateObjects
Создание нескольких объектов.
SetObject
Запись данных в объект.
SetObjects
Запись данных в несколько объектов.
GetObject
Получение объекта.
GetObjects
Получение множества объектов.
GetObjectsByCriteria
Получение множества объектов по заданным критериям.
GetObjectsCount
Получение общего количества объектов заданного типа и критерия.
DeleteObject
Удаление объекта.
DeleteObjectsByCriteria
Удаление множества объектов по заданным критериям.
SetProperty
Записать значение в свойство объекта.
GetProperty
Прочитать значение из свойства объекта.
SerializeObjects [доступ ограничен]
Сериализация объектов.
DeserializeObjects [доступ ограничен]
Десериализация объектов.

Поддерживаемые типы данных

Типы данных
Название типа Описание типа
Базовые типы данных
boolean
byte
short
integer
long
float
double
char
string Текстовый тип данных, по умолчанию максимум 255 символов.
string(N) Текстовый тип данных, может содержать максимум N символов, где N любое целое число от 1 до 10240.
text Текстовый тип данных, может содержать максимум 65000 символов.
mtext Текстовый тип данных, может содержать максимум 16000000 символов.
list Коллекция (список) объектов типа string.
list<type> Коллекция (список) объектов определенного типа, где type - название типа данных.
set Коллекция (набор) уникальных объектов типа string.
set<type> Коллекция (набор) уникальных объектов определенного типа, где type - название типа данных.
map Набор объектов парами ключ/значение типа string.
map<type, type> Набор объектов парами ключ/значение определенного типа, где type - название типа данных.

Дата и время
По умолчанию свойства данных типов содержат время создания объекта по Гринвичу.

time HH:MM:SS
date YYYY-MM-DD
datetime YYYY-MM-DD HH:MM:SS
timestamp YYYY-MM-DD HH:MM:SS
year YYYY
millisec Время в миллисекундах, которое прошло с 1 января 1970 года. Также известно как unix time.

Специальные типы данных
Поля данных типов заполняются платформой автоматически при создании/обновлении объекта. Поля можно использовать в запросах по критериям. Запись в них запрещена.

user Тип данных пользователь. Поля данного типа содержат идентификатор пользователя (uid) создавшего/обновившего объект (для гостей uid = 0).
signature Тип данных подпись устройства. Поля данного типа содержат подпись устройства создавшего/обновившего объект.

Комплексные типы данных

Созданные типы данных можно использовать для создания комплексных типов данных. Например
DefineType(appid, session, "SimpleType", { PropB : "string" });
DefineType(appid, session, "ComplexType", { PropA : "int", Simple : "SimpleType" });

В результате получится следующий тип данных:

ComplexType : {
    PropA : "int",
    Simple : {
        PropB : "string"
    }
}

Метод CreateObject(..., "ComplexType") кроме создания объекта типа ComplexType создаст объект типа SimpleType в другой таблице. В свойстве Simple будет содержаться id созданного объекта типа SimpleType.

Методы выборки GetObject, GetObjects, GetObjectsByCriteria, GetProperty для поля Simple вернут индекс (id) объекта. Если в требуется вернуть сам объект, а не него индекс, в параметре eager (данный параметр содержат все методы выборки) указывается имя свойства для которого вернется объект.

Команды HiveQL процессора

HQL язык структурированных запросов к объектам
Реляционные операторы
= равно
<> не равно
< меньше
<= меньше либо равно
> больше
>= больше либо равно
Специальные операторы
LIKE Выборка по части строки. В качестве условия используются групповые символы (wildcards).
ILIKE Выборка по части строки без учета регистра (wildcards).
NOT LIKE Выборка по не содержащейся части строки (wildcards).
IS NULL Выборка по пустым значениям.
IS NOT NULL Выборка по не пустым значениям.
Булевы операторы
NOT Логическое НЕ
AND Логическое И
OR Логическое ИЛИ
Групповые символы (wildcards)
_ Символ подчеркивания замещает любой одиночный символ. Например, 'b_t' будет соответствовать словам 'bat' или 'bit', но не будет соответствовать 'brat'.
% Знак процента замещает последовательность любого числа символов (включая символы нуля). Например '%p%t' будет соответствовать словам 'put', 'posit', или 'opt', но не 'spite'.
Упорядочение выборки
ORDER BY

Команда упорядочения выборки. Формат команды:
ORDER BY имя_свойства [ASC|DESC][, имя_свойства [ASC|DESC], ...], где ASC - упорядочение по возрастанию (можно не указывать, подразумевается по умолчанию), DESC - упорядочение по убыванию. Через запятую можно перечислить несколько свойств по значениям которых требуется упорядочить выборку.

Примеры:

  • id IS NOT NULL - все объекты;
  • date > 123456789 - все объекты со свойством date большим 123456789;
  • model = "Desert" OR (code > 100 AND code <= 200) - все объекты у которых в свойстве model указано Desert или если свойство code содержит значение в диапазоне от 100 до 200 включительно;
  • StateName LIKE "A%" AND CityName IS NOT NULL - для всех областей начинающихся на А, взять города, которые содержат название;
  • ORDER BY UniverseName, GalaxyName - вернуть объекты отсортированные по значениям свойств UniverseName и GalaxyName в алфавитном порядке;
  • Price > 100 AND Price < 200 ORDER BY Price DESC - вернуть объекты, значения свойства Price которых находится в диапазоне 100-200 в порядке убывания.

Клиенты

Язык Адрес
JavaScript http://api.hivext.ru/1.0/data/base.js

Примеры

Server-Side
Java - Типы данных и объекты Java
Javascript - Типы данных и объекты Javascript
Client-Side

Javascript - Типы данных
Javascript - Объекты

Javascript
Личные инструменты