CouchDB ve Couchbase arasındaki fark


270

CouchDB ve Couchbase arasında önemli farklar var mı ?


45
İsimler hakkında kafanız mı karıştı? Ben de öyleydim, bu yüzden bu üst yanıttaki adlandırma bilgilerini adlandırma geçmişinin görselleştirmesine yeniden ekleyerek başladım .
Jeroen

@Jeroen Bu harika bir görselleştirme. En üstteki cevapta düzenlenmeli mi?
shoover

@shoover Thx, yardım ettiğine sevindim. Yeterince doğru olup olmadığına karar veremem, ancak rsp (bu cevabın ana yazarı) / topluluk layık görürse, bunu SO lisansı altına dahil etmekten çekinmeyin.
Jeroen

Yanıtlar:


555

CouchDB ve Couchbase Server arasında işaret edilmesi gereken bazı önemli farklılıklar olduğunu düşünüyorum.

CouchDB'den Couchbase Sunucusuna geçmenin avantajları hakkında yazmayacağım çünkü bunlar hemen hemen her yerde açıklanıyor (bkz . Damien Katz tarafından CouchDB'nin Geleceği veya Couchbase tarafından Apache CouchDB'ye bakın). Bunun yerine, Couchbase Server'da bulamayacağınız CouchDB özelliklerini numaralandırmaya çalışacağım .

CouchDB ve Couchbase ile ilgili tüm isimler gerçekten kafa karıştırıcı olabilir, bu yüzden en önemli olanların kısa bir açıklamasıyla başlamak için bu cevabı güncelledim.

İsimler ve karışıklık

CouchDB, CouchIO, CouchOne, Couchbase, Couchbase Server, Couchbase Mobile, Couchbase Lite, CouchApps, BigCouch, Touchbase, Membase, Memcached, MemcacheDB ... hepsi farklı ve yine de sadece isimlerden açıkça belli olmayan bir şekilde ilişkili.

İlk olarak, eski bir IBM geliştiricisi olan Damien Katz tarafından oluşturulan bir veritabanı olan CouchDB vardı. Bir Apache projesi olduktan sonra resmi adı Apache CouchDB olarak değiştirildi.

Apache CouchDB üzerinde çalışmak üzere CouchIO adında bir şirket kuruldu ve daha sonra adını CouchOne olarak değiştirdi ("adı" ile şirket adını kastediyorum - veritabanı adı değil).

CouchOne (eski adıyla CouchIO), Couchbase adında yeni bir şirket kurmak için Membase (eski adıyla NorthScale) ile birleşti. Membase (şirket) Membase'yi (aynı adı taşıyan bir ürün) geliştirdi. Membase Memcached projesinin birçok lideri tarafından oluşturuldu ve Memcached protokolünü kullandı. CouchOne ve Membase'in birleşmesinden sonra Couchbase, Membase yazılımının geliştirilmesine devam etti ve daha sonra adını Couchbase Server olarak değiştirdi.

Bugün çoğu insanın Couchbase Server'ın CouchDB'nin yeni bir sürümü olduğuna inanıyor, ancak aslında Membase'nin yeni bir sürümü. Hala CouchDB'nin RESTful API'sini değil Memcached protokolünü kullanıyor. Bu arada, CouchDB hala bir Apache projesi olarak aktif olarak sürdürülüp geliştirilmiş CouchDB'dir.

Şimdi ilgili farklılıklara:

Lisanslama

Couchbase Server tamamen açık kaynaklı / ücretsiz bir yazılım değildir . İki sürümü vardır: Topluluk Sürümü (ücretsiz ancak en son hata düzeltmeleri yoktur) ve Enterprise Sürümü (kullanım, gizlilik hükümleri, Couchbase Inc. tarafından "Lisans Alanın tesislerinde normal çalışma saatlerinde gerçekleştirilecek" denetimleri ve diğer tipik koşullar vardır) birçok kişinin kabul edilemez bulabileceği özel yazılımlar).

