Многомодельные возможности базы данных SQL Azure & SQL Управляемый экземпляр

ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных SQL Azure Управляемый экземпляр SQL Azure

Многомодельные базы данных позволяют хранить и работать с данными, представленными в нескольких форматах данных, таких как реляционные данные, графы, документы JSON/XML, пары "ключ-значение" и т. д.

Когда следует использовать возможности нескольких моделей

Семейство продуктов Azure SQL предназначено для работы с реляционной моделью, обеспечивающей наилучшую производительность в большинстве случаев для различных приложений общего назначения. Однако семейство продуктов Azure SQL не ограничивается только реляционными данными. Семейство продуктов Azure SQL позволяет использовать разнообразные нереляционные форматы, тесно интегрированные в реляционную модель. Вы должны использовать Многомодельные возможности семейства продуктов Azure SQL в следующих случаях:

  • У вас есть некоторые сведения или структуры, которые лучше подходят для моделей NoSQL и вы не хотите использовать отдельную базу данных NoSQL.
  • Большая часть данных подходит для реляционной модели, и необходимо моделировать некоторые части данных в стиле NoSQL.
  • Вы хотите использовать многофункциональный язык Transact-SQL для запроса и анализа реляционных и NoSQL данных, а также интегрировать его с различными инструментами и приложениями, которые могут использовать язык SQL.
  • Вы хотите применить такие функции базы данных, как технологии в памяти , чтобы повысить производительность аналитической или обрабатывающей структуры данных NoSQL, использовать репликацию транзакций или доступные для чтения реплики для создания копии данных в другом месте и разгрузки некоторых аналитических рабочих нагрузок из базы данных-источника.

Обзор

Семейство продуктов Azure SQL предоставляет следующие Многомодельные функции:

  • Функции графа. Позволяют представлять данные в виде набора узлов и ребер, а также запрашивать данные графа, используя стандартные запросы Transact-SQL, улучшенные за счет оператора графа MATCH.

  • Возможности JSON. Позволяют помещать JSON-документы в таблицы, преобразовывать реляционные данные в JSON-документы и наоборот. Вы можете использовать стандартный язык Transact-SQL, расширенный с помощью функций JSON, чтобы выполнять синтаксический анализ документов, и некластеризованные индексы, индексы columnstore или таблицы, оптимизированные для памяти, чтобы оптимизировать запросы.

  • Пространственные функции. Позволяют хранить географические и геометрические данные, индексировать их с использованием пространственных индексов и извлекать данные с помощью пространственных запросов.

  • Возможности XML. Позволяют хранить, индексировать XML-данные в базе данных и использовать собственные операции XQuery и XPath для работы с XML-данными. Семейство продуктов Azure SQL имеет специализированный встроенный обработчик запросов XML, обрабатывающий XML-данные.

  • Пары "ключ-значение" не поддерживаются явно в качестве специальных функций, так как пары "ключ-значение" могут быть изначально смоделированы как таблицы с двумя столбцами.

    Примечание

    Вы можете использовать выражение пути JSON, выражения XQuery/XPath, пространственные функции и выражения запроса по графам в одном запросе Transact-SQL для доступа к любым данным, хранящимся в базе данных. Кроме того, любое средство или язык, поддерживающие выполнение запросов Transact-SQL, также могут использовать этот интерфейс запросов для доступа к данным нескольких моделей. Это ключевое различие в сравнении с многомодельными базами данных, такими как Azure Cosmos DB, которое предоставляет специальный API для различных моделей данных.

В следующих разделах вы узнаете о наиболее важных многомодельных возможностях семейства продуктов SQL Azure.

Функции графа

