Возможности при использовании нескольких моделей в службе "База данных SQL Azure"Multi-model capabilities of Azure SQL Database

Многомодельные базы данных позволяют хранить данные, представленные в нескольких форматах, например реляционные данные, графы, JSON- или XML-документы, пары "ключ — значение", и работать с ними.Multi-model databases enable you to store and work with data represented in multiple data formats such as relational data, graphs, JSON/XML documents, key-value pairs, etc.

Когда следует использовать возможности нескольких моделейWhen to use multi-model capabilities

База данных SQL Azure предназначена для работы с реляционной моделью, которая в большинстве случаев обеспечивает лучшую эффективность для приложений общего назначения.Azure SQL Database is designed to work with the relational model that provides the best performance in the most of the cases for a variety of general-purpose applications. Тем не менее База данных SQL Azure может работать и с другими данными, кроме реляционных.However, Azure SQL Database is not limited to relational-data only. База данных SQL Azure позволяет использовать ряд нереляционных форматов, которые тесно интегрируются в реляционную модель.Azure SQL Database enables you to use a variety of non-relational formats that are tightly integrated into the relational model. Вы должны использовать Многомодельные возможности базы данных SQL Azure в следующих случаях:You should consider using multi-model capabilities of Azure SQL Database in the following cases:

  • У вас есть некоторые сведения или структуры, которые лучше подходят для моделей NoSQL и вы не хотите использовать отдельную базу данных NoSQL.You have some information or structures that are better fit for NoSQL models and you don't want to use separate NoSQL database.
  • Большая часть данных подходит для реляционной модели, и необходимо моделировать некоторые части данных в стиле NoSQL.A majority of your data is suitable for relational model, and you need to model some parts of your data in NoSQL style.
  • Вы хотите использовать многофункциональный язык Transact-SQL для запроса и анализа реляционных и NoSQL данных, а также интегрировать его с различными инструментами и приложениями, которые могут использовать язык SQL.You want to leverage rich Transact-SQL language to query and analyze both relational and NoSQL data, and integrate it with a variety of tools and applications that can use SQL language.
  • Вы хотите применить такие функции базы данных, как технологии в памяти , чтобы повысить производительность аналитической или обрабатывающей структуры данных NoSQL, использовать репликацию транзакций или доступные для чтения реплики для создания копии данных. другое место и разгрузка некоторых аналитических рабочих нагрузок из базы данных источника.You want to apply database features such as in-memory technologies to improve performance of your analytic or processing of your NoSQL data structures, use transactional replication or readable replicas to create copy of your data on the other place and offload some analytic workloads from the primary database.

ОбзорOverview

