سؤال

أنا متحمس بالفعل بشأن قواعد بيانات المستندات وخاصة فيما يتعلق ببساطة CouchDB.لكني أجد صعوبة في فهم ما إذا كانت قواعد البيانات هذه خيارًا قابلاً للتطبيق للأنظمة متعددة المستخدمين.حيث أن تلك الأنظمة تتطلب نوعًا من العلاقات بين السجلات التي لا توفرها قواعد بيانات المستندات.

هل هي الأداة الخاطئة تمامًا لمثل هذه الحالات؟أم أن بعض العلامات وطرق العرض المؤقتة هي الطريقة لتحقيق ذلك؟او اخرى...

تحديث:
أنا أفهم الإجابات حتى الآن.ولكن اسمحوا لي أن أعيد صياغة السؤال قليلا.لنفترض أن لدي كمية كبيرة من البيانات شبه المنظمة والتي عادةً ما تكون مناسبة لـ CouchDB.يمكنني وضع علامة عليها مثل "type=post" و"year=2008".سؤالي هو إلى أي مدى يمكنني الذهاب مع هذا النوع من العلامات؟لنفترض أنه يمكنني إنشاء حقل مصفوفة يحتوي على 10.000 اسم؟أم أن هناك طريقة أفضل للقيام بذلك؟إنها مسألة فهم كيفية التفكير بهذا المعنى المستند إلى الوثيقة.

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

المحلول

وكان هناك نقاش حول القائمة البريدية منذ فترة طويلة يناسب هذا السؤال بشكل جيد إلى حد ما.كانت القاعدة الأساسية هي تخزين البيانات فقط في مستند من المحتمل أن يتغير مقابل ما هو موجود في المستند.ينمو.إذا كان من المرجح أن تنمو البيانات، فمن المرجح أنك تريد تخزين مستندات منفصلة.

لذلك، في حالة النظام متعدد المستخدمين، إحدى طرق تنفيذ الأذونات المستندة إلى قائمة التحكم بالوصول (ACL) يمكن أن تكون إنشاء "مستندات الأذونات" التي ستكون عبارة عن تعيين user_id إلى doc_id مع الإشارة إلى الإذن المناسب.

{
    _id: "permission_doc_1",
    type: "acl",
    user: "John",
    docid: "John's Account Info",
    read: true,
    write: true
}

وستكون وجهات نظرك شيئًا على غرار

function(doc)
{
    emit([doc.user, doc.docid], {"read": doc.read, "write": doc.write});
}

وباستخدام docid ومعرف المستخدم، سيكون التحقق من الأذونات كما يلي:

http://localhost:5984/db/_view/permissions/all?key=["John", "John's Account Info"]

من الواضح أن هذا يتطلب وجود وسيط بين العميل والأريكة للتأكد من تنفيذ الأذونات.

نصائح أخرى

أنظمة متعددة المستخدمين لا يتطلب قواعد البيانات العلائقية، على الرغم من أن أنظمة RDBMS هي تقنية أساسية لتخزين/استرجاع البيانات لعدد كبير من التطبيقات (خاصة CRUD).

إذا كنت ترغب في القراءة عن حلول قواعد البيانات الموزعة والموجهة نحو المستندات/الكائنات في الماضي، فابحث عن "Lotus Notes/Domino" (وهي تقنية/منتج ناضج في هذا المجال وتمثل معرفة أساسية جيدة بكيفية تصميم التطبيقات في المستند النموذج القائم على.كلاسيكيًا، إنه جيد حقًا في تطبيقات نوع سير العمل).

على CouchDB على وجه التحديد، تحقق من:

http://wiki.Apache.org/couchdb/ (لا ينبغي أن يكون هذا مفاجأة)

http://seanoc.wordpress.com/2007/10/12/more-on-couchdb/ (نظرة عامة على وصف القراءة السهلة)

http://twit.tv/floss36 (مقابلة بودكاست حول CouchDB)

ماذا يقولmicahwittman.مجرد إضافة سريعة:لا ينبغي أبدًا استخدام طرق العرض المؤقتة في نظام الإنتاج، فهي مخصصة للتطوير فقط.يمكن لطرق العرض الدائمة أن تفعل كل ما يمكن أن تفعله طرق العرض المؤقتة وتكون ذات أحجام أسرع.

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