Ruby ile KyotoCabinet

Merhabalar,

Uzun bir aradan sonra kendimde tekrar yazı yazabilecek enerjiyi bulabildim. Nasıl mı? Aslında ben de bilmiyorum. Yeni doğan kızım Nil (evet, artık benim bir kızım var, kendisi daha 22 günlük :) ) nedeniyle evde çok neşeli bir telaşımız var ama yine de bir cumartesi akşamı ben bu yazıyı yazabiliyorum.

Ayrıca bugünün cumartesi olması ve şu saatlerin de akşam olması ve artık bir kızımın olması nedeniyle ilk kez akşam gezintileri için “benden geçmiş” demek zorunda hissettim kendimi. :)

Neyse konumuza dÖnelim, konumuz Kyoto Cabinet‘in ruby’de kullanılması olacak. Öncelikle

Kyoto Cabinet nedir;
Aslında bilenler var ise Kyoto Cabinet, Tokyo Cabinet gibi, Memcache gibi yüksek performanslı non-relational (türkçe çevirisi için ‘ilişkisiz’ den daha iyi fikri olan sÖylesin) veri tabanı sistemidir. Limitleri oldukça yüksektir ve performans konusunda gerçekten dudaklarınızıda uçuklatabilir. Kesinlikle oracle, mysql veya postgre gibi relational (ilişkili) veri tabanı sistemleri ile kıyaslanmamadır. Bu elma ile armut kıyaslanması gibi olur.

Kyoto Cabinet aslında “Key” ve “Value” ikilisini bir veri tabanında (bir dosyada) tutmak ve yÖnetmek için yapılandırılmış bir kütüphanedir. Bir dosya üzerinde yer alan Key ve Value alanları farklı uzunluklara sahip ve farklı tiplere sahip olabilir. Ayrıca bu kayıtları B-Tree veya Hash olarak tutabilmektedir.

Peki hemen aklınıza bir soru gelebilir. Nedir bu B-Tree ve Hash denen arkadaşlar? Sayfaları ziyaret edin, kullanın Öğnenin diyorum başka da birşey demiyorum. Yaptığınız işe gÖre, kullanmanız gereken algoritmaya gÖre seçeceğiniz yapı yazılım performasını etkileyen en büyük unsur olacaktır. Ve malesef bunların bir tanesi hepsini dÖvmüyor/dÖvemiyor.

Hadi Kyoto Cabinet kuralım
0- Linux’da çalışıyor. Benim kullandığım ubuntu üzerinden kurulumu anlatacağım.

1- Şu anki versiyonu 1.2.2 şu adresinden indirilir. (veya son versiyonu)
2- sudo tar xzvf kyotocabinet-1.2.2.tar.gz ile kurulumu açalım ve ortaya çıkan klasÖrün içerisine girelim cd kyotocabinet-1.2.2
3- sudo apt-get install checkinstall build-essential libbz2-dev ile kurulum için gerekli kütüphaneler kontrol edilir ve eksik ise kurulur.
4- ./configure –prefix=/usr ile kurulum yapılabilmesi için gerekli makefile oluşturulur.
5- make clean :) sadece paranoyaklık ama yapmakta fayda var. Daha Önceki aynı versiyonların kurulumlarının temizlenmesine yarar.
6- make Ve derleme aşaması
7- sudo checkinstall -D Debian versiyonları için paketlerin oluşturulması ve daha sonra kaldırılabilmesi için gerekli bir işlem.
Hadi Kyoto Cabinet için Ruby kütüphanelerini kuralım
8 – Source Packages for Ruby adresinden Ruby için kütüphaneye erişim kaynak dosyaları indirilir.
9- sudo tar xzvf kyotocabinet-ruby-1.14.tar.gz ile indirilen dosya açılır. Ve açılan klasÖre geçilir. Bkz “cd” :)
10- ruby extconf.rb işlemi ile derleme için gerekli ayarlar yapılır. Kyoto Cabinet kurulumundan sonra yapılmalıdır. Yoksa hata verip durur. Bu işlem hata veriyor ise Kyoto Cabinet kurulumunu kontrol edin.
11- make Ve derleme aşaması….. Hata mı veriyor.. yok canım “DBL2NUM was not declared in this scope” muyymuşş.. yani DBL2NUM yokmuymuşşşş, kayıpmıymış.. Hadi canım :) aşağıdaki satırları kyotocabinet.cc dosyasının içerinde DBL2NUM geçen fonksiyonun daha üst satırında olacak şekilde yazın. Artık çalışması gerekiyor.

#ifndef DBL2NUM
#define DBL2NUM( dbl_val ) rb_float_new( dbl_val )
#endif

12- sudo make install Ve kurulum aşaması tamamlandı.

Geçmiş olsun.. Kyoto Cabinet ve Ruby Kyoto Cabinet kütüphanesinin kurulumunu yaptık. Bir sonraki yazıda Örneğini yaparız artık.

Kolay gelsin.

Share