Эта служба предоставляет следующие возможности при использовании нескольких моделей:Azure SQL provides the following multi-model features:

  • Функции графа. Позволяют представлять данные в виде набора узлов и ребер, а также запрашивать данные графа, используя стандартные запросы Transact-SQL, улучшенные за счет оператора графа MATCH.Graph features enable you to represent your data as set of nodes and edges, and use standard Transact-SQL queries enhanced with graph MATCH operator to query the graph data.

  • Возможности JSON. Позволяют помещать JSON-документы в таблицы, преобразовывать реляционные данные в JSON-документы и наоборот.JSON features enable you to put JSON documents in tables, transform relational data to JSON documents and vice versa. Вы можете использовать стандартный язык Transact-SQL, расширенный с помощью функций JSON, чтобы выполнять синтаксический анализ документов, и некластеризованные индексы, индексы columnstore или таблицы, оптимизированные для памяти, чтобы оптимизировать запросы.You can use the standard Transact-SQL language enhanced with JSON functions for parsing documents, and use non clustered indexes, columnstore indexes, or memory-optimized tables, to optimize your queries.

  • Пространственные функции. Позволяют хранить географические и геометрические данные, индексировать их с использованием пространственных индексов и извлекать данные с помощью пространственных запросов.Spatial features enables you to store geographical and geometrical data, index them using the spatial indexes, and retrieve the data using spatial queries.

  • Возможности XML. Позволяют хранить, индексировать XML-данные в базе данных и использовать собственные операции XQuery и XPath для работы с XML-данными.XML features enable you to store and index XML data in your database and use native XQuery/XPath operations to work with XML data. В базе данных SQL Azure есть специальный встроенный модуль XML-запросов, который обрабатывает XML-данные.Azure SQL database has specialized built-in XML query engine that process XML data.

  • Пары "ключ-значение" не поддерживаются явно в качестве специальных функций, так как пары "ключ-значение" могут быть изначально смоделированы как таблицы с двумя столбцами.Key-value pairs are not explicitly supported as special features since key-value pairs can be natively modeled as two-column tables.

    Примечание

    Вы можете использовать выражение пути JSON, выражения XQuery/XPath, пространственные функции и выражения запроса по графам в одном запросе Transact-SQL для доступа к любым данным, хранящимся в базе данных.You can use JSON Path expression, XQuery/XPath expressions, spatial functions, and graph-query expressions in the same Transact-SQL query to access any data that you stored in the database. Кроме того, любое средство или язык, поддерживающие выполнение запросов Transact-SQL, также могут использовать этот интерфейс запросов для доступа к данным нескольких моделей.Also, any tool or programming language that can execute Transact-SQL queries, can also use that query interface to access multi-model data. Это ключевое различие в сравнении с многомодельными базами данных, такими как Azure Cosmos DB, которое предоставляет специальный API для различных моделей данных.This is the key difference compared to the multi-model databases such as Azure Cosmos DB that provides specialized API for different data models.

В следующих разделах вы узнаете о наиболее важных возможностях при использовании нескольких моделей, которые предоставляет служба "База данных SQL Azure".In the following sections, you can learn about the most important multi-model capabilities of Azures SQL Database.

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

База данных SQL Azure предоставляет возможности графовой базы данных, чтобы моделировать связь "многие ко многим" в базе данных.Azure SQL Database offers graph database capabilities to model many-to-many relationships in database. Граф состоит из узлов (или вершин) и ребер (или связей).A graph is a collection of nodes (or vertices) and edges (or relationships). Узел представляет сущность (например, пользователя или организацию), а ребро — связь между двумя узлами, которые оно соединяет (например, отметки "Нравится" или друзья).A node represents an entity (for example, a person or an organization) and an edge represents a relationship between the two nodes that it connects (for example, likes or friends). Ниже приведены некоторые функции, благодаря которым графовая база данных является уникальной.Here are some features that make a graph database unique:

  • Ребра или связи в графовой базе данных являются сущностями первого класса, с которым могут быть связаны атрибуты или свойства.Edges or relationships are first class entities in a Graph Database and can have attributes or properties associated with them.
  • Одно ребро может гибко соединить несколько узлов в графовой базе данных.A single edge can flexibly connect multiple nodes in a Graph Database.
  • Вы можете легко выразить запросы на сопоставление шаблонов и навигацию со множеством переходов.You can express pattern matching and multi-hop navigation queries easily.
  • Вы можно легко выразить транзитивное замыкание и полиморфные запросы.You can express transitive closure and polymorphic queries easily.

Связи графа и возможности запроса графа интегрированы в Transact-SQL и получают преимущества использования SQL Server в качестве основополагающей системы управления базами данных.The graph relationships and graph query capabilities are integrated into Transact-SQL and receive the benefits of using SQL Server as the foundational database management system. Обработка графа является ключевой возможностью ядра СУБД SQL Server. По этой ссылке вы можете найти дополнительные сведения об этой возможности.Graph processing is the core SQL Server Database Engine feature, so you can find more info about the Graph processing there.

Когда следует использовать возможности графаWhen to use a graph capability

