هل يجب علي إعادة إنشاء ملف PDF ديناميكيًا، بدلاً من تخزينه في قاعدة البيانات أو نظام الملفات؟

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

سؤال

أحتاج إلى أن يتمكن العملاء من تنزيل ملفات PDF الخاصة بالرسائل التي تم إرسالها إليهم.

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

ما الذي اريد ان اعرفه:

  • هل سيكون البديل المعقول هو مجرد تخزين تفاصيل الرسالة في قاعدة البيانات، وإعادة إنشاء ملف PDF "سريعًا" عند الطلب؟
  • هل هذا النهج أفضل أم أقل شأنا من جلب ملف PDF من نظام الملفات؟
هل كانت مفيدة؟

المحلول

سأقوم بتخزينه لسببين

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

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

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

نصائح أخرى

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

لا يهم أي نهج هو الأفضل، في بعض الأحيان يكون من الأفضل اتباع النهج الأكثر أمانًا.

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

أنا أميل إلى القول "هذا يعتمد".

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

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

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

هناك بعض الأشياء التي يجب مراعاتها، وهي إنشاء ملف PDF استنادًا إلى البيانات التي كانت موجودة في وقت ما.على سبيل المثال.فاتورة بناءً على بيانات الشهر السابق؟

إذا كان الأمر كذلك، هل ستستخدم نفس القالب كل شهر لإنشاء هذه الرسالة؟ماذا يحدث إذا/عندما يتغير تنسيق الرسالة، إذا قمت بإعادة الإنشاء بسرعة، فلن يعد هو نفسه الذي تم إرساله إليهم.هل تخزين دفق PDF في قاعدة البيانات أمر ممكن؟

أعتقد أن ما أقصده هو هل تحتاج إلى تمثيل دقيق لما تم إرساله إلى المستخدم، أم أن ذلك مرن؟

تبدو مسألة إنشاء ملفات pdf ديناميكيًا أو تخزينها بشكل ثابت وكأنها مسألة قانونية أكثر من كونها مسألة برمجة.

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

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

لا يمكنك الاعتماد على البيانات المتاحة لإعادة إنتاج نفس المستند في وقت مختلف للأسباب التالية:

  1. يمكن تغيير البيانات (نعم!لنفترض أن الرسالة تمت تسويتها لتوقيعها من قبل رئيس القسم، وتم تغيير الموظفين؟)
  2. سيتغير تنسيق تقريرك (الرأس والتذييل والشعار وما إلى ذلك)
  3. يتم الاحتفاظ بالمستند الذي قمت بإنشائه بواسطة شخص آخر سيستفيد من البيانات المتوفرة في المستند.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top