SlideShare una empresa de Scribd logo
Demos la bienvenida a los grafos en SQL Server 2017
Introducción
 Análisis de relaciones  Redes sociales, IA, basket analysis...
 Grafos
 Grafos en SQL Server 2017
 Conclusiones
Grafos
Grafos
 Un grafo está compuesto de nodos y aristas
 Nodos: Entidades principales (empleados, clientes, productos…)
 Aristas: Relaciones entre entidades (vendidoPor, JefeDe, conoceA…)
 Puede ser dirigido o bidireccional
 A veces el sentido se gestiona vía roles/permisos
 Suelen tener propiedades asociadas
 Nombres, descripciones
 fecha, cantidad, coste…
Grafos
RubénEladio
Café
Cafeteros
de
Colombia,
S.A
Miguel
Enrique
Luis
(…)CompañeroDe
CompañeroDe
Importa@Kg=10000
VecinoDe
JefeDe
A
D
B
CCompañeroDe
Compañeros
de Enrique
que no
compren
café, no sea
su jefe Eladio
y no sean
vecinos de
alguien que
trabaje en el
sector
cafetero.
¿?
Bases de datos
 Triples – TripleStores
 Flexibilidad de esquema
 Enfoque parecido al EAV (Entity- Attribute-Value)
 Recomendaciones de la W3C: https://www.w3.org/RDF/
 Lenguaje SPARQL: https://www.w3.org/TR/sparql11-query/
PREFIX ex: <http://example.com/exampleOntology#>
SELECT ?capital ?country
WHERE {
?x ex:cityname ?capital ;
ex:isCapitalOf ?y .
?y ex:countryname ?country ;
ex:isInContinent ex:Africa .
}
ORDER BY ?capital ?country
Bases de datos
 Desde finales de los 90’s
 Relativa poca relevancia
https://db-engines.com/en/ranking_categories
https://db-engines.com/en/ranking/graph+dbms
Grafos en SQL Server 2017
 Crear nodos
 Se almacenan como tablas tradicionales
CREATE TABLE [dbo].[Persona](
[PersonaId] [int] PRIMARY KEY,
[Nombre] varchar(100),
[Apellidos] varchar(200)
) AS NODE
GO
INSERT INTO Persona
(PersonaId,Nombre,Apellidos) VALUES
(1,'Francisco', 'García Rodríguez'),
(2,'Antonio','Ruiz Martínez')
Grafos en SQL Server 2017
 Crear aristas
 Se almacenan como tablas tradicionales
CREATE TABLE conoceA AS EDGE;
-- Todos conocen a todos
INSERT INTO conoceA
SELECT p1.$node_id origen,p2.$node_id
destino FROM dbo.Persona p1,
dbo.Persona p2
SELECT * FROM conoceA
Grafos en SQL Server 2017
 Navegar grafos
 Lenguaje Cypher: http://www.opencypher.org/
 T-SQL  Cláusula MATCH
SELECT
Persona1.Nombre AS Persona1_Nombre,
Persona2.Nombre AS Persona2_Nombre,
FROM
Persona Persona1, conoceA, Persona Persona2
WHERE
MATCH (Persona1-(conoceA)->Persona2)
AND Persona1.apellidos LIKE ‘García%’
AND Persona2.apellidos LIKE ‘Ruiz%’
Management Studio
 Versión: <2017 >=2017
 Sin diagramas
Demo
Introduciendo los grafos en SQL Server 2017
Grafos en SQL Server
 Algunas limitaciones
 No se permiten UPDATEs en las aristas
 UPDATE DELETE + INSERT
 No se pueden hacer cargas BULK directamente
 Falta de soporte nativo de algoritmos básicos de grafos
 Camino más corto
 Cláusula transitiva/cierre transitivo
 Sentencias MATCH no soportan OR/NOT
 No se soporta referenciar a tablas derivadas en la cláusula MATCH
 Utilizar los $node_id,$from_id y $to_id directamente si necesitamos recursividad
 No se pueden hacer consultas entre distintas bases de datos
 1 grafo = 1 base de datos
