Çizge (Graph) Veritabanları ve Güvenlik Servislerinde Kullanımı

Bilgi teknolojilerinin kullanımı yaygınlaştıkça, daha fazla veri üretilmektedir. Büyük veri ile birlikte, verinin çeşitliliğinde de artışlar vardır. Analiz etmemiz ve değer üretmemiz gereken veri yapısı şimdi daha karmaşık bir hal almıştır. Veriler arasındaki bu karmaşık ilişkiler ve hızlı analiz ihtiyaçları, veri işleme teknolojilerinde de önemli gelişmelere sebep olmuştur.
Bu makalemizde; karmaşık veri yapılarının işlenmesinde kullanılan çizge veritabanları ve güvenlik uygulamalarında nasıl kullanılabileceği hakkında bilgi paylaşacağız.
Çizge (Graph) Veri Yapısı ve Veritabanı Teknolojileri
Çizge (Graph) veri yapısı, nodlar ve nodların farklı ilişkilerle birbirine bağlandığı bir veri yapısıdır. Her bir nod, “Müşteri, Ürün, Kategori, Mağaza” gibi nesneleri ve özelliklerini temsil eder. Nodlar arasında ilişkilere isim verilir ve bu ilişki de bilgi içerebilir. Müşteri ve Ürün arasında, “İnceler” ilişkisi ve bu ilişkiye ait bilgiler  (İnceleme zamanı, İncelenen özellikler) bulunur. 
Çizge veri yapısındaki nodları ilişkisel veritabanlarındaki tablolar gibi düşünebiliriz. İlişkilerde, tablolar arasında kurduğumuz ilişkilere (FK – Foreign Key) benzer.  Çift yönlü çoklu ilişki (Many-Many) ilişkilerde, ilişki tabloları kullanmak zorunda kalırız. İlişkilere ait tüm bilgiler de, asıl (kaynak) tablolarda saklanır. Tablo sayısı ve ilişki sayısı arttıkça, bu ilişkisel model üzerinde bilgi almak zorlaşmaktadır. Yazılan SQL sorguları çok karmaşık hale geldiği için hem yazması, hem de güncellemesi maliyetlidir.
Aşağıdaki diyagramda çizge veri yapısı için üst seviye bir görünüm sunulmuştur. Buna karşılık, ilişkisel veritabanında tablolar gösterilmiştir.





Çizge veri yapılarının, ilişkisel olarak saklandığı veritabanları, Çizge veritabanları olarak isimlendirilir. Bu veritabanlarına örnek olarak;  Neo4J verebiliriz. Çizge veritabanları, ilişkisel veritabanı sistemlerindeki gibi temel komutları destekler. (Ekleme, Güncelleme, Silme, Sorgulama gibi) Operasyonel özellikleri sağlarlar. (Transaction Yönetimi, Sürdürülebilirlik) Veri saklama ortamı olarak, ilişkisel veritabanlarını kullanan yaklaşımlarda bulunmaktadır. (Non-Native)
Çizge veri yapılarını sorgulamak için, çizge işleme dilleri geliştirilmiştir. Ürüne özel işleme dili olduğu gibi,  Gremlin gibi ortak kullanım için modellenmiş yaklaşımlarda bulunmaktadır. Çizge işleme algoritma kullanımını da destekler. (Kısa yol analizi gibi)
Çizge veritabanlarına ek olarak; çizge veri işleme bileşenleri de geliştirilmiştir. (Graph Processing Frameworks) Spark GraphX çizge işleme bileşeni buna örnek olarak verilebilir. Bu bileşenler, verileri farklı veri saklama ortamlarından alarak (SQL, NoSQL, File System) işlemektedirler.

Niçin Çizge Veri İşleme ?
Çizge veri yapısı ile, nodlar (kaynak bilgiler) ve karmaşık ilişkileri daha kolay modellenir. İlişkiler, nodlar arası köprü vazifesi görmektedir. Birbirine uzak duran bilgiler, farklı ilişkiler ile birbirine bağlanabilmektedir. Önümüzde kimi kısa, kimi uzun birçok yol alternatifi vardır. Kısa yollar ile sonuca daha hızlı erişilebilir.  Uzun yollarla ise, birbirine bağladığı nodlar ve ilişkileri, daha karmaşık sorguları yazabilir ve analizleri yapabiliriz. 
İlişki yönetimindeki esnek yapısı sayesinde, değişen iş gereksinimlerine daha kolay uyum sağlanabilir.
Verinin çoklu ilişkiler içinde saklanması, analiz imkanını hızlandırır. Daha hızlı sonuçlar almamız mümkün olur.  Bu kazanımlar, gerçek zamanlı analiz için önemlidir. Çünkü veri akışı hızlıdır.  Bu aşamada, anormallikleri tespit etmek çok önemlidir. Veriyi kaydettikten sonra, işlemek zaman kaybına sebep olmaktadır.

Güvenlik Servisleri İçin Örnek Bir Çizge Veri Yapısı:
IP kaynaklarımıza yapılan atakların analiz edilebileceği bir çizge veri yapısı, aşağıdaki gibi modellenebilir:


Çizge veri yapısı içindeki Nodlar ve ilişkileri üzerinden sorgular yazılır.  “Ülkelere göre tehdit sayıları” gibi basit sorgular yazılabileceği gibi, “X ülkesinden, IP Kaynaklarımıza yapılan, Y kategorisindeki tehditlerin, kullanıcı bazında takip sayısı” gibi karmaşık sorgularda yazılabilir. 
Verinin daha kolay ve hızlı analiz edilebilmesi için, farklı ilişkiler eklemek mümkündür. Çizge veri yapısı üzerinde daha az gezinerek sonuçlara daha hızlı erişim sağlanabilir. (Shortest Path) İlişki sayısının fazla olması saklanması/işlenmesi gereken verinin daha büyük olması anlamına gelir. Bu bir denge noktasıdır. 
Çizge veri yapısı içindeki veriler ve ilişkileri, görsel hale getirebilir. Aşağıda örnek bir çizge görseli eklenmiştir :


Değerlendirme:
Karmaşık veri modellerinde (Sosyal Ağlar, Dolandırıcılık Tespiti, Tehdit algılama, Öneri motorları) kullanılmaktadır. 
Aşağıdaki grafik analiz edildiğinde, çizge veritabanlarına olan ilginin arttığı gözlenmektedir:



Her iş alanının karmaşık veri analizine ihtiyaç duyduğu gözönüne alınırsa, çizge veritabanlarının daha da yaygın olacağını söyleyebiliriz. Talep yüksek oldukça, farklı çözüm üreticileri de, sahnede yerini alacaktır. İlişkisel veritabanı üreticileri, yeni nesil özellikler kapsamında, çizge veri saklama ve işleme yöntemini değerlendirmelidir. Grafik veritabanları vizyonu hakkında, daha detaylı bilgi almak için, Neo4J CEO’su tarafından kaleme alınan  makaleye müracaat edebilebilir.

Referanslar:






Yorumlar

Bu blogdaki popüler yayınlar

1. Geleneksel Stajyer CTF Soru ve Cevapları

B*-Tree (BTree, BPlusTree) Veri Yapısı ile Veri İndeksleme

2. Geleneksel Stajyer CTF Soru ve Cevapları - 2017