2011-12-20 28 views
5

MongoDB'yi kişisel bir proje için değerlendirme sürecindeyim. Kullanıcıların sunucumdaki bilgileri kaydetmelerine ve depolamasına olanak tanıyan bir site hazırlıyorum.MongoDB + Web Uygulaması: Kullanıcı başına veritabanı

MongoDB'yi değerlendirirken, bir kayıt eklendiğinde ilk defa bir veritabanı oluşturabildiğini gördüm. Bu, her bir kullanıcının verilerini kendi veritabanına ayırabileceğimi düşünmemi sağladı. Veritabanı adı, kullanıcının benzersiz kimliğinden türetilir. Bir kullanıcı kaydolduktan sonra, bilgileri ilk kez sakladıklarında veritabanları oluşturulur.

Bunun MongoDB ile uygulanabilir bir tasarım olup olmadığını bilen var mı? Tüm kullanıcıların verilerini tek bir veritabanında saklamak daha iyi olur mu?

+0

Neden bir sonraki alt seviye kullanılmıyor, koleksiyonlar? Kullanıcı başına tek veritabanları bana biraz fazla yüklendi. Ve neden genel olarak kullanıcı verilerini farklı mağazalarda dağıtıyor? Çoğu durumda, verileri türe göre değil, türe göre ayırırsınız. – asaaki

+0

MongoDB 2.2.0 veritabanı düzeyinde kilitlemeyi sunar. Kullanıcı başına farklı belge türlerini (kendi koleksiyonlarına sahip olacak) saklıyorsanız, kullanıcı başına veritabanı hala uygun olabilir. Çok sayıda veritabanı kullanıyorsanız, bunu unutmayın: http://www.mongodb.org/display/DOCS/Too+Many+Open+Files#TooManyOpenFiles-Estimatingulimitsetting –

cevap

4

Evet, tek bir koleksiyon daha iyidir, bu şekilde indekslemeyi avantajınıza göre kullanabilirsiniz.

Veritabanlarının veya koleksiyonların bir listesini yinelemek her zaman O (N) zamanını alırken, indeksleri kullanarak tek tek belgeleri bulmak için O (log N) zamanını elde edebilirsiniz.