CouchDB, Apache Software Foundation'ın açık kaynaklı / ücretsiz bir yazılım (dizgisiz) projesidir ve Apache Lisansı, Sürüm 2.0 (DFSG uyumlu, FSF onaylı, OSI onaylı, GPL uyumlu, copyleft olmayan) , ticari dostu).

Felsefe

Doğrudan işaret ettiğimi hiç görmedim, ancak bu aslında bu iki veritabanı arasındaki en önemli fark olabilir, çünkü sadece belirli özellikler, API'ler veya lisanslama ile ilgili değil, dağıtılmış bilgi işlem modellerinin altında yatan felsefe ile ilgilidir. CouchDB ve Couchbase Server, dağıtılmış sistemler ve veritabanları oluşturma felsefelerinde tamamen farklıdır.

CAP teoremine göre, dağıtılmış bir veritabanının aynı anda tutarlılık, kullanılabilirlik ve bölüm toleransı sağlaması imkansızdır.

CouchDB bir AP tipi sistemdir ( Kullanılabilirlik ve Bölüm toleransı sağlar ).

Couchbase Server bir CP tipi sistemdir ( Wikipedia'ya göre ) VEYA CA tipi bir sistemdir ( Couchbase teknik güncellemesine göre ) - BU HANGİ DOĞRUDUR ? LÜTFEN YORUMLAYIN.

Özellikleri

Couchbase sunucusu tarafından desteklenmeyen CouchDB özelliklerinin bir listesi olarak buldum:

  • RESTful API yok (yalnızca görünümler için, CRUD işlemleri için değil)
  • _ değişiklik yayını yok
  • bir eşler arası çoğaltma
  • CouchApps yok
  • Futon yok (farklı bir yönetim arayüzü var)
  • belge kimliği yok
  • veritabanı kavramı yok (sadece kovalar var)
  • CouchDB veritabanı ve Couchbase Sunucusu arasında çoğaltma yok
  • açık ek yok (ek dosyaları yeni anahtar / değer çiftleri olarak depolamanız gerekir)
  • Hiçbir HTTP API her şey için (eğer Couchbase Server SDK'larını veya Deneysel Müşteri Kütüphaneleri birini kullanmak gerekir geliştirin Couchbase yüzden hiçbir deneyler kıvrılma ve wget )
  • CouchDB API'sı yok (bunun yerine Memcached API'sını kullanıyor)
  • tarayıcıdan her şeyi yapamazsınız (sunucu tarafı bir uygulama yazmanız gerekir)
  • Web uygulamaları için iki katmanlı mimari mümkün değildir (ilişkisel veritabanlarında olduğu gibi tarayıcı ve veritabanı arasında oturmak için bir sunucu tarafı uygulaması yazmanız gerekir)
  • nihai tutarlılık yok
  • tamamen açık kaynaklı / özgür yazılım değil
  • CouchDB için bir yedek yedek değil (bunun yerine Memcached için bir yedek yedek gibi görünüyor)

CouchDB'nin bu özellikleri sizin için önemli olabilir veya olmayabilir, bu yüzden bunların eksikliği dezavantajlı olsun veya olmasın kesinlikle özneldir, ancak CouchDB'den Couchbase Sunucusuna geçilip geçilmemesi kararının bu farklılıklara dayanması gerektiğini düşünüyorum ve mevcut CouchDB dağıtımlarınızda bu özelliğe bağımlılığınız.

Örneğin izledikten sonra CouchDB ilgilenen var verdiyseniz yem değişiklikleri CouchDB J. Chris Anderson tarafından Mikeal Rogers veya büyük bir CouchApp öğreticiler biri tarafından NodeCamp konuşma o zaman gerçekleştirmek zorundayız size sonra Couchbase Server geçmek istiyorsanız konuştukları hemen hemen her şeyi unutmak zorunda kalacaklar.

Bu nedenle, Couchbase Server'ın Memcached ve Membase'in bir evrimine (CouchDB'nin bir evrimi değil) benzediğini ve şu anda Memchached veya Membase kullanıyorsanız harika bir ürüne benzediğini söyleyebilirim. CouchDB'yi en temel şekilde kullanıyorsanız, aynı şeyler için Couchbase Sunucusunu kullanmayı düşünebilirsiniz ve daha iyi performans gösterebilir veya etmeyebilir (lisans kısıtlamalarına aldırmazsanız). Ancak, CouchDB'de benzersiz olan herhangi bir özelliği (değişiklik akışı, CouchApps, iki katmanlı mimari, eşler arası çoğaltma vb.) Kullanıyorsanız, bu özellikleri unutabilir veya CouchDB ile kalabilirsiniz. Her durumda, geçiş yapmayı düşünmeden önce CouchDB Kullanıcıları için Couchbase'e Geçiş öğreticisini okuduğunuzdan ve anladığınızdan emin olun .

İnsanlar genellikle CouchDB'nin Couchbase Sunucusu tarafından bir şekilde kullanılmadığı veya Couchbase'in eski, eski bir sürümü olduğu hakkında yanlış bir izlenim (belki de "CouchDB'nin geleceği nedir? Bu Couchbase." Bu arada CouchDB aktif olarak bakımı yapılan açık kaynaklı bir projedir, Couchbase sunucusu tamamen ayrı bir projedir (daha yeni bir projedir, ancak CouchDB'nin daha yeni bir sürümü değildir - hatta uyumlu değildir) ve CouchApps oluşturmak için yeni araçlar bile hala geliştiriliyor (ör. Kanso projesine bakın) o zaman CouchDB yakında hiçbir yere gitmiyor.

Umarım karışıklığı netleştirir. Burada bir sorunum varsa lütfen beni düzeltin.

Güncelleme:

Couchbase Sunucusu aslında Membase Sunucusu için yeni bir addır (Membase Sunucusu, sürüm 1.8 civarında bir yerde Couchbase Sunucusu olarak yeniden adlandırılmıştır). Bkz Review Couchbase 2011 yılı :

Maalesef, potansiyel kullanıcılarımızın çoğunun kafasını karıştırdık. Membase Server ve yeni mobil ürünlerimize ek olarak, Apache CouchDB'nin paketlenmiş bir “dağıtımı” olan Couchbase Single Server'ı da sunduk. Bunun üzerine, CouchDB teknolojisini Membase Server'a dahil eden Couchbase Server 2.0'ın geliştirici önizlemelerini yayınlamaya başladık - ancak bu ürün Couchbase Single Server (veya CouchDB) ile uyumlu değildi. [...] Membase Server, Ocak ayında bir sonraki sürümünde Couchbase Server 1.8 olarak yeniden adlandırılacak - bu sadece “ad” karışıklığını hafifleten küçük bir adım. En başından beri planlandığı gibi, Couchbase Server 2.0 sürümü (şu anda Developer Preview 3'te) dizin ve sorgu işlevselliği ekleyecektir. Couchbase Server 2.0, CouchDB projesinden önemli bir teknoloji içerecek olsa da,CouchDB ile yukarı doğru uyumlu olmayacak ve "CouchDB'nin sürümü" olarak görülmemelidir. [vurgu eklenmiştir]

Ayrıca bakınız:


69
Bravo. Şeylerin aslında bu tarafını açıklayan bir şey gördüğüme sevindim (listelediğiniz gibi mevcut tüm karşılaştırmalar göze çarpan bir Couchbase sapmasına sahip).
Stuart P. Bentley

6
@WalterTross: Aslında CouchDB API kullanmamak, RESTful olmamak ve HTTP kullanmamak tam olarak aynı şey değildir. Örneğin Riak, CouchDB API'sini kullanmıyor, ancak yine de RESTful API kullanıyor. Ayrıca, REST kullanmayabilir, ancak yine de HTTP kullanabilir (örn. SOAP veya başka bir Web hizmeti). Burada Couchbase sunucusunun sadece CouchDB API'sini kullanmakla kalmayıp aynı zamanda API'sının RESTful olmadığını ve HTTP'yi bile kullanmadığını açıkça belirtmek istedim.
rsp

24
Bunun cevap olduğunu düşünüyorum. Teşekkürler.
skift

10
"CP vs CA" sorunuzla ilgili olarak: tek bir makineden bahsetmediğiniz sürece, bir "CA" sistemine sahip olmak imkansızdır. Ağda her zaman bölümler vardır ( aphyr.com/posts/288-the-network-is-reliable ) ve böylece dağıtılmış bir sistem, herhangi bir zamanda, Kullanılabilir veya Tutarlı karşısında değiş tokuş yapacaktır. Bölümler (ama asla ikisi de). Yani, indüksiyonla Couchbase CP'dir. Aslında bu, vBuckets'in arkasındaki çoğaltma stratejilerinden kaynaklanmaktadır: a) 1: n master / slave (s) veya b) 1..n zincir tabanlı ve dynamo'dan (AP) sonra modellenen bir sistem.
Greg Burd

9
Bugün itibariyle, bu makaleye çok önemli bir ek var: Couchbase SyncGateway. Bu, CouchDB'nin Couchbase ile SyncGateway aracılığıyla çoğaltılabileceği şekilde CouchDB çoğaltmasını API uyumlu bir düzeyde Couchbase'e getiren bir parçadır. Bu, Couchbase Lite perspektifinden büyük bir anlaşma, (bazı köşe vakaları hariç) CouchDB ile senkronizasyondan SyncGateway ile senkronize etmeye
Leonid Usov

39

Farklı ama benzer yazılım parçalarıdır. Ben içerik remix ettik üst cevap kudreti yardım "fark" yanı sıra ortak şeye açıklık bir resmin içine:

yukarıda verilen diğer cevap, bu resmin geniş bir açıklamasıdır

Matt Ingenthron'dan bir yorum ekliyor:

Bazı bağlamlar / düzeltmeler eklemek için: NorthScale kurucuları Steve Yen ve Dustin Sallings. Kurduktan kısa bir süre sonra onlara katıldım. Ayrıca Damien daha sonra Couchbase'e katılmadı, birleşmeden önce CouchIO / Couch One'ın bir parçasıydı. Eğlenceli ve tarihi bir kaynak belirtmek: https://youtube.com/watch?v=aZ_JOnU8tkI


4
Bu süper yararlı bir bilgi-grafik!
Zach Smith

3
Bazı bağlamlar / düzeltmeler eklemek için: NorthScale kurucuları Steve Yen ve Dustin Sallings. Kurduktan kısa bir süre sonra onlara katıldım. Ayrıca Damien daha sonra Couchbase'e katılmadı, birleşmeden önce CouchIO / Couch One'ın bir parçasıydı. Eğlenceli ve tarihi bir kaynak gösterme: youtube.com/watch?v=aZ_JOnU8tkI
Matt Ingenthron

1
Güncelleme için @MattIngenthron Thx. Cevabınızı kayda aldım, eğer akış şemasını buna göre ayarlayabileceğim zamanı bulursam.
Jeroen

1

CouchBase'in CouchDB'nin 'kurumsal' alternatifi olarak göründüğünü düşünüyorum. Hangi bir bakıma doğru gibi görünüyor. CouchDB'ye kıyasla kayıtlara (belgelere) ve 'kullanıma hazır' REST uç noktalarına dosya ekleyememe dışında, CouchBase, sql benzeri bir dile, yani N1QL'e (bazen bir Nikel olarak telaffuz edilir) sahiptir. Gerçekten 'NoSQL' terimini kullanmayı sevmeme / önermeme nedenlerinden biri budur. Şahsen 'ilişkisel olmayan' terimini seviyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.