ফাইল হিসাবে বা কোনও ওয়েব অ্যাপ্লিকেশনের জন্য ডাটাবেসে ছবি সঞ্চয় করবেন?


124

আমার প্রশ্নটি মোটামুটি জেনারিক এবং আমি জানি এটির কোনও 100% উত্তর নাও থাকতে পারে। আমি একটি এএসপি। নেট ওয়েব সলিউশন তৈরি করছি যাতে প্রচুর ছবি এবং আশা করা যায় যে মোটামুটি ট্র্যাফিক থাকবে। আমি সত্যিই পারফরম্যান্স অর্জন করতে চাই না।

আমার কি ডেটাবেসগুলিতে বা ফাইল সিস্টেমে ছবিগুলি সংরক্ষণ করা উচিত? এবং উত্তর নির্বিশেষে কেন আমি একটি নির্দিষ্ট উপায় বেছে নেওয়ার বিষয়ে আরও আগ্রহী।

অনেক ধন্যবাদ, স্টেফান

সদৃশ : ডিবিতে চিত্রগুলি সংরক্ষণ করা - হ্যাঁ না না? , কীভাবে আপনার ফাইল সিস্টেমে চিত্রগুলি সংরক্ষণ করবেন , অল্প সংখ্যক চিত্র সংরক্ষণ করা: ব্লব বা এফএস? এবং সম্ভবত কিছু অন্য।


মন্তব্য: অনেক ভাল উত্তরের জন্য ধন্যবাদ। আমি যদি একটি 100% ডাটাবেস চালিত সমাধানের ধারণাটি পছন্দ করি তবে আমি ফাইল ভিত্তিক সমাধানের জন্য যাব। দেখে মনে হচ্ছে যে আজ আমি চাই ডাটাবেস ইত্যাদির সাথে করার জন্য ভাল সমাধান আছে তবে আমার এটি না করার কয়েকটি কারণ রয়েছে।

  • আমি একটি হোস্টেড সমাধানে থাকব, আমার কাছে প্রচুর পরিমাণে স্টোরেজ (10 জিবি) আছে তবে ডাটাবেসের জন্য কেবল 300 এমবি। ডিবিতে অতিরিক্ত স্টোরেজ করার জন্য এটির অনেক ব্যয় হবে।

  • আমি কোনও ডিবি বিশেষজ্ঞ নই এবং পাশাপাশি ডিবি'র সেটিংস নিয়ন্ত্রণ করতেও পারি না। ডিবি ভিত্তিক সমাধানটির মতো দেখতে কাস্টম কনফিগারেশন লাগতে পারে।

আমরা যদি আমাদের নিজস্ব সার্ভারে সাইট চালাতে চলে যাই তবে আমি একটি ডিবি ভিত্তিক সমাধান বিবেচনা করতে পারি। ধন্যবাদ, স্টেফান


1
আপনি যে ডাটাবেসটি ব্যবহার করছেন তা দয়া করে নির্দিষ্ট করুন।
গেরি শেনেক

1
আমি পরবর্তী সংস্করণের এমএসএসকিউএল ব্যবহার করার ইচ্ছা করি না।
স্টেফান

1
@ স্টেফান, ফাইল সিস্টেমটি সমস্ত উদ্দেশ্য এবং উদ্দেশ্যে, ফাইল স্টোরেজের জন্য অনুকূলিত একটি বিশেষ ডাটাবেস।
লুক এইচ

উত্তর:


175

ফাইল সিস্টেমে ছবিগুলি এবং ডাটাবেসে চিত্রের অবস্থানগুলি সংরক্ষণ করুন।

কেন? কারণ...

  1. আপনি ছবিগুলি স্থির ফাইল হিসাবে পরিবেশন করতে সক্ষম হবেন।
  2. ছবিগুলি আনার জন্য কোনও ডাটাবেস অ্যাক্সেস বা অ্যাপ্লিকেশন কোডের প্রয়োজন হবে না।
  3. চিত্রগুলি কর্মক্ষমতা উন্নত করতে অন্য একটি সার্ভার থেকে পরিবেশন করা যেতে পারে।
  4. এটি ডাটাবেস বিঘ্ন কমাবে।
  5. ডাটাবেসটি শেষ পর্যন্ত ফাইল সিস্টেমে এর ডেটা সংরক্ষণ করে।
  6. ফাইল সিস্টেমে সংরক্ষণ করা হলে চিত্রগুলি সহজেই ক্যাশে করা যায়।

1
এছাড়াও, এসকিউএল সার্ভারে আপনি যখন চিত্রটি একটি "চিত্র" ক্ষেত্র হিসাবে সংরক্ষণ করেন, এসকিউএল এটি কার্যকরভাবে করে যা - কোথাও ডিস্কের ফাইলটিতে একটি পয়েন্টার সঞ্চয় করে। এটি 8KB পৃষ্ঠার সীমাতে প্রায় হয়।
ঝাফ - বেন ডুগুইড

