سؤال

يبدو أنك غير قادر على عش قواعد البيانات في couchdb. كيف يعمل الناس حول هذا القيد؟ على سبيل المثال، افترض أنني أريد إنشاء محرك مدونات حيث يحتوي كل مجال على قاعدة بيانات منفصلة. داخل كل قاعدة بيانات قد أرغب في قاعدة بيانات المستخدمين وقاعدة بيانات الطلبات، وما إلى ذلك لاحتواء مستندات المستخدم المختلفة ومستندات الطلب وما إلى ذلك.

يبدو أن الطريقة الواضحة هي بنية مسطحة حيث يقوم اسم قاعدة البيانات بترسيم الحدود الاصطناعية بين مستويات التعشيش بقاعدة البيانات مع واصلة:

myblog.com-users
myblog.com-posts
myblog.com-comments
anotherblog.com-users
anotherblog.com-posts
anotherblog.com-comments
...hundreds more...

سيكون حل آخر للحفاظ على قواعد البيانات ذات المستوى الأدنى وتمييز كل مستند بقيمة المستوى الأعلى:

المستخدمين قاعدة البيانات التي تحتوي على مستند User1., ، مع المجال مثيل = "اختبار" أو مجال المجال = "myblog.com"

هل كانت مفيدة؟

المحلول

أعتقد أنك تسلي استخدام قاعدة بيانات المصطلح هنا. لا يوجد سبب لا يمكنك تخزين بيانات المستخدمين والمشاركات والتعليقات في قاعدة بيانات CouchDB واحدة. يمكن لآرائز Couchdb تفصيل مستندات المستخدم من مستندات المشاركات، من وثائق التعليقات.

مثال خريطة الخريطة لمستندات المستخدم في قاعدة بيانات COUCHDB:

function(doc) {
  if (doc.type = 'user') { // only return user documents
     emit([doc.domain, doc.id], doc); // the returned docs will be sorted by domain
  }
}

يرى عرض API للحصول على طرق لتقييد نتائج وجهات النظر حسب المجال باستخدام StartKey و Endeckey مع عرض ترتيب.

نصائح أخرى

أعتقد أن أفضل حل هو أن يكون لديك قاعدة بيانات واحدة لكل مجال، كل بيانات تخزين البيانات الخاصة بالمجال.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top