2010-04-06 46 views
8

Belge sayısı daha fazla ise CouchDB'de veri sorgulaması yavaşlıyor mu?CouchDB sorgulama performansı

Örnek Senaryo:

  • Müşteri adı için bir formda bir combobox var. Kullanıcı müşteri adını yazdığında, otomatik doldurma yapmak zorundayım.
  • CouchDB'de yaklaşık 10 bin müşteri belgesi olacak. Bunu yapmak için bir manzara yaratmak zorunda olduğumu anlıyorum.
  • CouchDB veritabanı, uygulamanın bulunduğu yerel makinede.

Soru: Eşleşen müşteri adları için DB'yi sorgulamak 2 - 3 saniyeden uzun sürecek mi? Sorgulama, CouchDB'de çok sayıda belge varsa, her sorgu için daha fazla zaman alır (yaklaşık 100.000 belge)?

Görüntüleme/dizin oluşturma hakkında herhangi bir işaretçi yardımcı olacaktır.

Şimdiden teşekkürler.

cevap

7

Görünüm, her belgede çalışır, ancak yalnızca bir kez. Bundan sonra, belgenin görünüm değeri (ler) sonsuza kadar saklanır. Bir müşteriyi isme göre almak çok hızlı olacaktır çünkü normalde sorgulama zamanında görüntülenmek üzere yalnızca birkaç yeni belgeye sahip olursunuz.

Daha fazla belgeniz varsa, sorgu süresi fark edilir bir şekilde artmaz. Teknik olarak, erişim süreleri, belge sayısı ile logaritmik olarak büyür. Bununla birlikte, pratikte belgelerin alınması temelde sabit bir zamandır ve bir problem olması pek olası değildir.

+0

Merhaba @JasonSmith, yavaş ilk defa performans sorunuyla başa çıkmanın bir yolu var mı? Görünüşe bakılırsa, ilk izlenimin, sonsuza kadar sürdüğünü gördüm (bir bakışta 10k belgelerini ele almak). Görünümün daha önce çalıştırılıp/çalıştırılmadığını tespit etmenin bir yolu var mı? – Bundeeteddee

+0

@Bundeeteddee Görünümdeki her şeyi hemen döndürecek olan? Stale = update_after seçeneğini ekleyebilir ve arka planda görünümü canlandırmaya başlayacaktır. Bu bir trade-off yapacak: hemen bir cevap alırsınız, ancak en yeni veriler olmayabilir. Alternatif olarak, _canges? Feed = sürekli sorgulayabilir ve daha sonra CouchDB bir değişiklik gerçekleştiğini size bildirdiğinde görünümü sorgulayabilirsiniz. Bu biraz iş gerektirir ama bu en emin yoldur – JasonSmith