9
এটি আসলে এসকিউএল সার্ভার ২০০৮-এ সম্বোধন করা হয়েছে। সেখানে একটি নতুন ধরণের ফাইল চালু হয়েছিল যার ফলে ফাইল সিস্টেমের কার্যকারিতা এবং একই সাথে রক্ষণাবেক্ষণের সুযোগ দেয় FILESTREAM প্রযুক্তি কাঠামোগত সামঞ্জস্যহীন কাঠামোগত ডেটা এবং সম্পর্কিত কাঠামোগত ডেটার মধ্যে "
ক্রিস্টোফ

হ্যাঁ তুমি ঠিকই খারাপ আমার প্রশ্ন ফোটা আকার কি? বা এটি কত স্মৃতি সঞ্চয় করতে পারে?
আমির

11

আমার সম্প্রতি বিকাশিত প্রকল্পগুলিতে, আমি ডেটাবেস টেবিলগুলিতে চিত্রগুলি (এবং সমস্ত ধরণের বাইনারি ডকুমেন্ট) চিত্র কলাম হিসাবে সংরক্ষণ করেছি।

ডাটাবেসের মধ্যে ফাইল সঞ্চার করার সুবিধাটি হ'ল স্পষ্টভাবে যে হার্ডডিস্কে অযৌক্তিক ফাইলগুলি দিয়ে আপনি শেষ করবেন না যদি কোনও রেকর্ড মুছে ফেলা হয়, যেহেতু ডাটাবেস (= মেটা ডেটা) এবং হার্ডডিস্ক (= ফাইল স্টোরেজ) মধ্যে অন্তর্নির্মিত নয় এবং ম্যানুয়ালি প্রোগ্রাম করা আছে।

আজকের প্রযুক্তি ব্যবহার করে, আমি আপনাকে এসকিউএল সার্ভার ২০০৮ ফাইলস্ট্রেম কলামগুলিতে চিত্রগুলি সংরক্ষণ করার পরামর্শ দিচ্ছি (কমপক্ষে আমি আমার পরবর্তী প্রকল্পের সাথে যা করতে যাচ্ছি), যেহেতু তারা ডাটাবেসে ডেটা সংরক্ষণ এবং পৃথক ফাইলগুলিতে বড় বাইনারি থাকার সুবিধা একত্রিত করে (এ কমপক্ষে বিজ্ঞাপন অনুসারে;))


আপনি কি এখনও ফাইল স্ট্রিম কার্যকারিতা পরীক্ষা করেছেন?
স্টেফান

1
আসলে, ডিবি রেকর্ড মুছে ফেলার সময় ফাইল সিস্টেম থেকেও মুছতে কোড দেওয়া যায় can সুতরাং আমি ডিবি
কৈলাশ 19


6

ফাইল হিসাবে ফাইল সংরক্ষণ করা ভাল। বিভিন্ন ডাটাবেসগুলি ব্লব ডেটা আলাদাভাবে পরিচালনা করে, তাই আপনার পিছনের প্রান্তটি যদি স্থানান্তর করতে হয় তবে আপনি সমস্যায় পড়তে পারেন।

সার্ভারে ইতিমধ্যে উপস্থিত একটি ফাইলের জন্য <img src = ইমপ্যাজগুলি পরিবেশন করার সময় ডাটাবেস ক্ষেত্র থেকে একটি অস্থায়ী ফাইল তৈরি করা এবং <img ট্যাগটিকে ইঙ্গিত করার চেয়ে দ্রুত হতে পারে।

আপনার উত্তরটি গুগল করা এবং http://datedias.aspfaq.com/database/should-i-store-images-in-the-datedia-or-the-files systemm.html- এ মন্তব্যগুলি পড়ার থেকে আমি এই উত্তরটি পেয়েছি


1
উল্লেখ করা পোস্টটি কিছুটা পুরানো বলে মনে হচ্ছে।
ডিভিও

6

আমি সাধারণত ডাটাবেসে বাইনারি ফাইল রাখতে চাই কারণ:

  • ডেটা অখণ্ডতা: কোনও অযৌক্তিক ফাইল নেই, কোনও ফাইল সম্পর্কিত ছাড়া ডিবিতে কোনও পথ নেই
  • ডেটা ধারাবাহিকতা: একটি ডাটাবেস ডাম্প নিন এবং এগুলি সবই। না "ও আমি এই ডেটা ডিরেক্টরিটি টার্গজ করতে ভুলে গেছি।"

4

ডাটাবেসে চিত্রগুলি সংরক্ষণ করে একক চিত্র পরিবেশন করতে একটি ডিবি ওভারহেড যুক্ত করে এবং আপনি যদি সেই স্তরটিতে পৌঁছান তবে বিকল্প স্টোরেজ (এস 3, আকামি) -এ অফলোড করা শক্ত করে তোলে। ডাটাবেসে এগুলি সংরক্ষণ করে আপনার অ্যাপ্লিকেশনটিকে অন্য একটি সার্ভারে স্থানান্তরিত করা আরও সহজ করে তোলে কারণ এখন কেবলমাত্র ডিবি প্রয়োজন যা সরানো দরকার।

