33
17-Aug-17 1 SQL Server 2017 Bases de datos Orientadas a Grafos Bienvenida Ing. Eduardo Castro, PhD MVP de Microsoft SQL Server PASS Regional de Mentor PASS Board of Directors http://www.youtube.com/eduardocastrom

Sql 2017 bases datos orientadas a grafos

Embed Size (px)

Citation preview

Page 1: Sql 2017 bases datos orientadas a grafos

17-Aug-17

1

SQL Server 2017

Bases de datos Orientadas a Grafos

Bienvenida

• Ing. Eduardo Castro, PhD

• MVP de Microsoft SQL Server

• PASS Regional de Mentor

• PASS Board of Directors

• http://www.youtube.com/eduardocastrom

Page 2: Sql 2017 bases datos orientadas a grafos

17-Aug-17

2

Material de Referencia

Introduction to Graph Databases

Chicago Graph Database Meet-UpMax De Marzi

Data Modeling with Graph Databases

Ross McNeely

Los datos están más conectados

• Texto (contenido)

• Hipertexto (punteros agregados)

• RSS (se unió a esos punteros)

• Blogs (añadido Pingbacks)

• Etiquetado (datos relacionados agrupados)

• RDF (datos conectados descritos)

• GGG (contenido + punteros + relaciones + descripciones)

Page 3: Sql 2017 bases datos orientadas a grafos

17-Aug-17

3

Los datos están más semi estructurados

• Si intentaste recopilar todos los datos de cada película que se haya hecho, ¿cómo la modela?

• Actores, personajes, ciudades, fechas, costos, ratings, espectaculos, venta de tickets, etc.

SQL

Page 4: Sql 2017 bases datos orientadas a grafos

17-Aug-17

4

Proveedores de NOSQL

Key Value Stores

• Highly Available Key-Value Store

• Modelo de datos: • Asignación global de valores clave

• Tolerante a fallas altamente (típicamente)

• Ejemplos:• Redis, Riak, Voldemort

Page 5: Sql 2017 bases datos orientadas a grafos

17-Aug-17

5

Key Value Stores : pros y contras

• Pros:• Modelo de datos simple

• Escalable

• Contras• Crea tus propias " foreign keys"

• Pobres para datos complejos

Column Family

• Basado en BigTable: Sistema de almacenamiento distribuido de Google para datos estructurados

• Modelo de datos: • Una tabla grande, con familias de columnas

• Map Reduce para consultas/procesamiento

• Ejemplos:• HBase, HyperTable, Cassandra

Page 6: Sql 2017 bases datos orientadas a grafos

17-Aug-17

6

Column Family : pros y contras

• Pros:• Soporta Simi-Structured Data

• Indexado naturalmente (columnas)

• Escalable

• Contras• Pobres para datos interconectados

Bases de datos de documentos

• Modelo de datos: • Una colección de documentos

• Un documento es una colección de valores clave

• Centrado en el índice, un montón de map-reduce

• Ejemplos:• CouchDB, MongoDB

Page 7: Sql 2017 bases datos orientadas a grafos

17-Aug-17

7

Document Databases : pros y contras

• Pros:• Modelo de datos simple y potente

• Escalable

• Contras• Pobres para datos interconectados

• Modelo de consulta limitado a claves e índices

• Mapa reducir para consultas más grandes

Page 8: Sql 2017 bases datos orientadas a grafos

17-Aug-17

8

Graph Databases

• Modelo de datos: • Nodos y relaciones

• Ejemplos:• Neo4j, OrientDB, InfiniteGraph, AllegroGraph

Graph Databases: pros y contras

• Pros:• Potente modelo de datos, tan general como RDBMS

• Datos conectados localmente indexados

• Fácil de consultar

• Contras• Sharding (mucha gente trabajando en este tema)

• Escala razonablemente bien

• Requiere realambrar su cerebro

Page 9: Sql 2017 bases datos orientadas a grafos

17-Aug-17

9

RDBMS

