MongoDB ile MapReduce Kullanımı
MongoDB document-oriented mimariye sahip NoSQL veritabanıdır. MongoDB üzerinde bildiğimiz klasik veritabanlarındaki gibi tablo yapısına sahip değil. Verilerimizi BSON(Binary JSON) şeklinde tutuyor. Tablo yapısı yok onun yerine collectionlar mevcut. (bkz: MongoDB NoSQL Veritabanı) MongoDB üzerinde MapReduce işlemleri javascript ile yapılmaktadır. Klasik veritabanlarındaki count, sum, having gibi işlemleri yapmak için MongoDB üzerinde MapReduce kullanıyoruz. (bkz: MapReduce Nedir?) Örnek product collectionında bulunan verilerim aşağıdaki […]
Java JPA ile MongoDB Kullanımı
Java ile MongoDB’yi kullanmak için bir çok yöntem mevcut, bunlardan birisi JPA üzerinden erişim. Hali hazırda JPA kullanıyorsanız veya NoSQL konusunda yeniyseniz bu yöntemi tercih edebilirsiniz. MongoDB’nin JPA erişimini Datanucleus kütüphaneleri üzerinden kullanıyoruz. Datanucleus ismini özellikle GAE (Google App Engine) üzerinde uygulama geliştirenler bileceklerdir, GAE üzerinde veritabanı olarak Big Table kullanılıyor ve erişim de JPA […]
MongoDB NoSQL Veritabanı
MongoDB döküman tabanlı bir NoSQL veritabanı sistemidir (bkz: NoSQL nedir?). MongoDB yapısal verileri JSON benzeri dökümanlarlarda (BSON = Binary JSON) tutar. Her türlü sorgulama ve yönetim işleri JavaScript formatında yapılır. MongoDB 2007 yılında 10gen firması tarafından geliştirilmeye başlandı. Şu anda 2.0.5 sürümüyle oldukça stabil hale gelmiş durumda ve foursquare, Craigslist, MTV Networks gibi birçok büyük firma tarafından ciddi şekilde […]
MongoDB’de Sharding
Sharding, büyük miktarda veriyi yönetebilmek amacıyla parçalara ayırmak ve bu parçalar üzerinden kullanmak diyebiliriz. MongoDB’nin güzel özelliklerinden birisi de sharding kabiliyeti. MongoDB’de shard yapabilmek için mongos, config server ve shard’lara ihtiyaç vardır. Shards İçinde datayı barındıran mongod processleridir. Mongos’un yönlendirmesi ile datalar farklı shardlara bölünür ve chunklar şeklinde herbir shard’da farklı datalar bulunur. Mongos Mongos, […]
Apache Cassandra JDBC Bağlantısı
Apache Cassandra projesi en çok ismini duyuran NoSQL projelerinden birisi. Lakin özgün yapısından dolayı çoğu kişi tarafından (ben dahil) güçlükle anlaşılıyor. MongoDB‘nin kurulum, kullanım kolaylığı ile kıyaslama yapacak olursak böyle düşünmek çok olası. Bundan olsa gerek, Cassandra projesini geliştirenler son birkaç sürüm önce SQL benzeri CQL dilini projeye dahil ettiler. Bu sayede kullanıcılar aşina oldukları […]
Doğal Dil İşleme Temelleri
Doğal dil işleme (Natural Language Processing, kısaca NLP) Yapay Zeka ile Dil Bilimini bir araya getiren bir Bilgisayar Bilimleri dalıdır. Yazılım ile yazı veya konuşma gibi bir dil öğesinin analiz edilerek bilgiye dönüştürülmesini amaçlar. NLP’nin birçok kullanım alanı bulunmaktadır. Örneğin Soru Cevaplama (Question Answering, kısaca QA), kendisine sorulan karmaşık bir soruyu anlayıp cevap veren bir yazılım […]
Eclipse Pig Entegrasyonu
Apache Pig projesi ile ilgili detaylı bir yazı yazmayı planlıyoruz fakat bundan önce Pig script geliştirmeyi kolaylaştıracak bir paylaşım yapmak istedim. Bu yazıda Pig scriptlerini Eclipse üzerinden nasıl çalıştırdığımı paylaşacağım, umarım işinize yarar.Eclipse üzerinden Pig geliştirmek için kullanmak için öncelikle PigEditor eklentisini kurdum. Bu eklenti kodları renklendirip yazım hatalarını gösteriyor. Bunun dışında pek bir özelliği yok. […]
Polyglot Persistence – Çok Dilli Veri Saklama
Thoughtworks’den tanıdığımız Martin Fowler ve Pramod Sadalage henüz basılmamış yeni kitapları olan NoSQL Distilled ile ilgili bir sunum yayınladılar. Farklı kurumsal uygulamalardaki farklı ihtiyaçlardan dolayı RDBMS ile NoSQL sistemlerini bir arada doğru şekilde kullanmaya odaklanan kitapta her iki sistemin de artıları ve eksileri değerlendiriliyor.Örneğin kullanıcı oturumlarını tutmak için Redis ancak finansal verileri işlemek için RDBMS’in […]
MapReduce nedir?
MapReduce dağıtık mimari üzerinde çok büyük verilerin kolay bir şekilde analiz edilebilmesini sağlayan bir sistemdir. 2004 yılında Google tarafından duyurulan bu sistem aslen 1960’lı yıllarda geliştirilen fonksiyonel programlamadaki map ve reduce fonksiyonlarından esinlenmiştir. Veriler işlenirken bu iki fonksiyon kullanılır. Map aşamasında ana (master) düğüm (node) verileri alıp daha ufak parçalara ayırarak işçi (worker) düğümlere dağıtır. İşçi düğümler bu işleri tamamladıkça […]