Docker + Neo4j(Docker içine) Kurulumu

Talha Tarık Küçük
5bayt
Published in
4 min readOct 21, 2018

Docker + Neo4j kurulumu mu… Peki bu kombinasyona neden ihtiyaç duyabilirsiniz... Adım adım docker ve neo4j den bahsedelim ve kurulumlarına değinelim…

Önerilen Yazı: Neo4j nedir?

Docker Nedir?

Docker, uygulamaları geliştirmek, göndermek ve çalıştırmak için açık bir platformdur. Docker, uygulamalarınızı altyapınızdan ayırmanızı sağlar, böylece yazılımı hızlı bir şekilde ürün ortamına alabilirsiniz. Docker’ın kodları hızlı bir şekilde göndermek, test etmek ve dağıtmak için kullandığı metodolojilerden yararlanarak, projenizi tamamladıktan sonra ürün ortamına aldığınızda sistem gereksinimlerini zaten sağlamış oluyorsunuz… Buradan Neo4j’ye bir küçük geçiş yapalım. Neo4j graph database sonundaki j den de anlaşıldığı gibi java tabanlı bir veritabanı… Bu tip veritabanlarını kurmak ne kadar da zordur. JDK’sı olacak, system değişkenleri vs vs… Komutlar… En küçük hatada kurulumun yarıda kalması… İşte docker bu problemleri çözüyor…

Pek ayrıntıya boğmadan Docker’la ilgili olarak Container ve Image kavramlarından bahsedetmek lazım…

Docker Container kodu ve tüm bağımlılıklarını paketleyen standart bir yazılım birimidir, böylece uygulama bir bilgisayar ortamından diğerine taşındığında hızlı ve güvenilir bir şekilde çalışır.

Docker Image bir uygulamayı çalıştırmak için gereken her şeyi içeren hafif, bağımsız, yürütülebilir bir yazılım paketidir: kod, çalışma zamanı, sistem araçları, sistem kitaplıkları ve ayarları içerir…

Docker’ın DockerHub adında bir topluluğu vardır. Bu toplulukta paylaşılmış paketlere ulaşabilirsiniz... Yeni paketler hazırlayabilirsiniz veya hazır olanları kullanabilirsiniz. Yani Docker kısaca sizi sistem bağımlılıklarından kopartıp her ortamda(Windows/Mac/Linux…), sistem gereksinimlerini Image ve Container’lar ile sağlamaktadır.

Docker Nasıl Kurulur?

Eğer işletim sisteminiz Hyper-V içeriyorsa.(Windows Pro, Enterprise versiyonları, WindowsServer 2016 vb… içermektedir.) Aşağıdaki linkten indirip windows sürümlü bilgisayara kurabilirsiniz.

https://docs.docker.com/docker-for-windows/install/

İşletim sisteminiz windows değilse aşağıdaki linkten kendi işletim sisteminize uygun kuruluma göz atabilirsiniz.

https://docs.docker.com/install/

Eğer windows 10 home kullanmaktaysanız. Docker toolbox ile kurulum yapabilirsiniz.

https://docs.docker.com/toolbox/toolbox_install_windows/