Vivir en un mundo NoSQL

Co

mp

lejid

ad

BigTableClones

Tamaño

Key ValueStore

Bases DatosDocumentos

GrafoBases

90% deCasos de uso

RelacionalBases

¿Qué es un grafo?

• Una representación abstracta de un conjunto de objetos donde algunos pares están conectados por enlaces.

Object (vértice, nodo)

Enlace (arista, arco, relación)

Page 10: Sql 2017 bases datos orientadas a grafos

17-Aug-17

10

Introducción al modelo de grafos

Definición de grafo:

1"formalmente, un grafo es sólo una colección de vértices y aristas-o, en un lenguaje menos intimidante, un conjunto de nodos y las relaciones que los conectan."

Menos formal:

-un grafo es un conjunto de nodos, relaciones y propiedades.

-una red de objetos conectados.

Diversas clases de grafos

• Grafo no dirigido

• Grafo dirigido

• Pseudo grafo

• Grafo múltiple

• Hyper Graph

Page 11: Sql 2017 bases datos orientadas a grafos

17-Aug-17

11

Más clases de grafos

• Grafo ponderado

• Grafo etiquetado

• Grafo de propiedades

¿Qué es una base de datos basada en grafos?

• Una base de datos con una estructura de grafos explícita

• Cada nodo conoce sus nodos adyacentes

• A medida que aumenta el número de nodos, el costo de un paso local (o hop) sigue siendo el mismo

• Más un índice para búsquedas

Page 12: Sql 2017 bases datos orientadas a grafos

17-Aug-17

12

En comparación con bases de datos relacionales

Optimizado para la agregación Optimizado para conexiones

Introducción al modelo de grafos

• Nodos (“vertices”)

• Relaciones (“edges”)

• Propiedades

Property Graph

RM1RM2

RM3

Page 13: Sql 2017 bases datos orientadas a grafos

Slide 24

RM1 Los nodos contienen propiedades. Piense en los nodos como

documentos que almacenan propiedades en forma de pares de

valor de clave arbitrarios. Las claves son cadenas y los valores son

tipos de datos arbitrariosRoss McNeely, 19-Jan-14

RM2 Relaciones conectan y estructuran nodos. Una relación siempre

tiene una dirección, una etiqueta y un nodo de inicio y un nodo

final, no hay relaciones que cuelguen. Juntos, una dirección y una

etiqueta de relaciones agregan sematic claridad a la estructuración

de nodos.Ross McNeely, 19-Jan-14

RM3 Como nodos, las relaciones también pueden tener propiedades. La

capacidad de agregar propiedades a las relaciones es

particularmente útil para proporcionar metadatos adicionales para

algoritmos de gráficos, añadiendo semántica adicional a las

relaciones (incluida la calidad y el peso) y para las consultas de

restricción en tiempo de ejecuciónRoss McNeely, 19-Jan-14

Page 14: Sql 2017 bases datos orientadas a grafos

17-Aug-17

13

Introducción al modelo de grafos

• Nodos representan entidadesNodos

Los nodos contienen propiedades. Piense en los nodos como documentos que almacenan propiedades en forma de pares de valor de clave arbitrarios.

nombre : juan

Introducción al modelo de grafos

• Se presentan como líneas entre losnodosRelaciones

Relaciones conectan y estructuran nodos.

Direccion_Postal

Page 15: Sql 2017 bases datos orientadas a grafos

17-Aug-17

14

Introducción al modelo de grafos

• Las propiedades son valores acercadel nodo o de la relaciónPropiedades

Las propiedades se pueden agregar a nodos y relaciones.Permite crear semánticas adicionales a las relaciones.

Introducción al modelo de grafos

• Grafo básico

Page 16: Sql 2017 bases datos orientadas a grafos

17-Aug-17

15

¿Qué es una base de datos basada en grafos?

29

• Una base de datos basada en grafos es una colección de nodos (o vértices) y aristas (o relaciones).

