Leveldb, Google'ın yeni ve kalıcı bir kalıcı anahtar değer deposu gibi görünüyor. Leveldb, Redis veya Riak veya Tokyo Tyrant'dan nasıl farklıdır? Hangi özel kullanım durumlarında diğerinden daha iyi?Leveldb, Redis veya Riak veya Tokyo Tyrant ile nasıl karşılaştırır?
cevap
Ben leveldb ve Redis o noktaları arasındaki fark noktalar üzerinde olmasına rağmen ben colum ölçütleri ile biraz katılmıyorum buluyorum.
Eşzamanlılığa ihtiyacınız var mı? Redis ile giderdim. Bunu söylüyorum çünkü Redis'in kod yazması için yazılmış bir kodu var. Eşzamanlılığı ele almak için iyi yazılmış Diğer Kişilerin Kodunu kullanabileceğim her zaman, o kadar iyi. Çok iş parçacıklı uygulamalar demek istemiyorum, aynı sistemde olsun ya da olmasın, çoklu süreçler kavramını da buna dahil ediyorum. O zaman bile, çok iş parçacıklı bir uygulamada kilitleme yazma ve hata ayıklama gerek yok gözlerimde büyük bir avantajı vardır.
Uygulama içinde tamamen kendi kendine yeterli olmasını ister misiniz? Bir kütüphane olduğu için leveldb ile devam edin. Sadece bir k/v'dan daha fazlasına mı ihtiyacınız var? Redis ile git.
Sadece daha iyi takım elbise hakkında yorum yapmak için Riak veya TT'de yeterince akıcı olmadığımı düşünürdüğüm için leveldb veya Redis yönüyle ilgili yorum yapıyorum.
Kısacası, tek iş parçacıklı bir uygulamada kalıcı anahtar-değer deposu arıyorsanız, o zaman leveldb listeniz arasından seçim yapma seçeneğidir (başka bir şey Tokyo kabinesi veya iyi bir BerkleyDB veya hatta sqlite olabilir). Fakat bundan daha fazlasını istiyorsanız, diğerlerinden birini seçin.
[değiştir: updated explanation wrt. Sadece çünkü bu (önemli) ayrım yapılmış görmüyorum önceki cevapların hem de bu eklemek
Analizinize katılıyorum, emin değilim. Lütfen [Hacker News thread] bölümüne bakın (http://news.ycombinator.com/item?id=2526032). Hem eşzamanlılık hem de hız leveldb açısından üstün görünüyor, ancak hala objektif çalışmalar arıyorum. – rafidude
Sanırım buna bağlı * neden * eşzamanlılık ile gidiyorsunuz ve buna nasıl ihtiyacınız var. Redis'in, eşzamanlı olmamakla birlikte eşzamanlılık ile daha hızlı olacağını savunmuyordum (bunu düzelteceğim). Fakat "eşzamanlılığı ele almak için kod yazmam gerekmiyor" bakış açısıyla, bunu önemli bir faktör olarak görüyorum. –
Vay, aşağıya oy açıklaması mı? –
farklar: LevelDB "hızlı bir kalıcı anahtar değer deposuna uygulayan bir kütüphane" ise
- Redis, bir sunucudur. Bunun için Redis ile sunucuyu kontrol etmelisiniz. Leveldb ile veritabanı diskte saklanır, bu bellekte saklanan Redis'den çok daha yavaş çalışır.
- Leveldb sadece anahtar/mağaza sunmaktadır. Redis de bu vardır, ama aynı zamanda çok daha fazla işlevleri vardır ve
benzerlikler bulunmaktadır: üzerinde birini seçmek
- Her ikisi de var Anahtar/Mağaza yöntemleri
nedenleri başka bir
Eğer bir C/C++ uygulaması yapıyorsanız, leveldb gitmek için yoldur. Sadece mysql olarak ağır bir kaynak olmayan bir veri tabanına ihtiyacınız var. Leveldb, kod düzeyinde erişim sağlarken, redis ile sunucuyla iletişim kurması gereken bir arayüze ihtiyacınız var. Başka bir uygulamada, Redis gitmek için bir yoldur. Birden fazla uygulamanın erişebileceği gerçek bir sunucuya sahip olmakla kalmaz, diske, kümelere, listeye, karmaşaya yazma gibi başka özellikler de elde edersiniz ve devam eder.
> * Hafızada saklanan redis * Okuyuculara not, biraz yanıltıcıdır. Disk * ve * bellekte tutulur. Redis'te saklanan veriler, aksine, memcached değil, uçucu değildir. –
@CrescentFresh Ancak, bellek parçasını tekrardan çıkarmak imkansız, değil mi? Kişi, kalıcılık için birden fazla GB veri saklamak istiyorsa ve bunu kapsayacak koya sahip değilse, o zaman redis kullanılamayacak bir şey değildir, değil mi? – superhero
@Erik: Sadece kapağı kapatmak için ram'a ihtiyacınız yok, ama arka plan tasarrufu için fazladan ihtiyacınız var. Sorunuz ve bu yorum tam olarak [SSS] 'de açıklanmıştır (http://redis.io/topics/faq). –
eşzamanlılık] ...
- Redis: Bir veritabanı sunucusu mı. Özel bir ikili protokolle (genellikle istemci kütüphanesi aracılığıyla) iletişim kurarsınız.
- LevelDB: Anahtar değer deposu uygulayan bir kitaplıktır. C++ API directly numaralı telefonu arayarak bununla iletişim kurarsınız. Eğer SQLite ve ne kadar popüler istemci uygulamaları için gömülü bir DB (I Android ve iOS gemiyi bunu hem inanmak) daha sonra LevelDB gibi bir şey sığar yere bakar.
hayal olarak haline gelmiştir aşina değilseniz
karmaşık bir PIM uygulaması yazıyordunuz, belki de ofisdeki bireysel bilgisayarlara yüklenmek için bazı kurumsal adres defteri yöneticisi. Tüm bu verileri, uygulamanızın içinde yazdığınız/ayrıştırdığınız XML veya JSON'da saklamak istemezsiniz - eğer yapabiliyor olsaydınız, daha kolay erişim kalıplarına sahip olmak için bir DB'de saklarsınız.
Ayrıca, yerel bir kopyasını Redis'e yüklemek ve yüklemek zorunda kalmak istemiyorsunuz, sadece rastgele bir bağlantı noktasında çalışıyor, böylece bağlanabiliyorsunuz ... doğrudan ve doğal olarak arayabileceğiniz bir DB istiyorsun. senin app ve "tel üzerinde" iletişim hakkında endişe ... sen bir istemci sadece app gerek yok ağ-gözü şeyler olmadan bir DB ham bağırsakları istiyorum.
Bu, LevelDB'nin bulunduğu yerdir.
Farklı bir iş için farklı bir araçtır.
Lütfen daha fazla bilgi için [Hacker News thread] bölümüne gidin (http://news.ycombinator.com/item?id=2526032). – rafidude