موازاة استرجاع المحتوى من قاعدة البيانات والبحث والتخزين كـ HTML

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

سؤال

لديّ جدول قاعدة بيانات يحتوي على محتوى HTML مخزّن كنقطة تسلسلية ثنائية. أحتاج إلى استرداد المحتوى واحدًا تلو الآخر ، وابحث عن كلمات رئيسية معينة في المحتوى (والإبلاغ عن المباريات الموجودة) وأيضًا حفظ المحتوى على القرص كملفات HTML. هل يمكنني تحفيز هذا باستخدام الموازي. هل هذه فكرة جيدة أم أن هناك فكرة أفضل.

شكرا مقدما على المساعدة ، آشيش

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

المحلول

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

أعتقد أنه سيتعين عليك فقط تجربته في كلا الاتجاهين وقياس الفرق لمعرفة ما إذا كان يناسبك حقًا. من الواضح ، أنه لن يحدث فرقًا على جهاز أساسي واحد ، لكن الجهاز الأساسي 8 فقط معالجة ملفين قد لا يرون أيضًا أي فوائد مهمة ، ما لم يستغرق البحث في الكلمات الرئيسية وقتًا طويلاً لكل ملف ، ثم يكون القيام بهما بالتوازي مفيدًا مرة أخرى. :) أعتقد أن أفضل رهان لك هو تجربة مسامير مختلفة على التقنيات المختلفة ومعرفة ما هو أفضل لك وموقفك.

نصائح أخرى

سيكون أداء I/O لقاعدة البيانات والقرص أبطأ بكثير من سرعة المعالج الخاصة بك ، بحيث لا ترى أي فائدة ملحوظة من التوازي.

سأقوم بنهج المستهلك المنتج (http://en.wikipedia.org/wiki/producer-consumer_problem):

يستفسر أحد مؤشرات الترابط من قاعدة البيانات الخاصة بك (إن أمكن من خلال نوع من المؤشر حتى تتمكن من القيام بذلك واحدًا تلو الآخر) ، ويضع كل صف في المخزن المؤقت.

موضوع آخر (أو ربما أكثر من واحد إذا كان البحث يتطلب الكثير من المعالجة) هو الحصول على صف واحد من قاعدة البيانات (مع HTML Blob) ومعالجة البحث.

في هذه الحالة ، يمكنك في وقت واحد القيام بالاستعلام والمعالجة.

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

من أجل التحقق مما إذا كان الأمر كذلك ، يمكنك القيام بالمنتج/المستهلك مع أكثر من منتج واحد (أي أكثر من مؤشر ترابط يسعى إلى قاعدة البيانات).

اتمني ان يكون مفيدا.

إدواردو

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