• Un nodo representa una entidad (por ejemplo, una persona o una organización) y una arista representa una relación entre los dos nodos que conecta (por ejemplo, los gustos o los amigos).

• Los nodos y aristas pueden tener propiedades asociadas a ellos.

¿Qué es una base de datos basada en grafos?

30

• He aquí algunas características que hacen que una base de datos basada en grafos sea única:

• Las aristas o las relaciones son entidades de primera clase en una base de datos de grafos y pueden tener atributos o propiedades asociados con ellos.

• Una única arista puede conectar de forma flexible varios nodos en unabase de datos basada en grafos.

• Puede expresar fácilmente las consultas de coincidencia de patrones y de navegación de múltiples saltos.

• Puede expresar fácilmente el cierre transitivo y las consultas polimórficas.

Page 17: Sql 2017 bases datos orientadas a grafos

17-Aug-17

16

En comparación con los almacenes de valor clave

Optimizado para simples look-UPS Optimizado para moverse a través de datos conectados

En comparación con los almacenes de valor clave

Optimizado para "árboles" de datos Optimizado para ver el bosque y los árboles, y las ramas, y los troncos

Page 18: Sql 2017 bases datos orientadas a grafos

17-Aug-17

17

Cuándo utilizar una base de datos basada en grafos?

33

• No hay nada que una base de datos de grafos pueda lograr, que no se puede lograr utilizando una base de datos relacional.

• Sin embargo, una base de datos basada en grafos puede facilitar la expresión de ciertos tipos de consultas.

• Además, con optimizaciones específicas, ciertas consultas pueden realizarse mejor.

Cuándo utilizar una base de datos basada en grafos?

34

• Su decisión de elegir uno sobre el otro puede basarse en los siguientes factores:

• Su aplicación tiene datos jerárquicos. El tipo Hierarchyid puede utilizarse para implementar jerarquías, pero tiene algunas limitaciones. Por ejemplo, no permite almacenar varios padres para un nodo.

• Su aplicación tiene relaciones complejas de muchos a muchos; a medida que la aplicación evoluciona, se agregan nuevas relaciones.

• Es necesario analizar los datos y las relaciones interconectados.

Page 19: Sql 2017 bases datos orientadas a grafos

17-Aug-17

18

Productos que implementan Grafos

ArangoDBBitsy

BrightStartDBDex/Sparksee

FilamentoGraphBase

HortonHyperGraphDB

OpenLinkR2DFTitan

VelocityGraphVertexDB

Modelaje con grafos

Page 20: Sql 2017 bases datos orientadas a grafos

17-Aug-17

19

Introducción al modelo de grafos

Cómo se utiliza una BD orientada a grafos?

• Moverse a travésde la base de datos

Consulta

• Seguir las relaciones de nodo a nodo

Opciones de resultados

• Un conjunto

• Una ruta (path)

• Un patrón

Introducción al modelo de grafos

Set Path Pattern

Page 21: Sql 2017 bases datos orientadas a grafos

17-Aug-17

20

Modelos relacionales y grafos

• Definir y acordar las entidades del dominio

• Definir las interacciones y las normas rectorasSimilitudes

• Pocos cambios desde modelo conceptual lógico a físico

• Modelo de almacenamiento de los grafos coincide con el modelo lógico

• Después de la definición inicial del dominio realzamos el grafo en lugar de definir las tablas.

Diferencias

Modelos relacionales y grafos

• Relacional

• Grafo

Page 22: Sql 2017 bases datos orientadas a grafos

17-Aug-17

21

Características gráficas introducidas en SQL Server 2017

41

• Crear objetos de grafos

• Las extensiones de Transact-SQL permitirán a los usuarios crear tablas de nodos o aristas. Ambos nodos y aristas pueden tener propiedades asociadas a ellas. Dado que los nodos y aristas se almacenan como tablas, se admiten todas las operaciones que se admiten en tablas relacionales en la tabla nodo o arista.

