سؤال

والسؤال:

وإذا أنا أكتب طلبي للوصول مباشرة إلى مستودع بيانات صورة أو كتابة قطعة الوسيطة للتعامل مع طلبات ثيقة.

والخلفية:

ولدي تصوير الوثائق الجمركية وتطبيق سير العمل الذي يخزن حاليا نحو 15 مليون وثيقة / صور وثيقة (90٪ + صفحة واحدة، مجموعة 4 المشاجرات، وPDF الراحة، وورد وإكسل وثائق). مستودع صورة هو تطبيق طرف التجاري، 3RD التي هي مكلفة جدا وبصراحة لديها الكثير من النفقات العامة. أنا فقط بحاجة إلى نظام لتخزين واسترجاع الصور وثيقة.

وأنا تفكر في الانتقال التصوير مباشرة إلى قاعدة بيانات SQL خادم عام 2005. معلومات الفهرسة محدودة جدا - أساسا 2 الحقول المؤشر. انها نظام إدارة بوليصة التأمين على الحياة حتى الصور مؤشر I مع عدد سياسة ونظام فريد من نوعه واسعة رقم معرف. هناك قيم مؤشر أخرى، لكنها مخزنة وحافظت على حدة من بيانات الصورة. تلك القيم مؤشر تعطيني القدرة على النظر، حتى قيمة id فريدة للفرد استرجاع الصور.

وخادم قاعدة البيانات هو مزدوجة رباعية النوافذ الأساسية 2003 مربع مع محركات الأقراص SAN استضافة الملفات DB. الحالي حجم الصورة مستودع حوالي 650GB. أنا لم تفعل أي اختبار لمعرفة كيفية كبيرة ستكون قاعدة البيانات المحولة. أنا لا أطلب حقا عن تصميم قاعدة البيانات - أعمل مع دباس لدينا في هذا الجانب. إذا كان هذا يغير، سأعود: -)

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

والاهتمامات الأساسية بلادي هي scalabity والفهرسه - بثقل كبير نحو الأداء. لدي حوالي 100 مستخدم، وسيكون معدل النمو الاستخدام المحتمل أن يكون بطيئا على مدى السنوات القليلة المقبلة. معظم المستخدمين تتم قراءة في المقام الأول المستخدمين - أنها لا تضيف الصور إلى النظام في كثير من الأحيان. لدينا قسم الذي يعالج مسح وإضافة خلاف ذلك الصور إلى مستودع. كما أن لدينا عدد قليل من التطبيقات الأخرى التي تتلقى وثائق (عن طريق بروتوكول نقل الملفات)، وأنها إدراجها في مستودع تلقائيا ورودها، إما إرادة معلومات الفهرس كاملة أو "دفعات" أن يستعرض المستخدم والفهارس.

ومعظم (90٪ +) من وثائق / صور صغيرة جدا، <100K، وربما <50K، لذلك أعتقد أن تخزين الصور في ملف قاعدة البيانات ستكون الأكثر كفاءة بدلا من الحصول على SQL 2008 واستخدام FILESTREAM.

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

المحلول

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

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

نصائح أخرى

وهذا واضح ومباشر. إرسال الطلب إلى واجهة، تستخدم نوعا من الآلية مصنع لتوريد تلك الواجهة، وتنفيذ تلك الواجهة ولكن تريد.

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

والتفكير قبل قليلا على تصميم واجهة الخاص بك لكنه لا يفعل العظام غبي "انها بسيطة، وأنها تعمل هنا، وأنها تعمل الآن" تطبيقات توفر توازن جيد للمستقبل التدقيق النظام بينما ليس بالضرورة على الهندسة ذلك.

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

وبقدر ما التدرجية، واختباره. ثم أنتم لا تعلمون إلا إذا كنت قد تحتاج إلى توسيع نطاق، ولكن ربما عندما كذلك. "وتعمل كبرى لمن 100 مستخدم، إشكالية 200، إذا ضربنا 150 نحن قد ترغب في النظر في اتخاذ نظرة أخرى على النهاية الخلفية، ولكن من الجيد في الوقت الراهن."

وهذا هو الاجتهاد والتصميم تكتيك مسؤولة، IMHO.

وأنا أتفق مع gabriel1836. ومع ذلك، فإن ميزة إضافية يكون التي يمكن أن فترة تشغيل النظام الهجين لفترة وبما انك لن تحويل 14 ملايين الوثائق من نظام الملكية إليك نابعة النظام بين عشية وضحاها.

وبالإضافة إلى ذلك، أود أن أشجع بقوة لك لتخزين الوثائق خارج قاعدة بيانات. تخزينها على نظام الملفات (المحلية، SAN، NAS لا يهم) ومؤشرات مخزن للوثائق في قاعدة البيانات.

وأحب أن أعرف ما هو نظام إدارة الوثائق الذي تستخدمه الآن.

وأيضا، لا نقلل من جهد استبدال القبض على (المسح الضوئي والمستوردة) التي يوفرها نظام الملكية.

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