Все, чего можно достигнуть с графовой базой данных, возможно и с реляционной базой данных.There is nothing a graph database can achieve, which cannot be achieved using a relational database. Тем не менее графовая база данных может упростить выражение определенных запросов.However, a graph database can make it easier to express certain queries. Графовую базу данных следует использовать при наличии следующих условий:Your decision to choose one over the other can be based on following factors:

  • При моделировании иерархических данных, в которых один узел может иметь несколько родительских элементов ( в таком случае HierarchyId нельзя использовать).Model hierarchical data where one node can have multiple parents, so HierarchyId cannot be used
  • Модель вашего приложения содержит сложные связи "многие ко многим": по мере развития приложения добавляются новые связи.Model has Your application has complex many-to-many relationships; as application evolves, new relationships are added.
  • Вам необходимо анализировать взаимосвязанные данные и связи.You need to analyze interconnected data and relationships.

Возможности JSONJSON features

База данных SQL Azure позволяет анализировать и запрашивать данные, представленные в формате JSON (нотация объектов JavaScript), и экспортировать реляционные данные в виде текста JSON.Azure SQL Database lets you parse and query data represented in JavaScript Object Notation (JSON) format, and export your relational data as JSON text.

JSON – это распространенный формат данных, который используются для обмена данными в современных мобильных и веб-приложениях.JSON is a popular data format used for exchanging data in modern web and mobile applications. Кроме того, формат JSON используется для хранения частично структурированных данных в файлах журнала или базах данных NoSQL, например базе данных Azure Cosmos DB.JSON is also used for storing semi-structured data in log files or in NoSQL databases like Azure Cosmos DB. Многие веб-службы REST возвращают результаты в виде текста JSON или принимают данные в формате JSON.Many REST web services return results formatted as JSON text or accept data formatted as JSON. Большинство служб Azure, таких как azure когнитивный Поиск, служба хранилища Azureи Azure Cosmos DB , имеют конечные точки RESTful, возвращающие или использующие JSON.Most Azure services such as Azure Cognitive Search, Azure Storage, and Azure Cosmos DB have REST endpoints that return or consume JSON.

База данных SQL Azure позволяет легко работать с данными JSON и интегрировать свою базу данных с современными службами.Azure SQL Database lets you work with JSON data easily and integrate your database with modern services. База данных SQL Azure предоставляет следующие функции для работы с данными JSON.Azure SQL Database provides the following functions for working with JSON data:

Функции JSON

Если имеется текст JSON, то можно извлечь данные из JSON или проверить правильность его форматирования с помощью встроенных функций JSON_VALUE, JSON_QUERY и ISJSON.If you have JSON text, you can extract data from JSON or verify that JSON is properly formatted by using the built-in functions JSON_VALUE, JSON_QUERY, and ISJSON. Функция JSON_MODIFY позволяет обновить значение внутри текста JSON.The JSON_MODIFY function lets you update value inside JSON text. Если требуются более сложные запросы и анализ, то с помощью функции OPENJSON можно преобразовать массив объектов JSON в набор строк.For more advanced querying and analysis, OPENJSON function can transform an array of JSON objects into a set of rows. С возвращенным результирующим набором можно выполнить любой SQL-запрос.Any SQL query can be executed on the returned result set. Наконец, можно использовать предложение FOR JSON , которое позволяет форматировать данные, хранящиеся в реляционных таблицах в виде текста JSON.Finally, there is a FOR JSON clause that lets you format data stored in your relational tables as JSON text.

Дополнительные сведения см. в статье о работе с данными JSON в Базе данных SQL.For more information, see How to work with JSON data in azure SQL Database. JSON является ключевой возможностью ядра СУБД SQL Server. По этой ссылке вы можете найти дополнительные сведения о возможностях JSON.JSON is core SQL Server Database Engine feature, so you can find more info about the JSON feature there.

Когда следует использовать возможность JSONWhen to use a JSON capability

