RethinkDB nedir?
- 2009 yılında geliştirilmesine başlangıç ve son sürümü 2.3.5 27 Ağustos 2016 da çıkan bir veritabanı yazılımıdır.
- NoSQL temelli document-oriented bir veritabanıdır.
- Açık kaynak olarak geliştirilmeye devam ediyor https://github.com/rethinkdb/rethinkdb.
- Veriler veritabanında MongoDB ve CouchDB de olduğu gibi JSON formatında tutulur.
- Ölçeklendirme desteği sunar. Birden fazla sunucu üzerinde tek bir veritabanı ile çalışılabilir.
- Yaygın olarak kullanılan programlama dillerinin bir çoğu için driver desteği sunar. https://rethinkdb.com/docs/install-drivers/
- Veritabanı sorgu dili olarak ReQL kullanıyor. ReQL tablolar üzerinde birleştirme ve filtreleme gibi işlemlerin kolayca yapılabildiği bir sorgulama imkanı sunar. Resmi olarak sunulan programlama dili driverlarının birçoğunda ReQL gömülü olarak sunulur.
Platform farketmeksizin basit ve hızlı şekilde bir kurulum için docker ile rethinkdb kurulumunu yapalım.
Rethinkdb default olarak 28015 portunu kullandığı için o portu paylaştık. 8080 portu ise rethinkdb admin arayüzünün kullandığı port.
http://localhost:8080 adresine gittiğimizde default olarak bir parolamız olmadığı için admin arayüzü direkt açılacak.
Arayüzde veritabanı ile ilgili herşeye erişebileceğimiz linkler mevcut. İlk sayfada sunucular,tablolar,indexler ve kulanılan alan gibi bilgileri görebiliyoruz. Hemen alt kısımda veritabanı performansı ile ilgili bilgileride görebiliyoruz. Saniyede yazılan ve okunan veriler ile istatistikler anlık olarak paylaşılıyor.
İkinci sekmede veritabanları ile ilgili işlemleri yapabiliyoruz. Mevcut veritabanlarını görebilir, silebilir yada yeni bir veritabanını buradan ekleyebiliriz.
Default olarak oluşturulan test veritabanı üzerinden işlemlerimize devam edelim.
test veritabanına eklenmiş bir tablo henüz yok. Add Table butonuna tıklayarak yeni bir tablo ekleyelim.
Karşımıza çıkan modalda tablomuzun adını yazabileceğimiz bir input ve opsiyonel seçenekler olarak primary key ismini değiştirebileceğimiz bir seçenek var. Diğer seçenek ise verilerin diske yazılımının tamamlandığı anda onaylanmasını isteyip istemediğimizi soruyor.
Tablo adına tıkladığımızda açılan sayfada tıpkı anasayfada gördüğümüz gibi tablo ile ilgili istatistiklere erişebiliyoruz. Tablonun çalışma durumu, veri sayısı, anlık yazılan ve okunan veri bilgisi gibi şeyler tek sayfada erişilebilir olarak sunuluyor. Replica bilgileri 1 olarak gözüküyor çünkü tek bir veritabanı üzerinden işlemlerimizi gerçekleştiriyoruz. Rethinkdb birden fazla sunucuda çalışan veritabanlarını ortak olarak kullanabilme imkanı sunabilen bir platform. Örneğin şuan oluşturduğumuz gibi 20 adet veritabanını ortak olarak kullanıma açsaydık 1/20 yada 8/20 gibi yazılar görebilirdik. Sonraki yazılarda dağıtık kullanımından bahsetmeyi düşünüyorum.
Üçüncü sekmede ise veritabanının çalıştığı serverler ile ilgili bilgileri görebiliriz.
Yukarıda bahsettiğim gibi tek bir cluster üzerinden çalıştığımız için 1 tane gözüküyor ve doğal olarak default kullanılan o. Server adına tıklayarak daha detaylı bilgi sayfasına gidebilirsiniz.
uptime, cache size, hostname gibi bilgileri buradan görebiliyoruz.
Ve Data Explorer sekmesine geldik.
ReQL komutlarını burada deneyeceğiz. Bir nevi arayüz üzerinde komut satırı olarak düşünebilirsiniz.
Sırası ile CRUD(Create/Read/Update/Delete) işlemleri üzerinden kullanımını görelim.
Create
İlk olarak bir kullanıcı oluşturalım.
r.table('user').insert({ name: "ahmet", surname: "şimşek" })
r ana komut değişkenimiz. table fonksiyonuna user parametresini vererek user tablosuna eriştik. ve insert fonksiyonunda eklemek istediğimiz veriyi json formatında yazarak eklemeyi gerçekleştirdik. Hemen alt kısımda çalıştırılan komutun döndüğü dataları görebiliriz. Oluşturulan 1 döküman ve oluşturulan dökümanın keyini görüyoruz.
Read
Read için sadece tablo erişimini çalıştırmamız yeterli.
r.table('user')
Bu şekilde herhangi bir filtre uygulanmadan tablo içindeki tüm verileri listeleyebiliriz.
Sadece tek bir veriyi dönmek istiyorsak dökümanın id bilgisini get fonksiyonuna göndererek dökümana erişebiliriz.
r.table('user').get('0812d444-7b5f-40b6-9365-276b79508b3c')
Update
Update için önce tablo erişimi ardından değiştirmek istediğimiz veriyi seçecek olan filtre ve değiştirmek istediğimiz keyleri yazıyoruz.
r.table('user').filter({ name: "ahmet" }).update({ name: "mahmut" })
Bu komut ile name değeri ahmet olan kullanıcıların adını mahmut olarak değiştirdik. filter fonksiyonunu kullanmasaydık tüm kullanıcıların name değeri mahmut olarak değişecekti.
Delete
Bir veriyi silmek için tablo erişimi uygulamak istiyorsak filtre ve en sonada delete fonksiyonu ile veriyi silebiliriz.
r.table('user').filter({ name: "kemal" }).delete()
Filtre
Filtre ile yukarıda belirttiğimiz gibi sql sorgularından örnek vermek gerekirse sorguya where işlemlerini katıyoruz. Yani istediğimiz özelliklere uyan verilerin dönmesini sağlıyoruz.
Önce http://www.json-generator.com/ adresinden filtre uygulayabileceğimiz verileri oluşturulım.
Sağ taraftan json array formatında verileri kopyalayıp yukarıda create aşamasında anlattığımız şekilde insert komutu içerisine yazalım verilerimizi. Run butonuna tıkladığımızda verilerimiz insert edilmiş olacak.
Örneğin aşağıdaki komutla cinsiyeti kadın olan kullanıcıları döndürelim.
r.table('user').filter({ gender: "female" })
ve yaşı 38 olan kullanıcılar olarak detaylandıralım.
r.table('user').filter({ gender: "female", age: 38 })
Bu şekilde detaylı aramalar yapabiliyoruz ama örneğin adı a harfi ile başlayıp tagları ile ilgili detaylı arama yapmak istersek nasıl yapacağız?
r.table("user").filter(function(doc){
return doc("tags").contains("ipsum") && doc("name").match("^B")
})
return doc("tags").contains("ipsum") && doc("name").match("^B")
})
Yukarıdaki komut ile tags bilgileri içinde ipsum geçen ve adı B harfi ile başlayan kayıtları listeledik.
Bu yazıda oldukça basit bir giriş yaparak rethinkdb den bahsetmeye çalıştım. Sonraki yazıda daha detaylı sorgulamaların nasıl yapılabileceğinden bahsetmek ümidiyle görüşmek üzere.
Hiç yorum yok:
Yorum Gönder