CREATE TABLE Person (ID INTEGER PRIMARY KEY, NameVARCHAR(100), Age INT) AS NODE;

CREATE TABLE friends (StartDate date) AS EDGE;

Los nodos y aristas se almacenan como tablas

42

Page 23: Sql 2017 bases datos orientadas a grafos

17-Aug-17

22

ASCII-Art

43

ASCII-Art

44

• Cypher utiliza ASCII-Art para representar patrones.

• Se rodean los nodos con paréntesis que parecen círculos, por ejemplo (nodo).

• Si más adelante queremos hacer referencia al nodo, se daremos una variable como (p) para la persona o (t) para la cosa.

• En las consultas reales, probablemente usaremos nombres de variables más expresivos como (persona) o (cosa).

• Si el nodo no es relevante a su pregunta, también puede utilizar paréntesis vacíos ().

Page 24: Sql 2017 bases datos orientadas a grafos

17-Aug-17

23

ASCII-Art

45

MATCH (node:Label) RETURN node.property

MATCH (node1:Label1)-->(node2:Label2)WHERE node1.propertyA = {value}RETURN node2.propertyA, node2.propertyB

ASCII-Art Patrones

46

friend-of-a-friend (user)-[:KNOWS]-(friend)-[:KNOWS]-(foaf)

shortest path: path = shortestPath( (user)-[:KNOWS*..5]-(other) )

collaborative filtering (user)-[:PURCHASED]->(product)<-[:PURCHASED]-()-[:PURCHASED]->(otherProduct)

tree navigation (root)<-[:PARENT*]-(leaf:Category)-[:ITEM]->(data:Product)

Page 25: Sql 2017 bases datos orientadas a grafos

17-Aug-17

24

Neo4j

47

Encontrar a alguien que pueda ayudar a aprender Neo4j

48

MATCH (you {name:"You"})MATCH (expert)-[:WORKED_WITH]->(db:Database {name:"Neo4j"})MATCH path = shortestPath( (you)-[:FRIEND*..5]-(expert) )RETURN db,expert,path

Page 26: Sql 2017 bases datos orientadas a grafos

17-Aug-17

25

Extensiones de lenguaje de consultas

49

• La nueva cláusula Match se introduce para admitir la coincidencia de patrones y la navegación de múltiples saltos a través del Grafo. La función Match utiliza la sintaxis de estilo ASCII-Art para la coincidencia de patrones.

• Por ejemplo:

-- Buscar los amigos de JohnSELECT Person2.NameFROM Person Person1, Friends, Person Person2WHERE MATCH(Person1-(Friends)->Person2)AND Person1.Name = 'John';

Totalmente integrado en el motor de SQL Server

50

• Las extensiones gráficas están completamente integradas en el motor de SQL Server.

• Utilizamos el mismo motor de almacenamiento, metadatos, procesador de consultas, etc. para almacenar y consultar datos de grafos.

• Esto permite a los usuarios consultar a través de sus datos grafosy relacionales en una sola consulta.

• Los usuarios también pueden beneficiarse de la combinación de capacidades gráficas con otras tecnologías de SQL Server como Columnstore, Ha, R Services, etc.

• La base de datos de SQL Graph también admite todas las funciones de seguridad y cumplimiento de normas disponibles con SQL Server.

Page 27: Sql 2017 bases datos orientadas a grafos

17-Aug-17

26

Ecosistema

51

• Los usuarios se benefician de las herramientas y los ecosistemas existentes que ofrece SQL Server.

• Herramientas como backup y restore, importación y exportación, BCP acaba de trabajar fuera de la caja.

• Otras herramientas o servicios como SSIS, SSRS o PowerBI trabajarán con tablas basadas en grafos, tal y como funcionan con tablas relacionales.

Arquitectura de SQL Graph

52

• Los usuarios pueden crear un Grafo por base de datos.

• Un Grafo es una colección de tablas de nodos y aristas.

• Las tablas de nodos o aristas se pueden crear bajo cualquier esquema de la base de datos, pero todas pertenecen a un Grafológico.