Модели документов могут использоваться вместо реляционных моделей в некоторых конкретных сценариях:Document models can be used instead of the relational models in some specific scenarios:

  • Высокая нормализация схемы не приносит значительных преимуществ, так как вы одновременно получаете доступ ко всем полям объектов или никогда не обновляете нормализованные части объектов.High-normalization of schema doesn't bring significant benefits because you access the all fields of objects at once, or you never update normalized parts of the objects. Тем не менее нормализованная модель увеличивает сложность запросов из-за большего количества таблиц, которые необходимо соединить для получения данных.However, the normalized model increases the complexity of your queries due to the large number of tables that you need to join to get the data.
  • Вы работаете с приложениями, которые изначально используют JSON-документы и в которых применяются модели обмена данными или модели данных, и вы не хотите вводить дополнительные уровни, преобразовывающие реляционные данные в формат JSON и наоборот.You are working with the applications that natively use JSON documents are communication or data models, and you don't want to introduce additional layers that transforms relational data to JSON and vice versa.
  • Необходимо упростить модель данных путем отмены нормализации дочерних таблиц или шаблонов "сущность — объект — значение".You need to simplify your data model by de-normalizing child tables or Entity-Object-Value patterns.
  • Вам нужно загрузить или экспортировать данные, хранящиеся в формате JSON, без использования какого-либо дополнительного средства, анализирующего данные.You need to load or export data stored in JSON format without some additional tool that parses the data.

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

Пространственные данные представляют сведения о физическом расположении и форме геометрических объектов.Spatial data represents information about the physical location and shape of geometric objects. Эти объекты могут быть расположениями точек или более сложными объектами, такими как страны, регионы, дороги или озера.These objects can be point locations or more complex objects such as countries/regions, roads, or lakes.

База данных SQL Azure поддерживает два типа пространственных данных — геометрический и географический.Azure SQL Database supports two spatial data types - the geometry data type and the geography data type.

  • Геометрический тип данных представляет данные в евклидовой (плоской) системе координат,The geometry type represents data in a Euclidean (flat) coordinate system.
  • а географический — в сферической.The geography type represents data in a round-earth coordinate system.

В базе данных SQL Azure может использоваться ряд пространственных объектов, например точка, ломаная, многоугольник и т. д.There is a number of Spatial objects that can be used in Azure SQL database such as Point, LineString, Polygon, etc.

База данных SQL Azure также предоставляет специализированные пространственные индексы, которые можно использовать для повышения производительности пространственных запросов.Azure SQL Database also provides specialized Spatial indexes that can be used to improve performance of your spatial queries.

Пространственная поддержка является ключевой возможностью ядра СУБД SQL Server. По этой ссылке вы можете найти дополнительные сведения о пространственной функции.Spatial support is core SQL Server Database Engine feature, so you can find more info about the spatial feature there.

Функции XMLXML features

SQL Server предоставляет мощную платформу для разработки многофункциональных приложений, управляющих частично структурированными данными.SQL Server provides a powerful platform for developing rich applications for semi-structured data management. Поддержка XML интегрирована во все компоненты в SQL Server и включает в себя следующее:Support for XML is integrated into all the components in SQL Server and includes the following:

  • Тип XML-данных.The xml data type. Значения XML можно изначально хранить в столбце типа XML-данных, который можно типизировать в соответствии с коллекцией схем XML или оставить нетипизированным.XML values can be stored natively in an xml data type column that can be typed according to a collection of XML schemas, or left untyped. XML-столбец можно индексировать.You can index the XML column.
  • Возможность указывать запросы XQuery к XML-данным, хранящимся в столбцах и переменных типа XML.The ability to specify an XQuery query against XML data stored in columns and variables of the xml type. Функции XQuery можно использовать в любом запросе Transact-SQL, который получает доступ к любой модели данных, используемой в базе данных.XQuery functionalities can be used in any Transact-SQL query that access any data model that you use in your database.
  • Можно автоматически индексировать все элементы в XML-документах с использованием первичного XML-индекса или указать точные пути, которые должны индексироваться с использованием вторичного XML-индекса.Automatically index all elements in XML documents using primary XML index or specify the exact paths that should be indexed using secondary XML index.
  • OPENROWSET, позволяющий применять массовую загрузку XML-данных.OPENROWSET that allows bulk loading of XML data.
  • Преобразование реляционных данных в XML-формат.Transform relational data to XML format.

XML является ключевой возможностью ядра СУБД SQL Server. По этой ссылке вы можете найти дополнительные сведения о ней.XML is core SQL Server Database Engine feature, so you can find more info about the XML feature there.

Когда следует использовать возможность XMLWhen to use an XML capability

Модели документов могут использоваться вместо реляционных моделей в некоторых конкретных сценариях:Document models can be used instead of the relational models in some specific scenarios:

  • Высокая нормализация схемы не приносит значительных преимуществ, так как вы одновременно получаете доступ ко всем полям объектов или никогда не обновляете нормализованные части объектов.High-normalization of schema doesn't bring significant benefits because you access the all fields of objects at once, or you never update normalized parts of the objects. Тем не менее нормализованная модель увеличивает сложность запросов из-за большего количества таблиц, которые необходимо соединить для получения данных.However, the normalized model increases the complexity of your queries due to the large number of tables that you need to join to get the data.
  • Вы работаете с приложениями, которые изначально используют XML-документы и в которых применяются модели обмена данными или модели данных, и вы не хотите вводить дополнительные уровни, преобразовывающие реляционные данные в формат XML и наоборот.You are working with the applications that natively use XML documents are communication or data models, and you don't want to introduce additional layers that transforms relational data to XML and vice versa.
  • Необходимо упростить модель данных путем отмены нормализации дочерних таблиц или шаблонов "сущность — объект — значение".You need to simplify your data model by de-normalizing child tables or Entity-Object-Value patterns.
  • Вам нужно загрузить или экспортировать данные, хранящиеся в формате XML, без использования какого-либо дополнительного средства, анализирующего данные.You need to load or export data stored in XML format without some additional tool that parses the data.

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

В Базе данных SQL Azure нет специализированных типов или структур, поддерживающих пары "ключ — значение", так как их структуры изначально представляются в виде стандартных реляционных таблиц:Azure SQL Database don't have specialized types or structures that support key-value pairs since key-value structures can be natively represented as standard relational tables:

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

Вы можете настраивать эту структуру пар "ключ — значение" в соответствии со своими потребностями без каких-либо ограничений.You can customize this key-value structure to fit your needs without any constraints. Например, значение может быть XML-документом, а не типом nvarchar(max). Если значение является JSON-документом, вы можете поместить ограничение CHECK, которое проверяет правильность содержимого JSON.As an example, the value can be XML document instead of nvarchar(max) type, if the value is JSON document, you can put CHECK constraint that verifies the validity of JSON content. Вы можете помещать любое количество значений, связанных с одним ключом, в дополнительные столбцы, добавлять вычисляемые столбцы и индексы, чтобы упростить и оптимизировать доступ к данным, определить таблицу в качестве таблицы, оптимизированной для памяти, или таблицы, предназначенной только с оптимизированной схемой, чтобы достичь более высокой производительности и т. д.You can put any number of values related to one key in the additional columns, add computed columns and indexes to simplify and optimize data access, define the table as memory/optimized schema-only table to get better performance, etc.

Ознакомьтесь с тем, как BWin использует выполняющуюся в памяти OLTP для достижения беспрецедентной производительности и масштаба для своих решений кэширования ASP.NET, кэширующих 1 200 000 пакетов в секунду, для примера того, как реляционные модели могут эффективно использоваться в качестве решения пар "ключ — значение" на практике.See how BWin is using In-Memory OLTP to achieve unprecedented performance and scale for their ASP.NET caching solution that achieved 1.200.000 batches per seconds, as an example how relational model can be effectively used as key-value pair solution in practice.

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

Возможности при использовании нескольких моделей баз данных SQL Azure также выступают основными функциями ядра СУБД SQL Server, которые являются общими для Базы данных SQL Azure и SQL Server.Multi-model capabilities in Azure SQL Databases are also the core SQL Server Database Engine features that are shared between Azure SQL Database and SQL Server. Чтобы получить дополнительные сведения об этих возможностях, посетите страницы документации по реляционной базе данных SQL:To learn more details about these features, visit the SQL Relational database documentation pages: