MongoDB, CouchDB, Redis, Tokyo Kabini ve diğer NoSQL Veritabanları ile zaten deneyimledim. Geçenlerde Riak'a tökezledim ve bana çok ilginç geldi. Başlamak için, NoSQL Dünyasında "merhaba dünya" küçük bir twitter klon yazmaya karar verdim. Tamamen çalışan bir klon elde etmek için tweetleri kronolojik olarak sipariş etmek gerekir. Riak belgelerini okuduktan sonra, Map-Reduce'un bu iş için doğru araç olduğunu keşfettim. Gelişim ortamımda oldukça iyi çalışıyor, ancak yüzlerce paralel sorgulama ile üretimdeki performans nasıl? Verileri sıralamak için başka, belki daha hızlı yöntemler var mı, yoksa verileri düzenli bir biçimde (Cassandra gibi) depolamak mümkün mü?Riak'taki verileri nasıl sıralayabilirim?
Güncelleştirme: Bu sorunun başka bir çözümünü buldum - basit bir bağlantı listesi. Olası bir uygulama, her kullanıcının kendi "zaman çizelgesi kepçesini" almasıdır. Burada tweet verilerinin kendilerine ait linkler saklanır (tweets "tweets" kovalarında ayrı olarak depolanır). Bildiğiniz gibi, bu zaman çizelgesi dizisi, en son zaman çizelgesi nesnesine bağlanan ve listenin başlangıç noktası olan "ilk" adında bir anahtar içermelidir. Zaman çizelgesine yeni bir tweet eklemek için, zaman çizelgesi grubundaki yeni bir öğeyi eklemeniz yeterlidir, bu yeni öğenin "sonraki" - bağlantısını "ilk" -ememine ayarlayın, daha sonra yeni öğeyi "ilk" yapın. Kısacası
: Bir bağlantılı listesinde yapacağı gibi ... twitter gibi
bir eleman sokar, kişisel zaman çizelgesi sadece kullanıcıya gösterilen 20 tweet tutar. Son 20 tweet'i almak için sadece 2 sorgu gerekiyor. İşleri hızlandırmak için ilk sorgu, "sonraki" ile etiketlenmiş en son 20 nesneyi almak için Riak'ın bağlantı kurma yeteneğini kullanır. Son olarak, ikinci ve son sorgu tweets kendisini almak için ilk sorgu tarafından hesaplanan tuşları kullanır (kullanarak harita/azaltma).
Takip etmediğiniz kullanıcıların tweet'lerini kaldırmak için, ilgili zaman çizelgesi nesnelerini/tweet'leri almak için Riak 1.0'ın ikincil dizin yeteneğini kullanırdım.
Riak 1.4 sıralama ve sayfalandırma İkincil Endeksler ile mevcut olduğundan: http://basho.com/basho-announces-availability-of-riak-1-4/ – nacmartin