Workaround para BCP…
CREATE UNIQUE NONCLUSTERED INDEX
[GRAPH_UNIQUE_INDEX_87ED59FFDE2546C2BF0F504C9BFA7E59] ON
[dbo].[Persona] ($node_id)
ALTER INDEX
GRAPH_UNIQUE_INDEX_87ED59FFDE2546C2BF0F504C9BFA7E59
ON dbo.Persona DISABLE
-- BCP in
ALTER INDEX
GRAPH_UNIQUE_INDEX_87ED59FFDE2546C2BF0F504C9BFA7E59
ON dbo.Persona REBUILD
NOT MATCH
SELECT DISTINCT P1.Nombre
FROM Persona AS P1, Gusta AS G1, Gusta AS G2,
Perro AS P2, Gato AS G
WHERE MATCH(P1-(G1)->P2)
AND NOT MATCH(P1-(G2)->G);
Msg 13905, Level 16, State 1, Line 86
A MATCH clause may not be directly combined with other expressions using OR or NOT.
NOT MATCH  NOT EXISTS
SELECT DISTINCT P1.Nombre
FROM Persona AS P1, Gusta AS G1, Perro AS P2
WHERE MATCH(P1-(G1)->P2)
AND NOT EXISTS(
SELECT * FROM Gusta AS G2, Gato AS G
WHERE MATCH (P1-(G2)->G)
)
Demo
Añadiendo algo de volumen a la ecuación…
Demo
Limitaciones, recursividad y “tripas” de los grafos
Grafos vs Relacional
 Ejemplos de casos donde puede ser más natural:
 Gestión de contenidos, CMSs
 Redes sociales
 Recomendaciones de carrito de la compra
 Modelados de procesos complejos con iteraciones
 Entornos de relaciones futuras desconocidas entre entidades
 No se respeta la integridad como si fuesen FKs
 No se pueden insertar aristas contra nodos no existentes pero sí
podemos borrar nodos y dejar aristas “huérfanas”
Conclusiones
 Funcionalidad reducida
 MATCH puede ayudar a la legibilidad y a código más intuitivo
 Limitaciones en sintaxis, tablas derivadas, etc.
 El soporte por parte de herramientas de desarrollo, análisis,
etc. es bastante pobre
 En un futuro puede cambiar
 Riesgos de mala aceptación  ¿y si MS no se anima a mejorarlo?
 Realmente poco probable  Cosmos DB + Graph API
Preguntas

Más contenido relacionado

Similar a SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? Demos la bienvenida a los grafos en SQL Server 2017

Base de Datos I (I Bimestre)
Base de Datos I (I Bimestre)Base de Datos I (I Bimestre)
Base de Datos I (I Bimestre)
Videoconferencias UTPL
 
Introduccion a SQL Server 2000
Introduccion a SQL Server 2000Introduccion a SQL Server 2000
Introduccion a SQL Server 2000freddymax
 
D:\Introduccion A Sql 2000 Server
D:\Introduccion A Sql 2000 ServerD:\Introduccion A Sql 2000 Server
D:\Introduccion A Sql 2000 Serverguestb4f410
 
modelo relacional
modelo relacionalmodelo relacional
modelo relacionalponxo90
 
Ud2 el modelo relacional
Ud2  el modelo relacionalUd2  el modelo relacional
Ud2 el modelo relacional
Lesli Pacheco
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
Inés Rosero
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
Cesar Yupa
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
Chars Orden
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
Yoly QC
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
Liliana Charco
 
3 diseño de-bd (1)
3 diseño de-bd (1)3 diseño de-bd (1)
3 diseño de-bd (1)
Any Saula
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
Doris Aguagallo
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
Any Saula
 
3 diseño de-bd (1)
3 diseño de-bd (1)3 diseño de-bd (1)
3 diseño de-bd (1)
Any Saula
 

Similar a SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? Demos la bienvenida a los grafos en SQL Server 2017 (20)

Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Base de Datos I (I Bimestre)
Base de Datos I (I Bimestre)Base de Datos I (I Bimestre)
Base de Datos I (I Bimestre)
 
Introduccion a SQL Server 2000
Introduccion a SQL Server 2000Introduccion a SQL Server 2000
Introduccion a SQL Server 2000
 
D:\Introduccion A Sql 2000 Server
D:\Introduccion A Sql 2000 ServerD:\Introduccion A Sql 2000 Server
D:\Introduccion A Sql 2000 Server
 
modelo relacional
modelo relacionalmodelo relacional
modelo relacional
 
Ud2 el modelo relacional
Ud2  el modelo relacionalUd2  el modelo relacional
Ud2 el modelo relacional
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 
333
333333
333
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 
3 diseño de-bd (1)
3 diseño de-bd (1)3 diseño de-bd (1)
3 diseño de-bd (1)
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 
3 diseño de-bd23
3 diseño de-bd233 diseño de-bd23
3 diseño de-bd23
 
3 diseño de-bd
3 diseño de-bd3 diseño de-bd
3 diseño de-bd
 
3
33
3
 
3 diseño de-bd (1)
3 diseño de-bd (1)3 diseño de-bd (1)
3 diseño de-bd (1)
 

Más de SolidQ

SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration ServicesSolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ
 
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLSSolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ
 
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ
 
SolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantesSolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ
 
Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?
SolidQ
 
SQL Server 2017 en Linux
SQL Server 2017 en LinuxSQL Server 2017 en Linux
SQL Server 2017 en Linux
SolidQ
 
Columnstore en la vida real
Columnstore en la vida realColumnstore en la vida real
Columnstore en la vida real
SolidQ
 
PowerApprízate
PowerApprízatePowerApprízate
PowerApprízate
SolidQ
 
Jugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocksJugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocks
SolidQ
 
Analizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BIAnalizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BI
SolidQ
 
Mantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para DummiesMantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para Dummies
SolidQ
 
R en relacional
R en relacionalR en relacional
R en relacional
SolidQ
 
Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!
SolidQ
 
Arquitecturas lambda en Azure
Arquitecturas lambda en AzureArquitecturas lambda en Azure
Arquitecturas lambda en Azure
SolidQ
 
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
SolidQ
 
BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018
SolidQ
 
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
SolidQ
 
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
SolidQ
 
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
SolidQ
 
Novedades de SSAS 2017
Novedades de SSAS 2017Novedades de SSAS 2017
Novedades de SSAS 2017
SolidQ
 

Más de SolidQ (20)

SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration ServicesSolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
 
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLSSolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
 
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
 
SolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantesSolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantes
 
Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?
 
SQL Server 2017 en Linux
SQL Server 2017 en LinuxSQL Server 2017 en Linux
SQL Server 2017 en Linux
 
Columnstore en la vida real
Columnstore en la vida realColumnstore en la vida real
Columnstore en la vida real
 
PowerApprízate
PowerApprízatePowerApprízate
PowerApprízate
 
Jugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocksJugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocks
 
Analizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BIAnalizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BI
 
Mantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para DummiesMantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para Dummies
 
R en relacional
R en relacionalR en relacional
R en relacional
 
Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!
 
Arquitecturas lambda en Azure
Arquitecturas lambda en AzureArquitecturas lambda en Azure
Arquitecturas lambda en Azure
 
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
 
BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018
 
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
 
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
 
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
 
Novedades de SSAS 2017
Novedades de SSAS 2017Novedades de SSAS 2017
Novedades de SSAS 2017
 

Último

DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
sarasofiamontezuma
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
rafaelsalazar0615
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
CesarPazosQuispe
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
DanielErazoMedina
 
Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
samuelvideos
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
Luis Enrique Zafra Haro
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
AlejandraCasallas7
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
AlejandraCasallas7
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
cdraco
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
marianabz2403
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Telefónica
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
ManuelCampos464987
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
raquelariza02
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
IsabellaRubio6
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
ItsSofi
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
DiegoCampos433849
 

Último (20)

DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 
Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 

SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? Demos la bienvenida a los grafos en SQL Server 2017

  • 1. Demos la bienvenida a los grafos en SQL Server 2017
  • 2. Introducción  Análisis de relaciones  Redes sociales, IA, basket analysis...  Grafos  Grafos en SQL Server 2017  Conclusiones
  • 4. Grafos  Un grafo está compuesto de nodos y aristas  Nodos: Entidades principales (empleados, clientes, productos…)  Aristas: Relaciones entre entidades (vendidoPor, JefeDe, conoceA…)  Puede ser dirigido o bidireccional  A veces el sentido se gestiona vía roles/permisos  Suelen tener propiedades asociadas  Nombres, descripciones  fecha, cantidad, coste…
  • 6. Bases de datos  Triples – TripleStores  Flexibilidad de esquema  Enfoque parecido al EAV (Entity- Attribute-Value)  Recomendaciones de la W3C: https://www.w3.org/RDF/  Lenguaje SPARQL: https://www.w3.org/TR/sparql11-query/ PREFIX ex: <http://example.com/exampleOntology#> SELECT ?capital ?country WHERE { ?x ex:cityname ?capital ; ex:isCapitalOf ?y . ?y ex:countryname ?country ; ex:isInContinent ex:Africa . } ORDER BY ?capital ?country
  • 7. Bases de datos  Desde finales de los 90’s  Relativa poca relevancia https://db-engines.com/en/ranking_categories https://db-engines.com/en/ranking/graph+dbms
  • 8. Grafos en SQL Server 2017  Crear nodos  Se almacenan como tablas tradicionales CREATE TABLE [dbo].[Persona]( [PersonaId] [int] PRIMARY KEY, [Nombre] varchar(100), [Apellidos] varchar(200) ) AS NODE GO INSERT INTO Persona (PersonaId,Nombre,Apellidos) VALUES (1,'Francisco', 'García Rodríguez'), (2,'Antonio','Ruiz Martínez')
  • 9. Grafos en SQL Server 2017  Crear aristas  Se almacenan como tablas tradicionales CREATE TABLE conoceA AS EDGE; -- Todos conocen a todos INSERT INTO conoceA SELECT p1.$node_id origen,p2.$node_id destino FROM dbo.Persona p1, dbo.Persona p2 SELECT * FROM conoceA
  • 10. Grafos en SQL Server 2017  Navegar grafos  Lenguaje Cypher: http://www.opencypher.org/  T-SQL  Cláusula MATCH SELECT Persona1.Nombre AS Persona1_Nombre, Persona2.Nombre AS Persona2_Nombre, FROM Persona Persona1, conoceA, Persona Persona2 WHERE MATCH (Persona1-(conoceA)->Persona2) AND Persona1.apellidos LIKE ‘García%’ AND Persona2.apellidos LIKE ‘Ruiz%’
  • 11. Management Studio  Versión: <2017 >=2017  Sin diagramas
  • 12. Demo Introduciendo los grafos en SQL Server 2017
  • 13. Grafos en SQL Server  Algunas limitaciones  No se permiten UPDATEs en las aristas  UPDATE DELETE + INSERT  No se pueden hacer cargas BULK directamente  Falta de soporte nativo de algoritmos básicos de grafos  Camino más corto  Cláusula transitiva/cierre transitivo  Sentencias MATCH no soportan OR/NOT  No se soporta referenciar a tablas derivadas en la cláusula MATCH  Utilizar los $node_id,$from_id y $to_id directamente si necesitamos recursividad  No se pueden hacer consultas entre distintas bases de datos  1 grafo = 1 base de datos
  • 14. Workaround para BCP… CREATE UNIQUE NONCLUSTERED INDEX [GRAPH_UNIQUE_INDEX_87ED59FFDE2546C2BF0F504C9BFA7E59] ON [dbo].[Persona] ($node_id) ALTER INDEX GRAPH_UNIQUE_INDEX_87ED59FFDE2546C2BF0F504C9BFA7E59 ON dbo.Persona DISABLE -- BCP in ALTER INDEX GRAPH_UNIQUE_INDEX_87ED59FFDE2546C2BF0F504C9BFA7E59 ON dbo.Persona REBUILD
  • 15. NOT MATCH SELECT DISTINCT P1.Nombre FROM Persona AS P1, Gusta AS G1, Gusta AS G2, Perro AS P2, Gato AS G WHERE MATCH(P1-(G1)->P2) AND NOT MATCH(P1-(G2)->G); Msg 13905, Level 16, State 1, Line 86 A MATCH clause may not be directly combined with other expressions using OR or NOT.
  • 16. NOT MATCH  NOT EXISTS SELECT DISTINCT P1.Nombre FROM Persona AS P1, Gusta AS G1, Perro AS P2 WHERE MATCH(P1-(G1)->P2) AND NOT EXISTS( SELECT * FROM Gusta AS G2, Gato AS G WHERE MATCH (P1-(G2)->G) )
  • 17. Demo Añadiendo algo de volumen a la ecuación…
  • 18. Demo Limitaciones, recursividad y “tripas” de los grafos
  • 19. Grafos vs Relacional  Ejemplos de casos donde puede ser más natural:  Gestión de contenidos, CMSs  Redes sociales  Recomendaciones de carrito de la compra  Modelados de procesos complejos con iteraciones  Entornos de relaciones futuras desconocidas entre entidades  No se respeta la integridad como si fuesen FKs  No se pueden insertar aristas contra nodos no existentes pero sí podemos borrar nodos y dejar aristas “huérfanas”
  • 20. Conclusiones  Funcionalidad reducida  MATCH puede ayudar a la legibilidad y a código más intuitivo  Limitaciones en sintaxis, tablas derivadas, etc.  El soporte por parte de herramientas de desarrollo, análisis, etc. es bastante pobre  En un futuro puede cambiar  Riesgos de mala aceptación  ¿y si MS no se anima a mejorarlo?  Realmente poco probable  Cosmos DB + Graph API