Kurulum sonrası Docker Quickstart Terminal’ı açınız. Bunun öncesinde BIOS’dan VIRTUALIZATION ayalarını yapmayı unutmayınız. (https://www.youtube.com/watch?v=za5eAnVVWfs)

Eğer DOCKER logosunu görüyorsanız herşey yolunda demektir. Bu ekranla işimiz bitmedi… Kapatmıyoruz.
CMD üzerinden docker-machine ls komutunu verdiğinizde Virtualbox’ı göreceksiniz. (Windows 10 Home versiyonda Docker Toolbox ile kurulum yapıldığında Hyper-V yerine Virtualbox kullanıyor)

Docker’ı kurduk… Şimdi gelelim Neo4j’ye…

Neo4j Nedir?

Neo4j, Neo4j Inc. tarafından geliştirilen bir grafik veritabanı yönetim sistemidir. Geliştiricilerin yerel grafik depolama ve işleme özelliğine sahip ACID uyumlu bir işlem veritabanı olarak tanımladığı Neo4j, DB-Engines sıralamasına göre en popüler grafik veritabanıdır ve 22. en popüler genel veritabanıdır…

Genel olarak graph databaselerin yapısı benzerdir… İşte Neo4j’nin yapısı…

Node’lar grafikteki varlıklardır. Özellikleri olarak adlandırılan herhangi bir sayıda öznitelikleri (anahtar / değer çiftleri) tutabilirler. Node(düğüm) farklı rolleri temsil eden etiketlerle etiketlenebilir. Düğüm etiketleri, belirli düğümlere meta veri (dizin veya kısıtlama bilgisi gibi) eklemeye de hizmet edebilir.

Relationships, iki Node öğesi arasında (örneğin: Ahmet -> ÇALIŞIYOR -> Vergi Dairesi) yönlendirilmiş, adlandırılmış, semantik olarak alakalı bağlantılar sağlar. Bir ilişkinin(Relationship) her zaman bir yönü, türü, başlangıç ​​düğümü ve bir bitiş düğümü vardır. Node’lar gibi, ilişkiler de özelliklere sahip olabilir. Çoğu durumda, ilişkiler, ağırlıklar, maliyetler, mesafeler, derecelendirmeler, zaman aralıkları veya güçlü yönler gibi niceliksel özelliklere sahiptir. Etkili ilişki ilişkileri nedeniyle, iki düğüm performanstan ödün vermeden herhangi bir sayı veya tür ilişkiyi paylaşabilir. Her ne kadar belirli bir yönde depolansalar da, ilişkiler her iki yönde de verimli bir şekilde çalışır...

Neo4j’yi hangi şirketler kullanıyor?

Bu yazıyı okuduğunuz medium.com da neo4j kullanıyor. Ancak neo4j Graph Database’lerden sadece herhangi biri… Facebook, Google ve Twitter’ında kullandığına dair bir kaç yazı okumuştum… Eğer bir doğal dil işleme projesi yapacaksanız graph database biçilmiş kaftan…

Doğal dil işleme datasetinden bir parça örnek vermem gerekirse…HYPERNYMY(Baba,üst sınıf), SYNONYMY(Alternatif farklı isim)…

yurt HYPERNYMY yer 14
yatak HYPERNYMY yer 8
alan HYPERNYMY yer 8
ocak HYPERNYMY yer 8
özgür SYNONYMY hür 7
cambaz HYPERNYMY kişi 6
çırak HYPERNYMY kişi 6
kaynak HYPERNYMY yer 6

Neo4j vb.. graf veritabanlarındaki görüntüsü şöyle olacak…

Neo4j kurulumu

docker run \
--publish=7474:7474 --publish=7687:7687 \
--volume=$HOME/neo4j/data:/data \
--volume=$HOME/neo4j/logs:/logs \
neo4j:3.0

Bu komutu Docker Quickstart Terminal’de çalıştırıyoruz.

Sonuç olarak Neo4j kurulmuş oluyor.

Bende docker default machine IP olarak 192.168.99.100'ü alıyor. Dolayısıyla Neo4j’yi yüklerken publish portuna “publish=7474:7474” yazmıştık… 192.168.99.100:7474'e girdiğimizde Neo4j dahsboard açılmış olacak...

Kullanıcı Adı: neo4j , Şifre: neo4j olarak giriyoruz ve sonra şifre vb… bilgileri dashboard üzerinden değiştirebilirsiniz…

Ne kadar basit bir süreçle tamamladık… Bilgisayarımızda java ile ilgili herhangi bir işlem yapmadık ancak Neo4j’yi docker üzerine kurduğumuzda konteynır içerisinde ortam sağlanmış oldu… 1–2 komutla işi bitirdik…

Solda hemen database sekmesine tıklayınca database bilgilerini göreceğiz. graph.db adında bir database oluşturduğumuzu göreceğiz.

Graph.db

C:\Users\username\neo4j veya benzeri bir dizinde olacak.

Bu yazı için bizden şimdilik bu kadar… Docker üzerinde kurulmuş Neo4j ile neler yapılabilir, kurulum sonrası neo4j’ye nasıl kayıt gönderilir, nasıl kayıt çekilir… Bunun üzerine yazıların devam etmesi umuduyla…

5Bayt’ı takip etmeyi unutmayın… :)

Kaynakça: DOCKER, NEO4J

--

--