Bir CouchApp (ara katman yazılımı) için en iyi yaklaşımı karar vermeye çalışıyorum. Fikrim ile benzerlikler bulunduğundan, bir CouchDB'de depolanmış bir stackoverflow sayfamız olduğunu varsayalım. Özünde, üst, cevaplar ve kuyruklu yıldızlar ile ilgili asıl sorudan oluşur. Bunlar temelde üç katman.CouchDB: Tek belge "birlikte" belgelere "birlikte"
İki yolu saklamak için vardır. Verilerin uygun bir JSON temsilini içeren tek bir belge içinde veya girişin her bir parçasını daha sonra bir görünümle birleştiren ayrı bir belgede saklayın (buna benzer: http://www.cmlenz.net/archives/2007/10/couchdb-joins)
Her iki yaklaşım da iyi olabilir. Ancak her ikisinin de şu anki bakış açımdan devasa olumsuz etkileri var. Meşgul bir belgenin saklanması (bir çok kullanıcının birden fazla kullanıcı tarafından değiştirilmesi beklenir), bir tarafın çatışmaya neden olması gibi. A kullanıcısı değişikliklerini belgede saklarsa, B kullanıcısı güncellemeyi yazdıktan sonra çakışma hatası alır. Tekrar denemeden önce belgeyi yeniden indirerek kullanıcı bilgisi olmadan bunu düzeltmeyi hayal edebiliyorum.
Ama ne belge oldukça büyükse ? Bir kayıt işlemi üzerinde oldukça dikkat çekici bir gecikme yaratacak olan zaman içinde oldukça şişirilmiş olmaları dışında, özellikle bir çok kullanıcının aynı anda bir dokümanı güncellemesi nedeniyle yeniden deneme sürecinin birden çok kez gerçekleşmesi gerekiyorsa.
Gördüğüm başka bir sorun ise düzenleme. Her kullanıcının katkılarını düzenlemesine izin verilmelidir. Şimdi, eğer bir belge içinde saklanıyorlarsa, katı bir auth işleyicisi yazmak zor olabilir.
Şimdi birden çok belge yaklaşımına bakalım. Soru, Cevaplar ve Yorumlar kendi dokümanlarında saklanacaktır. Avantaj: sadece belgenin asıl sahibi çatışmalara neden olabilir, çok sık olmayacak bir şey. Tamamen küçük unsurlar olmakla, yeniden yükleme yapmak fazla zaman almaz. Ayrıca, auth rutininin gerçekleştirilmesi oldukça kolay olmalıdır.
Şimdi burada olumsuzluk var. Tek bir belgeyi sorgulamak ve görüntülemek gerçekten kolaydır. Düzenli ve yapılandırılmış bir biçimde tüm öğeyi içeren JSON nesnesini kullanmak için% 100 hazır sunmam için gerçek görünümü elde etmediğim için, etrafa serpiştirilmiş çok sayıda parçacığı dağınık bir şey gibi görünüyor.
ben gerçek sorunu iletişim kurabilmesi oldum umarım. Hangi çözümün benim için daha uygun olacağına karar vermeye çalışıyorum, ki bu da üstesinden gelinmesi kolaylaşır. İlk çözümün depolama ve sorgulama açısından daha güzel olmasını hayal ediyorum, ancak ikincisi, daha iyi bir anahtar yönetim anlayışıyla çözülebilen daha pratik olanı (tamamen anahtarların ilkesine bağlı değilim).
önceden Yardımlarınız :) ikinci seçeneği ile
Merhaba Ryan! Detaylı ve anlaşılır cevaplarınız için çok teşekkürler. Henüz bilmediğim bazı şeyleri söyledin. İkinci seçeneğin ilk sürümünü oldukça hızlı bir şekilde uygulayabildim, ancak girişinize göre ayarlayacağım. Çok teşekkürler! :) –