• Una tabla de nodos es una colección de tipos similares de nodos.

Page 28: Sql 2017 bases datos orientadas a grafos

17-Aug-17

27

Arquitectura de grafos SQL

53

• Por ejemplo, una tabla nodos “Persona” contiene todos los nodos de la “personas” que pertenecen a un Grafo.

• Semejantemente, una tabla arista (edge) es una colección de aristas similares.

• Por ejemplo, “a edge table” de amigos contiene todos “edges” que conectan a una persona con otra persona.

• Dado que los nodos y aristas se almacenan en tablas, la mayoría de las operaciones admitidas en tablas regulares se admiten en tablas de nodos o aristas.

Arquitectura de base de datos de SQL Graph

54

Page 29: Sql 2017 bases datos orientadas a grafos

17-Aug-17

28

Nodo Mesa

55

• Una tabla de nodos representa una entidad en un esquema de grafos.

• Cada vez que se crea una tabla de nodos, junto con las columnas definidas por el usuario, un valor implícito de $node_id se crea la columna, que identifica de forma exclusiva un nodo dado en la base de datos.

• Los valores en $node_id se generan automáticamente y son una combinación de object_id de esa tabla de nodos y una generación interna BIGINT valor.

• Sin embargo, cuando los $node_id se selecciona la columna, se muestra un valor calculado en la forma de una cadena JSON.

Nodo Mesa

56

• Además, $node_id es una pseudo columna, que se asigna a un nombre interno con una cadena hexadecimal.

• Al seleccionar $node_id de la tabla, el nombre de la columna aparecerá como $node_id_\<hex_string>.

• El uso de nombres de pseudo columnas en consultas es la forma recomendada de consultar los $ internosnode_id debe evitarse la columna y el uso del nombre interno con la cadena hexagonal.

• Se recomienda que los usuarios creen una restricción o índice único en los $node_id columna en el momento de la creación de la tabla de nodos, pero si no se crea uno, se crea automáticamente un índice único y no agrupado por defecto.

Page 30: Sql 2017 bases datos orientadas a grafos

17-Aug-17

29

Tabla de arista

57

• Una tabla de aristas representa una relación en un Grafo.

• Los aristas siempre se dirigen y conectan dos nodos.

• Una tabla de aristas permite a los usuarios modelar las relaciones de muchos a muchos en el Grafo.

• Una tabla de aristas puede o no tener ningún atributo definido por el usuario en él.

• Cada vez que se crea una tabla Edge, junto con los atributos definidos por el usuario, se crean tres columnas implícitas en la tabla edge.

Edge Table

58

• $edge_id Identifica de forma única una arista dada en la base de datos. Es una columna generada y el valor es una combinación de object_id de la tabla Edge y una generación interna BIGINT valor.

• $from_id Almacena los $node_id del nodo, desde donde se origina el arista.

• $to_id Almacena los $node_id del nodo, en el cual el arista termina.

Page 31: Sql 2017 bases datos orientadas a grafos

17-Aug-17

30

Representación de tablas de nodos y aristas

59

Metadatos

60

• En sys.tables is_node se establece en 1, que indica que la tabla es una tabla de nodos y si is_edge se establece en 1, que indica que la tabla es una tabla de aristas.

• La vista sys.columns contiene columnas adicionales graph_type y graph_type_desc, que indican el tipo de la columna en las tablas de nodos y aristas.

Page 32: Sql 2017 bases datos orientadas a grafos

17-Aug-17

31

Esquema de ejemplo

61

• Este ejemplo crea un esquema Grafo, como se muestra en la figura 1, para una red social hipotética que tiene personas, restaurantes. Estos nodos están conectados entre sí usandoedges de Friends, Likes, LivesIn and LocatedIn

Demostración

73

Page 33: Sql 2017 bases datos orientadas a grafos

17-Aug-17

32

SQL Server 2017

Bases de datos Orientadas a Grafos