ما هي أفضل الممارسات لتخزين كميات ضخمة من النص (في DB أو كملف؟)، وماذا عن ضغط عليه؟

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

سؤال

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

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

وأود أن الحفاظ على البيانات في قاعدة بيانات لسهولة الوصول وقابلية، ولكن بعض المواضيع التي رأيتها هنا بخصوص الصور واقترح استخدام تخزين الملفات. ما رأيك؟

وشكرا لكم، سيث

وتحرير للتوضيح: أنا لا تتطلب أي نوع من البحث من النص، وهذا هو السبب وأود أن تميل ضغط عليه لانقاذ على الفضاء

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

المحلول

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

وإلا أنا في عداد المفقودين شيء أود أن استخدام CLOB بدلا من BLOB، إذا كان النص فقط.

نصائح أخرى

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

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

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

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

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

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