
İş Zekası Hizmeti Olarak
PlusClouds Eaglet hizmetini deneyin ve AI desteğiyle yüksek kaliteli B2B sıcak potansiyel müşteri ve fırsatları bulun.
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.
Neo4j veri tabanını kullanmadan önce nodes nedir ve labels nedir sorularına yanıt bulalım.
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 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.
Burada Person label'ine ait 5 kayıt ve Company label'inde 4 node oluşmuş oldu.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'})
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.
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
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!
İşletmeler ve sektörlerle ilgili konularda derinlemesine araştırma yapmak isteyen bir gazeteciyseniz, sizinle çalışmak istiyoruz!
PlusClouds Meraklısı