بما في ذلك المستندات في تنبعث منها مقارنة بما يلي_docs = صحيح في couchdb

StackOverflow https://stackoverflow.com/questions/1475307

  •  16-09-2019
  •  | 
  •  

سؤال

ركضت عبر ذكر في مكان ما الذي يفعل emit(key, doc) سيزيد من مقدار الوقت الذي يستغرقه الفهرس للبناء (أو شيء لهذا يحدث).

هل هناك أي ميزة لذلك، وهل هناك أي سبب لا تفعله دائما emit(key, null) وثم include_docs = true?

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

المحلول

نعم، سيزيد حجم الفهرس الخاص بك، لأن CouchDB ينسخ المستند بأكمله بشكل فعال في تلك الحالات. للحالات التي يمكنك بها، استخدم include_docs=true.

ومع ذلك، هناك شرط سباق ليكون على دراية عند استخدام هذا المذكورة في الويكي. من الممكن، خلال الزمن بين قراءة بيانات العرض ورسوم المستند، تم تغيير المستند المذكور (أو تم حذفه، في هذه الحالة _deleted سوف يكون true). تم توثيق ذلك هنا ضمن "خيارات الاستعلام".

نصائح أخرى

هذا هو مفاضلة الوقت / الفضاء الكلاسيكية.

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

الاعتماد بدلا من ذلك include_docs=true سوف تقليل حجم مؤشر القرص الخاص بك، صحيح. ومع ذلك، في الاستعلام، يجب على CouchDB إجراء مستند قراءة لكل صف عاد. ينطوي ذلك على بحث مستند عشوائي بشكل أساسي من ملف البيانات الرئيسي، مما يعني أن تكلفة ووقت البيانات العائدين يزيد بشكل كبير.

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

لقد فعلت غير علمي تماما اختبار على هذا للحصول على شعور لما الفرق. لقد وجدت زيادة في 8X في وقت الاستجابة وزيادة 50٪ في وحدة المعالجة المركزية عند استخدامها include_docs=true لقراءة 100،000 وثيقة من وجهة نظر عند مقارنتها بعرض حيث تم انبعاث المستندات مباشرة في الفهرس نفسه.

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