Семейство продуктов Azure SQL предоставляет возможности баз данных Graph для моделирования связей "многие ко многим" в базе данных. Граф состоит из узлов (или вершин) и ребер (или связей). Узел представляет сущность (например, пользователя или организацию), а ребро — связь между двумя узлами, которые оно соединяет (например, отметки "Нравится" или друзья). Ниже приведены некоторые функции, благодаря которым графовая база данных является уникальной.

  • Ребра или связи в графовой базе данных являются сущностями первого класса, с которым могут быть связаны атрибуты или свойства.
  • Одно ребро может гибко соединить несколько узлов в графовой базе данных.
  • Вы можете легко выразить запросы на сопоставление шаблонов и навигацию со множеством переходов.
  • Вы можно легко выразить транзитивное замыкание и полиморфные запросы.

Связи графа и возможности запросов Graph интегрированы в TRANSACT-SQL и получают преимущества использования ядра СУБД SQL Server в качестве базовой системы управления базами данных.

Когда следует использовать возможности графа

Все, чего можно достигнуть с графовой базой данных, возможно и с реляционной базой данных. Тем не менее графовая база данных может упростить выражение определенных запросов. Графовую базу данных следует использовать при наличии следующих условий:

  • При моделировании иерархических данных, в которых один узел может иметь несколько родительских элементов ( в таком случае HierarchyId нельзя использовать).
  • Модель вашего приложения содержит сложные связи "многие ко многим": по мере развития приложения добавляются новые связи.
  • Вам необходимо анализировать взаимосвязанные данные и связи.

Возможности JSON

Семейство продуктов Azure SQL позволяет анализировать и запрашивать данные, представленные в формате нотация объектов JavaScript (JSON) , а также экспортировать реляционные данные в виде текста JSON.

JSON – это распространенный формат данных, который используются для обмена данными в современных мобильных и веб-приложениях. Кроме того, формат JSON используется для хранения частично структурированных данных в файлах журнала или базах данных NoSQL, например базе данных Azure Cosmos DB. Многие веб-службы REST возвращают результаты в формате текста JSON или принимают данные в формате JSON. Большинство служб Azure, таких как azure когнитивный Поиск, служба хранилища Azureи Azure Cosmos DB , имеют конечные точки RESTful, возвращающие или использующие JSON.

Семейство продуктов Azure SQL позволяет легко работать с данными JSON и интегрировать базу данных с современными службами, а также предоставляет следующие функции для работы с данными JSON.

Функции JSON

Если имеется текст JSON, то можно извлечь данные из JSON или проверить правильность его форматирования с помощью встроенных функций JSON_VALUE, JSON_QUERY и ISJSON. Функция JSON_MODIFY позволяет обновить значение внутри текста JSON. Если требуются более сложные запросы и анализ, то с помощью функции OPENJSON можно преобразовать массив объектов JSON в набор строк. С возвращенным результирующим набором можно выполнить любой SQL-запрос. Наконец, можно использовать предложение FOR JSON , которое позволяет форматировать данные, хранящиеся в реляционных таблицах в виде текста JSON.

Дополнительные сведения см. в разделе как работать с данными JSON. JSON — это основная SQL Server компонента ядра СУБД.

Когда следует использовать возможность JSON

Модели документов могут использоваться вместо реляционных моделей в некоторых конкретных сценариях:

  • Высокая степень нормализации схемы не дает существенных преимуществ, так как вы одновременно обращаетесь ко всем полям объектов или не обновляете нормализованные части объектов. Тем не менее нормализованная модель увеличивает сложность запросов из-за большего количества таблиц, которые необходимо соединить для получения данных.
  • Вы работаете с приложениями, которые изначально используют JSON-документы и в которых применяются модели обмена данными или модели данных, и вы не хотите вводить дополнительные уровни, преобразовывающие реляционные данные в формат JSON и наоборот.
  • Необходимо упростить модель данных путем отмены нормализации дочерних таблиц или шаблонов "сущность — объект — значение".
  • Вам нужно загрузить или экспортировать данные, хранящиеся в формате JSON, без использования какого-либо дополнительного средства, анализирующего данные.

Пространственные функции

Пространственные данные представляют сведения о физическом расположении и форме геометрических объектов. Эти объекты могут быть расположениями точек или более сложными объектами, такими как страны, регионы, дороги или озера.

