Neler yeni

Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

  • Merhaba Değerli Ziyaretçimiz, ForumaGel ailesi seni bekliyor! 🌟 Aramıza katılarak güçlü ve samimi topluluğumuzun bir parçası olabilirsin. Burada her üye değerli, her katkı kıymetli. Şimdi üye ol, bizimle birlikte gelişmenin ve keyifli sohbetlerin tadını çıkar! Sevgi ve Saygılarla, ForumaGel Yönetimi ❤️
Yan Yana Banner
Yan Yana Banner
Katılım
7 Nis 2025
Konular
367
Mesajlar
780
Çözümler
1
Tepkime puanı
121
Puan
93
Konum
İstanbul
Web sitesi
forumagel.com
Serinin başlarında ilişkisel veritabanlarını (tablolar, satırlar, sütunlar, FOREIGN KEY ile kurulan ilişkiler) ele aldık. NoSQL'e girişte ise Anahtar-Değer, Belge ve Kolon Ailesi gibi farklı modellerden bahsettik (Bölüm 14). Şimdi inceleyeceğimiz Graf Veritabanları, veriyi tamamen farklı bir şekilde, varlıklar arasındaki ilişkilere odaklanarak modeller ve saklar.

Graf Veri Modeli Nedir?[/B]

Graf veritabanları, veriyi üç temel unsur kullanarak modeller:

  1. Düğümler (Nodes): Gerçek dünyadaki varlıkları veya objeleri temsil ederler (Örn: bir Kişi, bir Şirket, bir Ürün, bir Şehir). Düğümlerin genellikle etiketleri (labels) (örneğin, 'Kişi', 'Şirket') ve özellikleri (properties) (anahtar-değer çiftleri) bulunur (Örn: Kişi düğümünün özellikleri: {ad: 'Ahmet', yaş: 30}).
  2. İlişkiler (Relationships/Edges): Düğümler arasındaki bağlantıları temsil ederler (Örn: 'Ahmet' ile 'Veli' arasındaki 'ARKADAŞTIR' ilişkisi). İlişkilerin genellikle bir yönü (directional) (Örn: 'Ahmet' -> 'ÇALIŞIYOR' -> 'Şirket X') ve tıpkı düğümler gibi özellikleri olabilir (Örn: 'ÇALIŞIYOR' ilişkisinin özelliği: {başlangıç_tarihi: 2020}).
  3. Özellikler (Properties): Hem düğümlere hem de ilişkilere eklenen, onları tanımlayan anahtar-değer çiftleridir.
Graf veritabanlarında, veritabanı şeması esnek olabilir ve yeni düğüm etiketleri, ilişki türleri veya özellikler kolayca eklenebilir.

Graf Veritabanlarının Kullanım Alanları[/B]

Graf veritabanları, özellikle veriler arasındaki ilişkilerin karmaşık ve çok önemli olduğu senaryolar için çok uygundur:

  • Sosyal Ağlar: Kişiler arasındaki arkadaşlık, takip etme, beğenme gibi ilişkileri modelleme ve bu ilişkiler üzerinden analiz yapma (örn: 'Arkadaşlarımın arkadaşları kimler?').
  • Tavsiye Motorları: Kullanıcıların daha önce satın aldıkları/beğendikleri ürünler, benzer kullanıcıların tercihleri gibi ilişkiler üzerinden kişiye özel ürün veya içerik önerme.
  • Dolandırıcılık Tespiti: İlişkiler ağı üzerinden (aynı adres, aynı telefon numarası, kısa sürede açılan çok sayıda hesap vb.) şüpheli kalıpları ve ilişkileri belirleme.
  • Ağ ve BT Altyapı Yönetimi: Sunucular, uygulamalar, hizmetler ve aralarındaki bağımlılıkları modelleme.
  • Bilgi Grafikleri (Knowledge Graphs): Farklı varlıklar ve aralarındaki çeşitli ilişkilerle karmaşık bir bilgi ağını temsil etme.
  • Güzergah ve Yol Bulma: Haritalar veya ağlardaki noktalar ve bağlantılar arasındaki en kısa yolu bulma.
İlişkisel veritabanlarında bu tür karmaşık ilişkiler üzerinden sorgulama yapmak (örneğin, 3 veya 4 adım uzaklıktaki ilişkileri bulmak) çok sayıda JOIN işlemi gerektirir ve performans zamanla düşer. Graf veritabanları, ilişkiler üzerinde hızlı "graf geçişleri" (graph traversals) yapmak için optimize edilmiştir.

Graf Sorgu Dilleri[/B]

