SORU
14 HAZİRAN 2010, PAZARTESİ


MongoDB Şema Tasarım - Çok küçük belgeler veya daha az büyük belgeleri?

Arka plan
Bizim İÇERİSİNDE bir dönüşüm veritabanı MongoDB için prototip ediyorum. Denormalizing olsa da, eğer daha az sayıda (yüzlerce, binlerce) büyük belgeler neden olan iki seçenek, daha küçük belgeleri çok sayıda (milyonlarca) ya da bir yol var gibi görünüyor.

Eğer basit bir analog aşağı biçimlendirebilir miyim, böyle daha az Müşteri belgelerle koleksiyonu (Java) arasındaki farkı nasıl olur

class Customer {
    private String name;
    private Address address;
    // each CreditCard has hundreds of Payment instances
    private Set<CreditCard> creditCards;
}

ya çok bir koleksiyon, bu gibi birçok Ödeme belgeleri:

class Payment {
    private Customer customer;
    private CreditCard creditCard;
    private Date payDate;
    private float payAmount;
}

Soru
MongoDB çok tercih için tasarlanmış, çok küçük belgeler veya daha az büyük belgeleri? Bu sorunun cevabı, çoğunlukla koşma planı sorgular neye bağlıdır? (yani Kaç tane kredi kartı müşteri X var? vs ortalama miktarı tüm müşteriler, geçen ay ödeme Ne oldu?)

Çok çok aradım ama soruma cevap verip, bana yardımcı olacağını MongoDB şema en iyi uygulamaları herhangi bir hata yapmadım.

CEVAP
22 HAZİRAN 2010, Salı


Kesinlikle yaptığın sorguları için optimize etmek gerekir.

İşte benim en iyi tahminim senin tarifine göre.

Muhtemelen her Müşteri için tüm Kredi Kartları bilmek, Müşteri Nesnesi içinde o bir dizi tutmak isteyeceksiniz. Ayrıca muhtemelen her Ödeme için Müşteri bir başvuru var. Bu Ödeme belgesi nispeten küçük tutmak olacaktır.

Ödeme nesneyi otomatik olarak kendi KİMLİĞİ ve dizin var. Muhtemelen Müşteri referans bir dizin de eklemek istiyorum.

Bu hızlı bir şekilde tüm müşteri nesne her zaman depolamadan, Müşteri tarafından Ödemeler aramak için izin verir.

Eğer cevaplamak istersen sorular gibiOrtalama miktarı tüm müşteriler, geçen ay ödendi "ne"bir harita, herhangi bir büyük veri kümesi için küçült / isteyeceksin yerine. Bu yanıt alamayacaksın "gerçek zamanlı". Bu "referans" Müşteri için muhtemelen azaltır göster bunlar için yeterli. bir depolama bulabilirsiniz

Doğrudan cevap için:MongoDB çok tercih için tasarlanmış, çok küçük belgeler veya daha az büyük belgeleri?

MongoDB endeksli girişleri çok hızlı bir şekilde bulmak için tasarlanmıştır. MongoDB bir bulmakta çok iyikaçbüyük bir samanlıkta iğne. MongoDBdeğilçok iyi bulmaktaensamanlıkta iğne. Bu yüzden en yaygın kullanımı davaların etrafında veri oluştur ve göster/yazma işleri azaltmak için nadir durumlarda kullanın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ampisound

    Ampisound

    12 Kasım 2006
  • HBO

    HBO

    17 Mayıs 2006
  • Michael Neal

    Michael Neal

    2 Mayıs 2009