CouchDB , Futon ve Curl İle CRUD İşlemleri

Herkese Merhaba 🙂 Bu yazımda basitçe “CouchDB nedir? , Futon nedir, nasıl kullanılır? , Terminalden curl ile Couchdb üzerinde CRUD işlemleri nasıl  yapılır?” konularını inceleyeceğiz.

Couchdb NoSQL tabanlı, verileri JSON formatında tutan , MapReduce indeksleri için JavaScript ve kendi API’si için HTTP kullanan, Erlang ile yazılmış open source bir veritabanı sistemidir. 

couchdb_logo.png

Öncelikle “NoSQL nedir, nasıl bir yapısı vardır?” hakkında şu yazımı okuyarak bilgilenebilirsiniz. 🙂 

Map Reduce kavramına değinelim. Big Data severlerin hakim olduğu bu kavram, dağıtık mimariler üzerindeki çok büyük verilerin kolay bir şekilde analiz edilmesini sağlayan bir kütüphaneyi simgeler. Google tarafından geliştirilmiştir. Map ve Reduce fonksiyonları ile işlem yapılır.

Map tarafında ana düğüme gelen veriyi küçük parçalara ayrılır ve işçi düğümlere gönderilir. İşçi düğümler belirlenen işleri gerçekleştirdikten sonra sonuçları ana düğüme döner. Reduce tarafında ise tamamlanan işler belirli bir mantığa göre birleştirilir. Kısaca map tarafında analiz edilmesi gereken veriler seçilir, reduce tarafında analiz işlemi yapılır diyebiliriz.

Gelelim asıl konumuza : Couchdb’yi nasıl kullanacağız?

Couchdb kurulumu için şuraya tıklamanız gerekiyor. Uygun işletim sistemi ve versiyonunu seçip kurduysanız artık couchdb ile işlem yapmaya hazırsınız. Official sitesinde nasıl kurulum yapacağınız da anlatılıyor.

Ben Ubuntu 15.04 kullanıyorum, işlemleri Ubuntu üzerinden anlatacağım. Couchdb 1.6.1’i kurdum. İlk başta kurulum aşamasında fazlaca problem yaşadım. Hata çöze çöze kurulum yaptım diyebilirim. 🙂 

Root olarak işlem yapıyoruz bu yüzden komutu sudo ile verdim. Couchdb’yi başlattık : 

Screenshot from 2015-12-07 16:39:05

İkinci bir terminal penceresi açalım. Buradan işlemlerimizi yapacağız. Ama önce size Futon’u anlatmalıyım.

Futon için Couchdb’nin arayüzü desek yanlış olmaz. Ulaşmak için url çubuğuna http://127.0.0.1:5984/_utils/ yazıyoruz. Kurulum esnasında localhostu ve 5984 numaralı portu ayarlamıştık. Futona bir göz atalım. 

Screenshot from 2015-12-07 16:52:57

Karşımıza böyle bir pencere geliyor. Kullanımı son derece basit. Sol üstte bulunan create database ‘e tıklayarak yeni bir database oluşturabiliriz. Tıklayalım madem 🙂 Veritabanımıza bir isim verdikten sonra yine sol üst köşede bulunan new document kısmından ilk dökümanımızı ekleyelim. Şimdi bu dökümana field eklememiz gerekli. add field kısmından field eklemeye başlıyoruz. Id için random bir değer geliyor. Bildiğiniz gibi NoSQL’de id ile işimiz yok bu yüzden gelen değere okey demenin bence bir sakıncası yok 🙂 Ekledikten sonra sağ tarafda bulunan source kısmına tıkladığınızda verinin JSON formatında tutulmuş olduğunu göreceksiniz. 

Screenshot from 2015-12-07 17:07:47

 

Save document dediğimiz an artık veritabanımıza ekleme işlemi yapmış olduk. Source kısmında da fields kısmında da verilerin üzerine çift tıklama yaparak düzenleme yapabiliriz. Ekleme, silme ve güncelleme işlemleri bu arayüz sayesinde basit ve açık bir şekilde yapmayı öğrendik. 

Gelelim curl ile yani terminal üzerinden bu işlemleri gerçekleştirmeye. Temel olarak curl ile kullanacağımız 4 method var : 

-GET/POST

-PUT

-DELETE

GET methodu ile verileri görüntüleyebiliyor, PUT ile ekleme yapıyor ve DELETE ile silme işlemini gerçekleştiriyoruz. 

Screenshot from 2015-12-07 17:19:04.png