Graf veritabanları, ilişkisel veritabanlarının standart dili olan SQL'i kullanmaz. Bunun yerine, graf yapısını sorgulamak için özel olarak tasarlanmış sorgu dilleri kullanılır:

  • Cypher:[/B] Neo4j veritabanı tarafından kullanılan, görsel olarak graf desenlerini çizerek sorgu yazmaya olanak tanıyan popüler bir dildir. (
    Ziyaretçiler için gizlenmiş link, görmek için kayıt olun. Giriş yap veya üye ol.
    -[relationship]->(
    Ziyaretçiler için gizlenmiş link, görmek için kayıt olun. Giriş yap veya üye ol.
    gibi okunabilir bir sözdizimi vardır.)
    [*]Gremlin:[/B] Apache TinkerPop projesinin bir parçası olan, farklı graf veritabanları ile etkileşim kurmak için kullanılabilen bir graf geçiş dilidir.
    [*]SPARQL:[/B] Daha çok RDF (Resource Description Framework) veritabanları ve Anlamsal Web (Semantic Web) için kullanılan bir sorgu dilidir.

Basit Cypher Örneği: 'Ahmet' adlı kişinin arkadaşlarının arkadaşlarını bulma (Kavramsal):

Kod:
MATCH (ahmet:Kişi {ad: 'Ahmet'})-[:ARKADAŞTIR]->(arkadaş)-[:ARKADAŞTIR]->(arkadaşın_arkadaşı)RETURN arkadaşın_arkadaşı.ad;

Bu sorgu, 'Kişi' etiketi ve 'Ahmet' adına sahip bir düğümü bulur, bu düğümden 'ARKADAŞTIR' ilişkisiyle bağlı düğümleri (arkadaşlar) ve sonra bu arkadaşlardan 'ARKADAŞTIR' ilişkisiyle bağlı düğümleri (arkadaşın arkadaşları) bulur ve bunların adını döndürür. İlişkisel modelde bu, iki JOIN işlemi gerektiren bir sorgu olacaktır. İlişki derinliği arttıkça SQL sorgusu daha da karmaşıklaşırken, graf sorgusu genellikle benzer kalır.

Avantajları ve Dezavantajları

Avantajları:


  • İlişkiler üzerinde hızlı geçişler ve sorgulamalar.
  • Karmaşık bağlantılı veriyi modellemek için sezgisel ve esnek yapı.
  • Yeni ilişki türleri eklemek genellikle kolaydır (şema esnekliği).
  • İlişkiler üzerinden yapılan analizler için optimize edilmiştir.
Dezavantajları:

  • Her tür veri veya iş yükü için uygun değildir (özellikle yüksek hacimli transactionlar veya ilişkisel olmayan toplu analizler).
  • Yeni bir veri modeli ve sorgu dili öğrenmeyi gerektirir.
  • İlişkisel veritabanlarına kıyasla ekosistem (araçlar, tecrübeli personel) daha küçük olabilir.
Graf Veritabanı Sistemleri Örnekleri:


  • Neo4j: En popüler ve öncü graf veritabanlarından biridir.
  • Amazon Neptune: AWS'nin yönetilen graf veritabanı hizmeti (Gremlin ve SPARQL destekler).
  • ArangoDB: Çok modelli bir veritabanıdır, graf modelini de destekler.
  • OrientDB (Sekizgen)
  • Microsoft Azure Cosmos DB: Çok modelli, graf API'si de sunar.
Sonuç


Graf veritabanları, veriler arasındaki ilişkilerin kilit öneme sahip olduğu senaryolarda geleneksel veritabanlarına güçlü bir alternatif sunar. İlişkisel modelin tablolar arası JOIN'lerle zorlandığı noktalarda, graf veritabanları ilişkiler üzerinde doğal ve performanslı bir şekilde gezinme yeteneğiyle öne çıkar.

Bu bölümde, graf veritabanlarının ne olduğunu, temel modelini, kullanım alanlarını ve sorgulama mantığını ele aldık. Bu, veritabanı dünyasının ne kadar çeşitli olduğunu gösteren bir başka örnektir.

Oldukça uzun ve detaylı bir seri oldu. Veritabanları ve SQL'in temel taşlarından başlayıp, ileri SQL, programlama, tasarım, kapsamlı yönetim görevleri, farklı modeller/ortamlar (NoSQL, Bulut, Kolonsal) ve hatta verinin fiziksel saklanma yapısı gibi çok çeşitli konulara derinlemesine baktık ve en sonunda graf veritabanları gibi özel modellere değindik.

Bu serinin, veritabanları ve SQL dünyasına olan bakış açınızı önemli ölçüde genişlettiğini ve bu alandaki ileri öğrenme yolculuğunuz için size çok sağlam bir temel sunduğunu umuyorum. Öğrenme ve keşfetme yolculuğunuz devam etsin!

Bu, serimizin bu aşamadaki ve kapsamdaki son bölümüdür.

Bu uzun soluklu ve detaylı seriyi takip ettiğiniz için hepinize içtenlikle teşekkür ederim! Veri dolu ve bağlantılı günler dilerim!


 

Şu an konuyu görüntüleyenler

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz

Zevkini yansıtan rengi seç

Geniş / Dar görünüm

Temanızı geniş yada dar olarak kullanmak için kullanabileceğiniz bir yapıyı kontrolünü sağlayabilirsiniz.

Izgara görünümlü forum listesi

Forum listesindeki düzeni ızgara yada sıradan listeleme tarzındaki yapının kontrolünü sağlayabilirsiniz.

Resimli ızgara modu

Izgara forum listesinde resimleri açıp/kapatabileceğiniz yapının kontrolünü sağlayabilirsiniz.

Kenar çubuğunu kapat

Kenar çubuğunu kapatarak forumdaki kalabalık görünümde kurtulabilirsiniz.

Sabit kenar çubuğu

Kenar çubuğunu sabitleyerek daha kullanışlı ve erişiminizi kolaylaştırabilirsiniz.

Köşe kıvrımlarını kapat

Blokların köşelerinde bulunan kıvrımları kapatıp/açarak zevkinize göre kullanabilirsiniz.

Geri