ডিস্কে চিত্রগুলি সংরক্ষণ করে বিকল্প স্টোরেজকে অফলোড করা সহজ করে তোলে, চিত্রগুলিকে স্থিতিশীল উপাদান তৈরি করে যাতে আপনার ওয়েব অ্যাপ্লিকেশনটিতে এইচটিটিপি শিরোনামগুলির সাথে গোলমাল করতে হবে না যাতে চিত্রগুলি ক্যাশেযোগ্য হয়। খারাপ দিকটি হ'ল আপনি যদি নিজের অ্যাপ্লিকেশনটিকে অন্য কোনও সার্ভারে নিয়ে যান তবে আপনাকে চিত্রগুলিও সরাতে হবে; এমন কিছু যা সহজেই ভুলে যায়।


3

ওয়েব ভিত্তিক অ্যাপ্লিকেশনগুলির জন্য, আপনি আপনার চিত্রগুলি সংরক্ষণের জন্য ফাইল সিস্টেম ব্যবহার না করে আরও ভাল পারফরম্যান্স পেতে চলেছেন। এটি করার ফলে আপনি সহজেই আপনার অ্যাপ্লিকেশনের মধ্যে একাধিক স্তরে চিত্রগুলির ক্যাচিং প্রয়োগ করতে পারবেন। একটি ডাটাবেসে চিত্রগুলি সংরক্ষণ করার কিছু সুবিধা রয়েছে তবে বেশিরভাগ সময় ক্লায়েন্ট ভিত্তিক অ্যাপ্লিকেশনগুলির সাথে এই সুবিধাগুলি আসে।


0

ইতিমধ্যে ইতিমধ্যে ভাল উত্তর আরও কিছু যোগ করতে। আপনি এখনও উভয় ওয়েব পর্যায় থেকে ক্যাশে সুবিধাগুলো পেতে পারেন হয়তো এবং ডাটাবেস স্তর আপনি ডাটাবেসের মধ্যে আপনি ইমেজ পালন রুট যান।

আমি মনে করি ডাটাবেসের জন্য আপনি কীভাবে চিত্রগুলির সাথে সম্পর্কিত টেক্সটুলাল ডেটা সম্পর্কিত এবং আপনি যদি কোনও নির্দিষ্ট ক্যোয়ারিতে ইমেজগুলিতে অ্যাক্সেস করতে পারেন যাতে ডাটাবেসটি ক্যোয়ারীটিকে ক্যাশে করতে পারে তবে এটি অর্জন করতে পারবেন (ঠিক তবুও তত্ত্বটি যদিও তাই আমাকে এই অংশে নির্দ্বিধায় নির্দ্বিধায়)

ওয়েব সাইডের সাথে, আমি অনুমান করব যেহেতু আপনার প্রশ্নটি এএসপিএন দিয়ে ট্যাগ করা হয়েছে আপনি চিত্রগুলি পরিবেশন করতে কোনও HTTP হ্যান্ডলার ব্যবহারের পথে যাবেন। তারপরে আপনার নিজের কাঠামোর সমস্ত সুবিধাগুলি রয়েছে এবং আপনি কেবলমাত্র আপনার চিত্রের কীটি এইচডিপি হ্যান্ডলারের কাছে দিয়েই আপনাকে ডোমেন লজিক ক্লিনার রাখতে পারেন।


-1

আপনার ফাইলগুলি সঞ্চয় করার জন্য একটি পৃথক নো এসকিএল ডাটাবেস কেন বেছে নেবেন না।

এটি আপনাকে আপনার সাথে ডেটা অখণ্ডতা, ডেটা অবিচ্ছিন্নতা হিসাবে নিয়েছে যেমন @ চিবার্ড উল্লেখ করেছে।

আপনি যখন rdbms এখনও ছোট রাখুন।


-1
  1. এখানে একটি ধাপে ধাপে উদাহরণঃ (সাধারণ পদ্ধতির, স্প্রিং বাস্তবায়ন হয় Eclipse) ফাইল সিস্টেম চিত্র সংরক্ষণ ও ডিবি তাদের মেটাডেটা অধিষ্ঠিত এর - http://www.devmanuals.com/tutorials/java/spring/spring3/mvc /Spring3MVCImageUpload.html
  2. এখানেও একটি উদাহরণ দেওয়া আছে - http://www.jorterdev.com/2573/spring-mvc-file-upload-example-tutorial-single-and- মাল্টিপল- ফাইলস
  3. এছাড়াও আপনি এই প্রকল্পের একটি কোডবেস তদন্ত করতে পারেন - https://github.com/jdmr/fileUploadএই নিয়ামক মনোযোগ দিন ।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.