Neo4j Nedir?

Ahmet ÇELİK
3 min readJul 9, 2020

--

Neo4j, 2003 yılında çalışmalarına başlanan ve dört yılın sonunda ilk versiyonu piyasaya sürülen açık kaynaklı bir graf veri tabanıdır. Farklı durumlarda farklı avantajlara sahip olan ilişkisel ve noSQL veri tabanlarının güçlü yanlarını alır. Java programlama diliyle yazıldığından dolayı direkt olarak Java projesinin içine dahil edilebilir. Farklı dillere de destek veren Neo4j, kullanıcıların hizmetine sunduğu REST Api sayesinde her platform için kullanılabilir. İlişkisel veri tabanlarında sorgu göndermek için kullandığımız SQL diline benzeyen ancak daha gelişmiş ve kolay bir söz dizime sahip olan “cypher” sorgu dilini kullanır.

neo4j nedir

Neo4j, üç basit kavramla her türlü veriyi depolayabilir. Bunar; veri kayıtları için düğümler (nodes), düğümlerin bağlantısı için ilişkiler (relationships) ve adlandırılmış veri değerli için özelliklerdir (properties) ve bir düğümün birden fazla özelliği bulunabilir. Bu kavramlara örnekle açıklayacak olursak Kullanıcı bir düğüm, kullanıcının id, ad = Ahmet, soyad ve yaş gibi verileri özellik olur. ‘Ders’ adında bir düğüm daha oluşturalım ve bu düğümün ders adı, kodu = ‘YAZ16202’ ve kredi sayısı gibi özelliği olsun. Bu durumda adı ‘Ahmet’ olan ‘Kullanıcı’ düğümü ile kodu ‘YAZ16202’ olan Ders düğümü arasında ‘DERSİ ALIR’ ilişkisi oluşturabiliriz. Aynı zamanda bu ilişkinin de id, saat ve sınıf gibi özelliklerini veri tabanımızda tutabiliriz.

Neo4j’nin bize sağladığı bir diğer fayda ise yukarıdaki örnekte olduğu gibi bir projeyi https://sandbox.neo4j.com üzerinden ücretsiz bir şekilde oluşturup grafiksel, tablo, mesaj ya da kod olarak görebilmemizi sağlaması oluyor (Şekil-1). Yukarıdaki örneği sandbox üzerinden uygulayacak olursak;

k değişkeninde ‘Kullanıcı’ düğümü oluşturulur ve özellikleri girilir. Ardından aynı işlem d değişkenindeki ‘Ders’ düğümü için de yapılır. Sonucunu görsel olarak görmek istiyorsak düğümlerin değişkenlerini ‘RETURN‘ etmemiz gerekir.

Kullanıcı id’si 1 olan ve ders kodu ‘YAZ16202’ olan düğüm arasında kullanıcıdan derse doğru ‘Dersi Alır’ ilişkisi oluşturulur ve bu ilişkiye yıl ve sınıf özellikleri atanır.

Sonuç

Neo4j kullanmamız bizi birtakım zorluklardan kurtarmış oluyor. Örneğin bize sağladığı grafiksel ara yüz sayesinde ayrı bir ‘Varlık İlişki’ (ER) diyagramı çizmemize gerek kalmıyor. Birçok tablonun bütününe odaklanmamız yerine nesnenin kendisine odaklanıp ona bağlı ilişkilerden sorgulama işlemini gerçekleştiriyoruz. Ayrıca bu durum milyarlarca veriyi barındıran veri tabanı için ilişkisel veya nosql veri tabanlarına göre ciddi bir performans artışı sağlıyor. Bundan dolayı Facebook da veri tabanı olarak Neo4j’yi kullanmaktadır.

Kaynakça

https://neo4j.com/docs/cypher-manual/current/

https://www.geeksforgeeks.org/neo4j-create-node

https://www.linkedin.com/pulse/facebook-verilerini-nasıl-tutuyor-graf-veri-tabanı-neo4j-serhatlı/

https://neo4j.com/developer/neo4j-browser/#_built_in_guides

https://medium.com/5bayt/neo4j-nedir-e7160602211e

--

--

Ahmet ÇELİK

Mobil uygulama geliştirici, gündeme dair konular ve yazılım trendleriyle ilgili özgür bir yazılımcı.