Два поддерживаемых пространственных типа данных:

  • Геометрический тип данных представляет данные в евклидовой (плоской) системе координат,
  • а географический — в сферической.

Существует ряд пространственных объектов, которые можно использовать в семействе продуктов SQL Azure для анализа и запроса данных, представленных в формате нотация объектов JavaScript (JSON) , и экспорта реляционных данных в виде текста JSON. Например, " точка", " LineString", " многоугольник" и т. д.

Семейство продуктов Azure SQL также предоставляет специализированные пространственные индексы , которые можно использовать для повышения производительности пространственных запросов.

Поддержка пространственного механизма — это основная SQL Server компонента ядра СУБД.

Функции XML

Ядро СУБД SQL Server предоставляет мощную платформу для разработки многофункциональных приложений для управления частично структурированными данными. Поддержка XML встроена во все компоненты ядра СУБД и включает в себя следующее:

  • Тип XML-данных. Значения XML можно изначально хранить в столбце типа XML-данных, который можно типизировать в соответствии с коллекцией схем XML или оставить нетипизированным. XML-столбец можно индексировать.
  • Возможность указывать запросы XQuery к XML-данным, хранящимся в столбцах и переменных типа XML. Функции XQuery можно использовать в любом запросе Transact-SQL, который получает доступ к любой модели данных, используемой в базе данных.
  • Можно автоматически индексировать все элементы в XML-документах с использованием первичного XML-индекса или указать точные пути, которые должны индексироваться с использованием вторичного XML-индекса.
  • OPENROWSET, позволяющий применять массовую загрузку XML-данных.
  • Преобразование реляционных данных в XML-формат.

XML — это основная SQL Server компонента ядра СУБД.

Когда следует использовать возможность XML

Модели документов могут использоваться вместо реляционных моделей в некоторых конкретных сценариях:

  • Высокая степень нормализации схемы не дает существенных преимуществ, так как вы одновременно обращаетесь ко всем полям объектов или не обновляете нормализованные части объектов. Тем не менее нормализованная модель увеличивает сложность запросов из-за большего количества таблиц, которые необходимо соединить для получения данных.
  • Вы работаете с приложениями, которые изначально используют XML-документы и в которых применяются модели обмена данными или модели данных, и вы не хотите вводить дополнительные уровни, преобразовывающие реляционные данные в формат XML и наоборот.
  • Необходимо упростить модель данных путем отмены нормализации дочерних таблиц или шаблонов "сущность — объект — значение".
  • Вам нужно загрузить или экспортировать данные, хранящиеся в формате XML, без использования какого-либо дополнительного средства, анализирующего данные.

Пары "ключ-значение"

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

CREATE TABLE Collection (
  Id int identity primary key,
  Data nvarchar(max)
)

Вы можете настраивать эту структуру пар "ключ — значение" в соответствии со своими потребностями без каких-либо ограничений. Например, значение может быть XML-документом, а не типом nvarchar(max). Если значение является JSON-документом, вы можете поместить ограничение CHECK, которое проверяет правильность содержимого JSON. Вы можете помещать любое количество значений, связанных с одним ключом, в дополнительные столбцы, добавлять вычисляемые столбцы и индексы, чтобы упростить и оптимизировать доступ к данным, определить таблицу в качестве таблицы, оптимизированной для памяти, или таблицы, предназначенной только с оптимизированной схемой, чтобы достичь более высокой производительности и т. д.

Ознакомьтесь с тем, как BWin использует выполняющуюся в памяти OLTP для достижения беспрецедентной производительности и масштаба для своих решений кэширования ASP.NET, кэширующих 1 200 000 пакетов в секунду, для примера того, как реляционные модели могут эффективно использоваться в качестве решения пар "ключ — значение" на практике.

Дальнейшие действия

Многомодельные возможности в семействе продуктов Azure SQL также являются основными SQL Server функциями ядра СУБД, которые являются общими для семейства продуктов Azure SQL. Чтобы получить дополнительные сведения об этих возможностях, посетите страницы документации по реляционной базе данных SQL: