Обработка графов с помощью SQL Server и базы данных SQL AzureGraph processing with SQL Server and Azure SQL Database

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

SQL ServerSQL Server предлагает возможности баз данных Graph для моделирования связей "многие ко многим".offers graph database capabilities to model many-to-many relationships. Связи графов интегрируются в Transact-SQLTransact-SQL и получают преимущества использования SQL ServerSQL Server в качестве системы управления базовыми базами данных.The graph relationships are integrated into Transact-SQLTransact-SQL and receive the benefits of using SQL ServerSQL Server as the foundational database management system.

Что такое база данных Graph?What is a graph database?

База данных графа представляет собой коллекцию узлов (или вершин) и ребер (или связей).A graph database 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). С этими узлами и краями могут быть связаны свойства.Both nodes and edges may have properties associated with them. Ниже приведены некоторые функции, которые делают базу данных Graph уникальной.Here are some features that make a graph database unique:

  • Границы или связи являются сущностями первого класса в базе данных Graph и могут иметь связанные с ними атрибуты или свойства.Edges or relationships are first class entities in a Graph Database and can have attributes or properties associated with them.
  • Одна сторона может гибко подключаться к нескольким узлам в базе данных Graph.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.

Когда следует использовать базу данных GraphWhen to use a graph database

Нет ничего сложного с базой данных Graph, которую нельзя достичь с помощью реляционной базы данных.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 kind of queries. Кроме того, при определенных оптимизациях некоторые запросы могут работать лучше.Also, with specific optimizations, certain queries may perform better. Выбор одного из них может быть основан на следующих факторах:Your decision to choose one over the other can be based on following factors:

  • Приложение имеет иерархические данные.Your application has hierarchical data. Тип данных HierarchyID можно использовать для реализации иерархий, но у него есть некоторые ограничения.The HierarchyID datatype can be used to implement hierarchies, but it has some limitations. Например, он не позволяет хранить несколько родителей для узла.For example, it does not allow you to store multiple parents for a node.
  • Приложение имеет сложные связи "многие ко многим". по мере развития приложения добавляются новые связи.Your application has complex many-to-many relationships; as application evolves, new relationships are added.
  • Необходимо проанализировать взаимосвязанные данные и связи.You need to analyze interconnected data and relationships.

Функции Graph, появившиеся в SQL Server 2017 (14.x)SQL Server 2017 (14.x)Graph features introduced in SQL Server 2017 (14.x)SQL Server 2017 (14.x)

Мы начинаем добавлять расширения графа в SQL Server, чтобы упростить хранение и запрос данных графов.We are starting to add graph extensions to SQL Server, to make storing and querying graph data easier. В первом выпуске представлены следующие функции.Following features are introduced in the first release.

Создание объектов GraphCreate graph objects

расширения Transact-SQLTransact-SQL позволяют пользователям создавать таблицы node или ребра.Transact-SQLTransact-SQL extensions will allow users to create node or edge tables. С этими узлами и краями могут быть связаны свойства.Both nodes and edges can have properties associated to them. Поскольку узлы и грани хранятся в виде таблиц, все операции, поддерживаемые реляционными таблицами, поддерживаются в таблице node или EDGE.Since, nodes and edges are stored as tables, all the operations that are supported on relational tables are supported on node or edge table. Например:Here is an example:

CREATE TABLE Person (ID INTEGER PRIMARY KEY, Name VARCHAR(100), Age INT) AS NODE;
CREATE TABLE friends (StartDate date) AS EDGE;

Person-друзья — таблицыperson-friends-tables
Узлы и грани хранятся в виде таблиц.Nodes and Edges are stored as tables

Расширения языка запросовQuery language extensions

Для поддержки сопоставления шаблонов и навигации с несколькими прыжками в графе введено новое предложение MATCH.New MATCH clause is introduced to support pattern matching and multi-hop navigation through the graph. Функция MATCH использует синтаксис стиля ASCII для сопоставления шаблонов.The MATCH function uses ASCII-art style syntax for pattern matching. Пример:For example:

-- Find friends of John
SELECT Person2.Name 
FROM Person Person1, Friends, Person Person2
WHERE MATCH(Person1-(Friends)->Person2)
AND Person1.Name = 'John';

