Graph Database Nedir
Graph Database SQL Server 2017 ile birlikte gelmiştir. Graph database ile mevcut veritabanlarının yapabildiği herşeyi yapabilirsiniz.
Genel olarak, tablolar arası ilişkilerin yoğun kullanıldığı veritabanlarını analiz etmek istediğinizde ya da
hiyerarşik veri ile uğraştığınızda Graph Database’i kullanmanız işinizi kolaylaştıracaktır.
Graph Database’de node’lar ve edge’ler vardır. Node’ları parent tablolar, edge’leri de node’lar arasında ki ilişki tabloları olarak düşünebilirsiniz.
Microsoft’un sitesinden aldığım aşağıdaki resmin Node ve edge’leri iyi ifade ettiğini düşünüyorum.
Bir örnek yaparak graph database’in nasıl oluşturulduğunu ve sorgulandığını inceleyelim.
Öncelikle aşağıdaki script yardımıyla bir node bir de edge tablosu oluşturalım. Bu script’te node tablosu olan Person tablosu kişi bilgilerini, edge tablosu olan friens tablosu’da hangi kişinin hangi kişi ile arkadaş olduğu bilgisini tutacak.
CREATE TABLE Person (ID INTEGER PRIMARY KEY, Name VARCHAR(100), Age INT) AS NODE; CREATE TABLE friends (StartDate date) AS EDGE;
Tabloları oluşturduğumuzda normal tabloların arasında göremiyoruz. Tablolar aşağıdaki gibi Graph Tables’ın altında listeleniyor.
Aşağıdaki script ile Person tablosuna birkaç kayıt ekleyelim.
INSERT INTO [dbo].[Person] VALUES (1,'Nurullah',32), (2,'Hakan',34), (3,'Faruk',26), (4,'Ahmet',39), (5,'Ali Rıza',29)
Aşağıdaki script ile friends tablosuna birkaç arkadaşlık ilişkisi ekleyelim. Aşağıdaki script’ten gördüğünüz kadarıyla Nurullah’ın arkadaşı olarak Hakan ve Faruğu ekliyoruz, Ahmet’in arkadaşı olarak’ta Ali Rıza’yı ekliyoruz.
USE [test] GO INSERT INTO [dbo].[friends] VALUES ( (SELECT $NODE_ID FROM Person WHERE ID = 1), (SELECT $NODE_ID FROM person WHERE ID = 2), GETDATE() ) GO INSERT INTO [dbo].[friends] VALUES ( (SELECT $NODE_ID FROM Person WHERE ID = 1), (SELECT $NODE_ID FROM person WHERE ID = 3), GETDATE() ) GO INSERT INTO [dbo].[friends] VALUES ( (SELECT $NODE_ID FROM Person WHERE ID = 4), (SELECT $NODE_ID FROM person WHERE ID = 5), GETDATE() )
Şimdi de aşağıdaki sorgu yardımıyla Nurullah’ın arkadaşlarını çıkaralım.
SELECT Person2.Name FROM Person Person1, Friends, Person Person2 WHERE MATCH(Person1-(Friends)->Person2) AND Person1.Name = 'Nurullah';