curl -X GET http://127.0.0.1:5984/_all_dbs komutu ile kayıtlı tüm veritabanlarını görüntüleyebiliyoruz. İlk açtığımız terminal penceresinde de işlemlerimiz anlık olarak listeleniyor.

curl http://127.0.0.1:5984/ komutu ile couchdb versionu ile birlikte bizlere merhaba diyor.

curl -X PUT http://127.0.0.1:5984/database_name komutu ile yeni bir veritabanı oluşturuyoruz.

 

curl -X DELETE http://127.0.0.1:5984/database_name komutu ile veritabanımızı siliyoruz.

Elimizdeki bir json dosyasını da curl ile veritabanımıza ekleyebiliriz. Öncelikle bir adet json dosyası oluşturalım, adı newfile.json olsun ve verilerimizi json formatında kaydedelim.

Terminalden dosyanın bulunduğu dizine girerek şu komutu kullanıyoruz : 

http://127.0.0.1:5984/database_name/ -d @newfile.json -H “Content-Type: application/json”

Futon’dan sayfayı yenilediğinizde yeni dökümanın veritabanınıza eklenmiş olduğunu göreceksiniz. 🙂

Şimdilik Couchdb’den ve benden bu kadar. Mutlu günler 🙂 

 

 

 

Reklamlar

NoSQL Nedir?

Merhaba arkadaşlar. Bu yazımda birlikte , günümüzde fazlaca popüler olan, ilişkisel veritabanlarına alternatif olarak ortaya çıkan NoSQL yapısını basitçe inceleyeceğiz.  🙂 

                            nosql-nedir

NoSQL denildiğinde aklımıza ilk olarak “SQL değil” anlamı gelse de NoSQL için NOT ONLY SQL yani “Sadece SQL Değil” kavramı da kullanılmaktadır.

Yazının başında ilişkisel veritabanlarına alternatif olarak ortaya çıkan tabirini kullandım. İlişkisel veritabanlarında kullanılan SQL sorguları NoSQL’de yoktur. Veriler JSON ya da XML formatında tutulur. 

“Neden kullanıyorlar ki bunu? Amaç nedir abi?” sorusu için şöyle bir açıklama getirebilirim. Günümüzde internetin yaygınlaşması ve hızlanması sebebi ile sistemler sürekli büyüyen bir veri yumağına dönüşüyor. Sistemlerin büyümesi ile veritabanları da karmaşıklaşıyor ve karmaşık veritabanlarında sürekli değişiklik yapmak zorlaşıyor.

Tabloları ve sütunları ekleyip, son olarak ilişkileri düzenlediğimiz, fazla sayıda veri barındıran bir veritabanı düşünelim. Bir süre sonra tabloya yeni bir sütun eklememiz ya da önceden planlayamadığımız bir değişiklik yapmamız gerektiğinde , tabloyu ve ilişkileri yeniden tasarlamamız, belki veritabanı tasarımını baştan yapmamız gerekebilir. Bahsedilen değişiklikleri büyük bir sistem üzerinde uygulamak verimsiz/maliyetli sonuçlar doğurabilir.

NoSQL de sonradan değişiklik yapmak ilişkisel veritabanlarında olduğu kadar verimsizlik yaratmaz. Çünkü tablo veya sütun kavramlarının olmadığı NoSQL de tek yapmanız gereken eklemek istediğiniz veriyi JSON ya da XML formatında eklemektir. 

İlişkisel veritabanları transaction alt yapısıyla çalışır. Yani veri bütünlüğünü sağlamak için çeşitli prensiplere dayanarak işlem yapılır. NoSQL’de transaction kavramı yoktur. Fire and Forget adı verilen bir prensiple çalışan bu sistemde amaç hız ve performansı maximize etmektir. Yani %100 veri bütünlüğü sağlamaz. Bankacılık gibi hassas , verinin aynı anda her yerde güncellenmesi gereken sistemlerde NoSQL tercih edilmemektedir. 

Günümüzde Google Big Table , Amazon ise DynamoDB adını verdiği NoSQL veritabanı sistemi ile verilerini saklamaktadır. NoSQL genel olarak çoğu sistemin belli kısımlarında, parça parça kullanılmaktadır. 

NoSQL kendi içinde şu şekilde gruplandırılmıştır :

1) Wide-column stores

2)Document databases

3)Key-value stores

4)Graph stores

Şimdilik NoSQL hakkında bildiklerim bu kadar. Öneri ve düzeltmeler için yorum yapabilirsiniz. Bir daha ki yazıda görüşmek üzere. Mutlu günler 🙂 

Bye-smiley