الاعتبارات مكان تخزين المستندات في ملف server أو في DB ؟

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

  •  18-09-2019
  •  | 
  •  

سؤال

لدي تصميم اتخاذ قرار بشأن الوثائق التي تم تحميلها إلى موقع الويب الخاص بي:إما تخزينها على ملقم الملفات في مكان ما, أو أنا يمكن تخزين لهم ككائن في قاعدة البيانات الخاصة بي (MSSQL 2005).إذا كان هناك فرق في تصميم المقرر ، هذه الوثائق السرية ، و يجب أن يكون على درجة معينة من الحماية.

الاعتبارات فكرت هي:

  1. تخزينها على ملقم الملفات يجعل HUUUUUUUGE عدد الملفات ملقاة في دليل واحد ، وبالتالي أبطأ الوصول إلا إذا أنا يمكن أن تعمل معقول الدلالي تعريف بنية شجرة الدليل
  2. OTOH, أعتقد أن ملف خادم يمكن التعامل مع ضغط إلى حد ما أفضل من DB...أو أنا على خطأ ؟
  3. حدسي يقول لي أن DB الأمن هو أقوى من ملف الخادم, ولكن لست متأكدا إذا كان هذا صحيحا بالضرورة.
  4. لا أعرف كيف بعد تيرابايت من النقط في DB سوف تؤثر على الأداء.

أنني أقدر كثيرا بعض التوصيات هنا.وذلك بفضل!

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

المحلول

في SQL Server 2005 لديك سوى خيار استخدام VARBINARY(MAX) لتخزين الملفات داخل جدول قاعدة بيانات ، أو ثم الاحتفاظ بها في الخارج.

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

SQL Server 2008 يدخل FILESTERAM السمة على VARBINARY(MAX) أنواع, والذي يسمح لك أن تترك ملفات خارج جدول قاعدة البيانات, ولكن لا يزال في إطار المعاملات التحكم من قاعدة البيانات - على سبيل المثال ، لا يمكنك فقط حذف الملفات من القرص الملفات هي جزء لا يتجزأ من قاعدة البيانات وبالتالي الحصول على نسخها احتياطيا مع ذلك.عظيم إذا كنت في حاجة إليها, ولكن يمكن أن تجعل لبعض النسخ الاحتياطي ضخمة!:-)

SQL Server 2008 إطلاق قدمت بعض "أفضل الممارسات" عندما لتخزين الأشياء في قاعدة البيانات مباشرة ، وعند استخدام FILESTREAM.هذه هي:

  • إذا كانت الملفات عادة أقل من 256 كيلو بايت في حجم قاعدة البيانات الجدول هو الخيار الأفضل
  • إذا كانت الملفات عادة أكثر من 1 ميغا بايت في الحجم ، أو يمكن أن يكون أكثر من 2 غيغابايت في الحجم ، ثم FILESTREAM (أو في حالة:سهل القديمة الملفات) هو افضل خيار لكم
  • لا التوصية الملفات بين هذين هوامش

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

بحيث قد تعطيك فكرة من أين أبدأ!

نصائح أخرى

أقترح عليك بشدة أن تنظر في حل نظام الملفات. الأسباب هي:

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

إذا كنت قلقا من الكميات الكبيرة من الإدخالات في الدلائل الخاصة بك، يمكنك دائما إنشاء مخطط متفرع. علي سبيل المثال:

filename : hello.txt
filename md5: 2e54144ba487ae25d03a3caba233da71
final filesystem position: /path/2e/54/hello.txt

هناك الكثير من "ذلك يعتمد" وراء هذا الموضوع الشعبي. نظرا لأنك تقول الوثائق حساسة وسرية، من الكفة، سأذهب مع تخزينها في قاعدة البيانات. لدينا هنا بعض الأسباب:

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

يحتوي SQL Server 2008 أيضا على نوع بيانات FileStream، مما قد يساعد هنا، لكنني لست مألوفا بما يكفي معه لإعطاء توصية لموقفك.

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