تخزين ملف في قاعدة البيانات بدلا من ملفات النظام ؟

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

سؤال

عموما, ما مدى سوء الأداء ضرب تخزين ملف في قاعدة البيانات (على وجه التحديد mssql) بدلا من ملفات النظام ؟ أنا لا يمكن التوصل إلى سبب خارج تطبيق قابلية الذي ترغب في تخزين الملفات كما varbinaries في SQL Server.

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

المحلول

إلقاء نظرة على هذا الجواب:

تخزين الصور في قاعدة البيانات - نعم أو كلا ؟

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

هناك بعض المعاكس الأمثلة (مثل Microsoft Sharepoint) ، ولكن عادة تخزين الملفات في قاعدة البيانات ليست فكرة جيدة.

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

نصائح أخرى

إذا كان يمكنك الانتقال إلى SQL Server 2008, يمكنك الاستفادة من FILESTREAM الدعم الذي يتيح لك أفضل من كلا - يتم تخزين الملفات في نظام الملفات ، ولكن تكامل قاعدة البيانات هو أفضل بكثير من مجرد تخزين أسم دليل في varchar المجال.الاستعلام الخاص بك يمكن العودة القياسية .صافي تيار الملف ، مما يجعل التكامل أبسط كثيرا.

الشروع في العمل مع FILESTREAM التخزين

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

ما هو السؤال هنا ؟

الحديث DBMS SQL2008 مجموعة متنوعة من طرق التعامل مع النقط التي ليست مجرد الخلاف في الجدول.هناك إيجابيات وسلبيات ، بالطبع ، قد تحتاج إلى التفكير في الأمر أعمق قليلا.

هذا هو ورقة مثيرة للاهتمام الراحل (?) جيم الرمادي

إلى النقطة أو لا BLOB:كائن كبير التخزين في قاعدة البيانات أو الملفات

في تجربتي الخاصة ، فمن الأفضل دائما لتخزين الملفات على شكل ملفات.والسبب هو أن نظام الملفات هو الأمثل الملف التخزينية, في حين أن قاعدة البيانات ليست كذلك.طبعا هناك بعض الاستثناءات (مثلكثيرا بشرت الجيل المقبل MS الملفات المفترض أن يكون بنيت على أعلى من SQL server) ، ولكن بصفة عامة هذا هو القاعدة.

في حين الأداء ، أعتقد أن الحديث قاعدة البيانات التصاميم جعلت أقل بكثير من قضية الملفات الصغيرة.

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

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

أننا اتخذنا القرار إلى متجر varbinary على http://www.freshlogicstudios.com/Products/Folders/ في منتصف الطريق أتوقع مشكلات في الأداء.أستطيع أن أقول أننا كنا مفاجأة سارة في كيفية جيدا انها عملت بها.

أنا أتفق مع @ZombieSheep.أكثر شيء واحد فقط - عموما أنا لا أعتقد أن قواعد البيانات تحتاج في الواقع تكون محمولة لأن كنت أفتقد كل الميزات الخاصة بك DBMS بائع تقدم.أعتقد أن الهجرة إلى قاعدة بيانات أخرى سيكون آخر شيء واحد في الاعتبار.فقط $.02

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

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

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