Полностью интегрировано в SQL ServerSQL Server EngineFully integrated in SQL ServerSQL Server Engine

Расширения Graph полностью интегрированы в SQL ServerSQL Server Engine.Graph extensions are fully integrated in SQL ServerSQL Server engine. Используйте ту же подсистему хранилища, метаданные, обработчик запросов и т. д. для хранения данных графа и запросов к ним.Use the same storage engine, metadata, query processor, etc. to store and query graph data. Запрос по графу и реляционным данным в одном запросе.Query across graph and relational data in a single query. Объединение возможностей графа с другими SQL ServerSQL Server такими технологиями, как columnstore, HA, R Services и т. д. База данных SQL Graph также поддерживает все функции обеспечения безопасности и соответствия требованиям, доступные в SQL ServerSQL Server.Combining graph capabilities with other SQL ServerSQL Server technologies like columnstore, HA, R services, etc. SQL graph database also supports all the security and compliance features available with SQL ServerSQL Server.

Инструментарий и экосистемаTooling and ecosystem

Преимущества существующих средств и экосистемы, которые SQL ServerSQL Server предложения.Benefit from existing tools and ecosystem that SQL ServerSQL Server offers. Такие средства, как резервное копирование и восстановление, импорт и экспорт, просто работают с программой BCP.Tools like backup and restore, import and export, BCP just work out of the box. Другие средства или службы, такие как SSIS, SSRS или Power BI, будут работать с таблицами графов так же, как они работают с реляционными таблицами.Other tools or services like SSIS, SSRS, or Power BI will work with graph tables, just the way they work with relational tables.

Ограничения реберEdge Constraints

Ограничение ребра определяется в краевой таблице графа и является парой таблиц узлов, к которым может подключаться данный тип ребра.An edge constraint is defined on a graph edge table and is a pair of node table(s) that a given edge type can connect. Это позволяет пользователям лучше управлять схемой графа.This gives users a better control over their graph schema. С помощью ограничений границ пользователи могут ограничивать типы узлов, к которым может подключаться данная граница.With the help of edge constraints users can restrict the type of nodes a given edge is allowed to connect.

Дополнительные сведения о создании и использовании ограничений границ см. в разделе ограничения границ .To learn more about how to create and use edge constraints refer to Edge Constraints

Слияние DMLMerge DML

Инструкция Merge выполняет операции вставки, обновления или удаления в целевой таблице на основе результатов объединения с исходной таблицей.The MERGE statement performs insert, update, or delete operations on a target table based on the results of a join with a source table. Например, можно синхронизировать две таблицы путем вставки, обновления или удаления строк в целевой таблице на основе различий между целевой таблицей и исходной таблицей.For example, you can synchronize two tables by inserting, updating, or deleting rows in a target table based on differences between the target table and the source table. Использование предикатов MATCH в инструкции MERGE теперь поддерживается в базе данных SQL Azure и SQL Server vNext.Using MATCH predicates in a MERGE statement is now supported on Azure SQL Database and SQL Server vNext. Это значит, что теперь можно объединить текущие данные графа (таблицы узлов или пограничных таблиц) с новыми данными, используя предикаты MATCH для указания связей графа в одной инструкции, а не отдельные инструкции INSERT, UPDATE и DELETE.That is, it is now possible to merge your current graph data (node or edge tables) with new data using the MATCH predicates to specify graph relationships in a single statement, instead of separate INSERT/UPDATE/DELETE statements.

Дополнительные сведения о том, как сопоставление можно использовать при слиянии DML, см. в инструкции MERGE .To learn more about how match can be used in merge DML refer to MERGE Statement

Кратчайший путьShortest Path

Функция SHORTEST_PATH находит кратчайший путь между любыми двумя узлами в графе или начиная с заданного узла и до всех остальных узлов графа.The SHORTEST_PATH function finds shortest path between any 2 nodes in a graph or starting from a given node to all the other nodes in the graph. Кратчайший путь можно также использовать для поиска транзитивное замыкания или для произвольного обхода длины в графе.Shortest path can also be used to find a transitive closure or for arbitrary length traversals in the graph.

Следующие шагиNext steps

Ознакомьтесь с архитектурой базы данных SQL GraphRead the SQL Graph Database - Architecture