Dosya bazlı önbellekleme çözümü açısından CouchDB Karşı MongoDB Karşı Memcachedb?

6 Cevap php

Biz aslında her yerde kullanıcı tercihleri ​​ve kriterlere dayalı bir haftaya kadar 3 gün verileri (metin dosyaları) önbelleğe bir önbelleğe alma çözüm gerekir. Bu durumda, bellek tabanlı önbelleğe bize mantıklı değil. Biz ancak ben de bazı SQL çözümleri NO düşündüm MemcacheDB sevk edildi.

Bizim mevcut uygulama RDMS (MYSQL) kullanır ve ben o ufukta daha bir şey olarak NoSQL itiraz etmez ancak MemcacheDB kullanmak mantıklı sanırım. Ancak biz NoSQL altında bir üretim düzeyi uygulama dağıtmış değil ve beta malzeme yönetimi / yatırımcılar ile de razı değil. Herhangi nasıl düşünceleriniz nelerdir ve bunu nasıl ele alacak?

Thank You

6 Cevap

CouchDB ve MongoDB hem büyük veritabanları, ama bunlar mevcut RDBMS üstüne bir önbellek katmanı için korkunç seçimlerdir. Onlar hala oldukça olgunlaşmamış olduğu gerçeği yanında, hepsi de amaca uygun değildir. Ayrıca, hız-bilge CouchDB veya MongoDB kullanarak daha önbellek tabakası olmadan gidiş daha iyi olurdu - onlar basit okuma için hem yavaş / MySQL hatta daha yazıyor. Evet, NoSQL veritabanları "cool", ama bu onlar yapmak demek değil bir şey için kullanmak gerektiği anlamına gelmez.

Eğer bulacaksınız hızlı ve en hafif şey hakkında sadece olduğu gibi ben, Memcached ile gitmek istiyorum, ve bu iyi bilinen ve iyi desteklenen bulunuyor.

Eğer yönetim ve yatırımcılara itiraz ve mevcut sistemin (MySQL söz) çalıştığı konusunda endişeli iseniz, neden değiştirmek istiyorsunuz? Hala beta projelere oldukça istikrarlı bir projeden gidiyoruz, ve mevcut sistem zaten çalışır eğer ne değeri ekliyoruz?

Yukarıda belirtildiği gibi, bütün kaynaklar CouchDB ETAGlar içerir.

Ne söz değildi Eğer CouchDB önünde any HTTP caching çözüm koymak ve etag tabanlı önbelleğe yapmak olabilir olmasıdır. Bu şekilde istediğiniz ne olursa olsun Vernik, nginx, kullanabilirsiniz.

Ben de Cassandra bakmak (http://cassandra.apache.org/). Istiyorum (I Coldfusion ile çalışmak beri PHP hakkında Dunno) Cassandra daha çekici bulundu şekilde, MemcacheDB ve CouchDB denedim. İşte ilgili bir soru http://stackoverflow.com/questions/2508649/cassandra-php-module

CouchDB zaten bazı önbelleğe yapar: Eğer bir belge olsun sunucusu da HTTP ETag başlığını (bu CouchDB belge revizyonu gibi aynı) gönderir.

Dahaki sefere tarayıcısı Etag alınan gönderir aynı belge sorar. Belge değiştirilmiş değilse sunucu HTTP kodu 304 Not Modified ile yanıt verir ve tarayıcı yerel önbellekten belge alır.

Ancak metin dosyası değişiklikleri, muhtemelen en iyi seçenek kullanıcı tercihlerine göre incelikleri HTTP caching başlıklarını gönderir özel kod yazmak olsa bile, kullanıcı tercihlerine göre farklı zamanlarda dosyaları önbelleğe varsa.

Bütünlüğü için başka iyi seçenektir Redis. Sen Memcache karşılaştırılabilir performans olsun ama Redis aynı zamanda çeşitli veri yapıları (sağlamalarının, listeler, seti, setleri sıralanır) ve atomik işlemleri destekler.

Eğer sebat ile memcached varsa, Redis kontrol etmelisiniz. Bu sebat ile birlikte tüm memecached işlevselliği (ve daha fazla) sahiptir.

Ben kendim denemedim, ama ben Redis aynı zamanda memcached API desteklenen okuma hatırlıyorum.