Graph database bir tür NoSQL veritabanı sistemidir. Diğer NoSQL veritabanlarından farkı Node lar ile ilişkiler tutulabilmektedir.
Klasik SQL veritabanlarında ilişkilerimiz genellikle ayrı tablolar üzerinde tutulup, indexler ve primarkey anahtar ile verilerin mantıksal dizilimi yapılmaktaydı. NoSQL veritabanlarında ise ilişkiler tek bir ana structure üzerinde mantıksal bir yapıda tutulmaktadır. Json formatı bu konuda güzel örnektir. Aşağıda bir nesnenin id sinin başka bir node da, username bilgisinin başka bir node da tutulduğunu görmekteyiz. İlişkiler için zahmetli bir arama , join etme gereği yok gördüğünüz gibi aşağıya doğru hiyerarşik gidiyor. Enine değil de boyuna büyüyorsunuz , veritabanı veri sutunlarına değilde , property alanlarına ihtiyacınız var.
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "id": "User", "type": "object", "properties": { "username": { "type": "string", "maxLength": 30, "pattern": "[a-z\\d~+-]+" } }, "required": ["username"] } |
Json veri sintaksında özel bir yapılanmaya gitmediğiniz müddetçe parent child ve key value tiplerinde ilişkiniz var. Graph database de ise karmakarışık gelen ama bir düzene sahip bir ilişkisinin olduğunu görebiliriz. Aşağıdaki resimleri incelediğinizde bu ilişki iyi anlatılmıştır.
Ayrıca IMDB klasik ilişki veritabanının nasıl Graph veritabanı olarak tasarlandığına incelemek için tıklayınız.
Graph
https://www.slideshare.net/EmreAkis1/graph-databases-33708438