Sales2 min read401 words

Neo4j nedir? Neo4j faydaları nelerdir?

Burak Kaşıkcı

PlusClouds Author

Cloud & SaaS

Neo4j nedir? Neo4j faydaları nelerdir?

Neo4j , büyük ve ilişkisel dataları depolama ve işleme özelliğine sahip, kullanımı çok zor olmayan (hatta cypher adını verdikleri sql'e baya benzer bir sorgu dilleri var) ve DB-Engines sıralamasında üst sıralarda bulunan bir grafik veritabanıdır. Kendi deyişlerine göre ise "The Fastest Path to Graph" olarak tanımlayabiliriz.  Neo4j nedir? sorusuna yanıt bulduktan yapımızı belirlerken kullandığımız bir kaç önemli terim var, onların üzerinden ilerleyelim.

Nodes nedir? Labels nedir?

Neo4j veri tabanını kullanmadan önce nodes nedir ve labels nedir sorularına yanıt bulalım.

Nodes

Her kayıt bizim için bir node oluyor. Bunlar ana kayıtlarımız ve bu kayıtlarımız içerisine "Properties" dediğimiz özelliklerimizi ekleyebiliyoruz: id, name, title gibi. Bunları kullanırken label özelliği ile hepsini daha düzenli bir şekilde kullanabiliyoruz.

Labels

Labels yani etiketler ise, bu node gruplarına verdiğimiz addır. Bir grup olarak belirtebileceğimiz 'Person', 'Company' vb. bilgilerinini hepsi ayrı node'ları temsil eden etiketler olacak.

Etiketi olmayan bir node'u

Create (n)

diye oluştururken, etiketi olan node'u ise

Create (n:Person)

diye oluşturabiliriz.  Veya bu node'u özellikle birlikte eklemek istersek

Create (n:Person {id:1, companies: [1,2,3], name: 'Burak'})

şeklinde oluşturabiliyoruz. Ben örneğimizde Person ve Company bilgisini kullanacağım için aşağıda gibi bir kaç toplu kayıt oluşturdum.

Create (q:Person {id:1, companies: |1,2,3|, name: 'Burak'}),
(w:Person {id:2, companies: [1], name: 'Uzay'}),
(e:Person {id:3, companies: [2], name: 'Yaprak'}),
(r:Person {id:4, companies: [3], name: 'Ali'}),
(t:Person {id:5, companies: [2,4], name: 'Veli'}),
(y:Company {id:1, name: 'X Company'}),
(u:Company {id:2, name: 'Y Company'}),
(o:Company {id:3, name: 'Z Company'}),
(p:Company {id:4, name: 'Q Company'})
Burada Person label'ine ait 5 kayıt ve Company label'inde 4 node oluşmuş oldu.


Person node'larımız şöyle oluşmuş oldu;

Company node'larımız ise şu şekilde;


Bir node'un birden fazla label'ı olabilir veya hiç olmayabilir. Bunlar sadece gruplama işlemini yaptığı için ekstra bir özellik tutamaz. Tüm özellikleri node bilgisi tutabiliyor.

Relationships

Neo4j 'nin en önemli özelliği ise relationships dediğimiz ilişkilerimiz. Burada yazdığımız sorguya göre 1-1 ilişkilerin yanı sıra 2., 3. ve daha üst leveller arası ilişkiyi yaparken hızıyla bize muhteşem sonuçlar dönebiliyor.

Üstteki örnekten gidersem, her person'un bir veya daha fazla company ile bağlı olduğu görülüyor. Burada PersonCompany adını vereceğimiz ilişkimizi, sql mantığında where şartı ile birleştirip, bu ilişkilerimizi aşağıdaki gibi oluşturabiliriz.

Match (a:Person), (b:Company)
where (b.id IN a.companies)
create (a) - [r:PersonCompany {name:a.name+'<->'+b.name}] -> (b)
return type(r), a,b
İlişkilerimizi oluşturduktan sonra Neo4j içerisindeki son görüntümüz şu şekilde olmuş oldu;



En basit seviyede Neo4j veri tabanının ne olduğunu ve kullanım esnasında sağladığı kazanımlar konusuna bu şekilde bir giriş yapmış olduk. Bunları ihtiyaca göre geliştirmek ve kullanmak sizin elinizde.

Kolay gelsin! 

Frequently Asked Questions

Neo4j nedir ve ne amaçla kullanılır?

Neo4j, büyük ve ilişkisel dataları depolama ve işleme özelliğine sahip bir grafik veritabanıdır. Kendi deyişlerine göre The Fastest Path to Graph olarak tanımlanır ve Cypher adlı sorgu diliyle kullanılır.

Nodes nedir ve hangi bilgiler saklanır?

Her kayıt bizim için bir node oluyor. Bu kayıtlar üzerine id, name, title gibi Properties ekleyebiliyoruz ve Label ile daha düzenli kullanabiliyoruz.

Labels nedir ve nasıl kullanılır?

Labels bu node gruplarına verdiğimiz etiketlerdir ve Person, Company gibi bilgileri temsil eder. Bir node'un birden fazla label'ı olabilir veya hiç olmayabilir; Bunlar sadece gruplama için kullanılır ve tüm özellikler node üzerinde tutulur.

Neo4j'de düğüm nasıl oluşturulur ve etiket nasıl eklenir?

Etiketsiz bir düğüm Create (n) olarak oluşturulur. Etiketli düğüm ise Create (n:Person) veya Create (n:Person {id:1, name: 'Burak'}) gibi biçimlerle oluşturulabilir.

İlişkiler nedir ve nasıl kurulur?

İlişkiler düğümler arasındaki bağlantılardır. Örnekte Person ile Company arasındaki ilişkiler, Match (a:Person), (b:Company) where (b.id IN a.companies) create (a) - [r:PersonCompany {name: a.name+ '<->' + b.name}] -> (b) olarak oluşturulur.

Cypher nedir ve SQL'e benzerliği var mı?

Cypher, Neo4j'nin sorgu dilidir ve SQL'e baya benzer bir yapıda olduğunu belirtirler.

Bir node'un birden çok label'ı olabilir mi?

Bir node'un birden fazla label'ı olabilir veya hiç olmayabilir. Bunlar sadece gruplama işlemi için; tüm özellikler node üzerinde tutulur.