স্টোরেজ ফর্ম্যাটগুলির মধ্যে কীভাবে সিদ্ধান্ত নেবেন এবং এর মধ্যে কয়েকটি উদাহরণস্বরূপ কী কী?


10

আমাদের কাছে প্রোগ্রামের ডেটা সংরক্ষণের বিভিন্ন উপায় রয়েছে (গেমসে ফাইল সংরক্ষণ করুন, কর্মচারী ডাটাবেসগুলি, প্রোগ্রাম কনফিগারেশন ইত্যাদি):

  • সাধারণ পাঠ্য (চিন্তা করুন .iniএবং .conf)
  • এক্সএমএল
  • ডাটাবেসগুলি (মাইএসকিউএল, এসকিউএলাইট ...)
  • .zip এবং অনুরূপ বেশ কয়েকটি ফাইল (বিভিন্ন ফর্ম্যাট সহ) রয়েছে
  • বাইনারি ফাইল ( .docউদাহরণস্বরূপ সিরিয়ালাইজেশন সরঞ্জাম দ্বারা নির্মিত)

উপরে তালিকাভুক্ত ফর্ম্যাটগুলির জন্য বিভিন্ন ব্যবহারের ক্ষেত্রে কী কী রয়েছে এবং অসুবিধাগুলির বিপরীতে তাদের সুবিধাগুলি কী কী (ভেবে দেখুন গতি, নমনীয়তা, ফাইলের আকার, সহজেই ব্যবহার করুন ...)? বিভিন্ন কাজের জন্য তাদের মধ্যে কীভাবে সিদ্ধান্ত নেবেন?

জিপিং ফর্ম্যাট সম্পর্কে: এটি কেবলমাত্র অন্যান্য ফাইলগুলি ধারণের জন্য ব্যবহৃত হয়। এটি পাশাপাশি অন্য সংক্ষেপণ বিন্যাস হতে পারে। এটি চিত্র ফাইল, সাউন্ড ফাইল এবং পাঠ্য ফাইল সহ বেশ কয়েকটি ফাইলের কাঠামোর জন্য অনুমতি দেয় allows উদাহরণস্বরূপ, বলুন যে আপনার কাছে বার্তাগুলির জন্য স্টোরেজ ফর্ম্যাট রয়েছে, এতে ফাইল থাকতে পারে। একটি জিপ করা ফাইলের মধ্যে আপনার নীচের ফাইলগুলি থাকতে পারে:

message.txt (containing the message)
attachments (folder containing attachments)
  audio.wav
  picture.jpg

রাইটিং বাইনারি, গুগল প্রোটোকল বাফার বিবেচনা করুন। অলস deserialization ক্ষমতা দুর্দান্ত, এবং আপনার সর্বদা এটির এক্সট্রাক্ট করার এবং এটিকে ফর্ম্যাট করা পাঠ্য হিসাবে পুনঃজীবিত করার সম্ভাবনা থাকে (বেশ কয়েকটি ভাষায় সি ++ / জাভা / পাইথন)।
ম্যাথিউ এম।

উত্তর:


6

আমি নিম্নলিখিত হিসাবে ব্যবহার:

সাধারণ পাঠ্য

কনফিগারেশনের জন্য - সাধারণত YAML বা .ini ব্যবহার করে। কোনও পাঠ্য ফাইলের কাঙ্ক্ষিত ফলাফল (উদাহরণস্বরূপ পাঠ্যে মুদ্রণ করুন, পাঠ্যে সংরক্ষণ করুন) ব্যতীত বেশিরভাগ ব্যবহারের জন্য আমার দ্বারা অবজ্ঞা করা হয়েছে except

এক্সএমএল

ডেটা কনফিগারেশন এবং পরিবহনের জন্য; যেমন এক্সপোর্ট, এক্সএসএলটি এর মাধ্যমে ফর্ম্যাট ইত্যাদি পোর্টেবল ফাইল ফর্ম্যাট হিসাবে ভাল (যেমন এসভিজি)। দুর্দান্ত ম্যানিপুলেশন সরঞ্জাম এবং ফিল্টার।

ডেটাবেস

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

একক ফাইল সংরক্ষণাগার (যেমন। জিপ)

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

বাইনারি

কেবলমাত্র যেখানে ডেটাবেস অ্যাপ্লিকেশন ডেটা সংরক্ষণের জন্য উপলব্ধ নয়। সিরিয়ালাইজেশন (সি ++) দিয়ে সবচেয়ে সহজ। একটি উচ্চ সুরযুক্ত বাইনারি ফর্ম্যাট গতি এবং আকার উভয়ের জন্য অন্য সমস্ত কিছুকে ছাড়িয়ে যাবে।


4

সিলভার বুলেট নেই। আমার অভিজ্ঞতা:

স্টোরেজ মিডিয়াম হিসাবে সরল পাঠ্য একটি স্বয়ংক্রিয় নং। আমি যে কয়েকটি ক্ষেত্রে এটি বিবেচনা করব তা কোনও .config ফাইল দ্বারা আরও ভালভাবে আচ্ছাদিত হবে যেখানে আমার স্কিমা এবং টাইপ সুরক্ষা রয়েছে। দেখে মনে হচ্ছে প্রকার সুরক্ষা এবং ডেটা নিষ্কাশন প্রায় প্রয়োজন। সাধারণ পাঠ্য এই প্রক্রিয়াটিকে দুঃস্বপ্নে পরিণত করে।

এক্সএমএল : সুরক্ষা, ডেটা বৈধকরণ, কম ভলিউম টাইপ করুন এবং কিছু ক্ষেত্রে আমি এটি ব্যবহার করি কারণ .NET এর অবজেক্টগুলির এক্সএমএল সিরিয়ালাইজের সমর্থনে শক্তিশালী অন্তর্নির্মিত।

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

.zip একটি সংকোচনের বিন্যাস, নিশ্চিত না যে এটি কীভাবে স্থায়িত্বের সাথে খাপ খায় ..?

বাইনারি : আমি কেবল তখন বাইনারি ব্যবহার করি যখন আমার অস্থায়ী স্মৃতিপ্রবাহ তৈরি করতে হবে। বাইনারি কোনও ডিবি বা এক্সএমএল যেখানে আমার ডেটা স্কিমার সাথে সজ্জিত করা হয়েছে তার তুলনায় ক্যোয়ারী-যোগ্যতার পথে মান যোগ করে না।

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


3

আমি সেগুলি নিম্নলিখিত হিসাবে ব্যবহার করি:

সাধারণ পাঠ্য

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

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

এক্সএমএল

আমি এখানে @ ইঙ্গোর সাথে একমত - প্লেইন টেক্সটের বিপরীতে এক্সএমএল স্ক্রিপ্টিংয়ের মাধ্যমে প্রক্রিয়া করা আরও শক্ত, এবং হাতের ইমো দ্বারা সম্পাদনা করা একটি দুঃস্বপ্ন।

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

সম্পর্কিত তথ্য ভাণ্ডার

এসকিউএল কমান্ড এবং এমনকি জিইউআই এর মাধ্যমে - আপনি যখন প্রচুর ডেটা (এটি প্লেইন পাঠ্য এবং এক্সএমএলকে জটিল করে তুলবেন) এর জন্য একটি দুর্দান্ত পছন্দ যা আপনি এখনও তৃতীয় পক্ষগুলিকে ম্যানুয়ালি সম্পাদনা করার অনুমতি দিতে চাইতে পারেন।

আর একটি সুবিধা হ'ল আপনার কোড যা সামগ্রীগুলি পরিচালনা করে তা খুব পঠনযোগ্য। @ রিচার্ড-হ্যারিসন তার দুর্দান্ত উত্তরে অন্যান্য সুবিধার একটি ভাল তালিকা দিয়েছেন।

NoSQL ডাটাবেস

আরডিবিএমএসের একটি সুবিধা হ'ল বিতরণের মাধ্যমে স্কেলিবিলিটি যা সম্ভবত আপনার প্রশ্নের সাথে খুব প্রাসঙ্গিক নয়। সম্ভবত যে সুবিধাগুলি আরও বেশি প্রাসঙ্গিক সেগুলি হ'ল মূল-মূল্যের স্টোরের সরলতা এবং স্কিমহীনতার নমনীয়তা (এটি কি কোনও শব্দ?)। যখন আপনি নিজেকে আপেক্ষিক দৃষ্টান্তটি ভঙ্গ করতে দেখেন: কেবল ডাটাবেসে ব্লবগুলি সঞ্চয় করে, কী দ্বারা সেগুলি অ্যাক্সেস করতে এবং কোডের মাধ্যমে সেগুলি প্রক্রিয়াকরণ করার পরে এই বিকল্পটি বিবেচনা করুন। কিছু পছন্দ (উদাহরণস্বরূপ কাউচডিবি) খুব পোর্টেবল, একটি ছোট পদচিহ্ন রয়েছে এবং স্কেল করতে পারে যাতে তারা মাইএসকিউএল এবং এসকিউএলাইটের জন্য একটি ভাল অ-সম্পর্কযুক্ত বিকল্প প্রস্তাব করে।

বাইনারি

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

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

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

সংক্ষিপ্ত সংরক্ষণাগার

উপরোক্তগুলির পক্ষে সত্যিই বিকল্প নয়, বরং একটি অতিরিক্ত পরিমাপ।

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

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


2

আমি সেগুলি নিম্নলিখিত হিসাবে ব্যবহার করব:

  • সাধারণ পাঠ্য : অ্যাপ্লিকেশনটির মধ্যে কেবলমাত্র কাঠামোগত ডেটার পরিমাণ রয়েছে (প্রাক্তনের জন্য নামের মান জোড়া)। একাধিক ব্যবহারকারী একযোগে ডেটা সংশোধন করেন না।
  • এক্সএমএল : কাঠামোগত ডেটার ছোট আকার যা একই সাথে বা ঘন ঘন সংশোধিত হয় না।
  • ডাটাবেস : বৃহত কাঠামোগত ডেটা বা একযোগে অ্যাক্সেস প্রয়োজন। অনুসন্ধান এবং অনুসন্ধানের প্রয়োজন অ্যাপ্লিকেশনটিতে আবশ্যক।
  • বাইনারি ডেটা: আমি কেবল স্ট্রিমিং অবজেক্টের জন্য এটি ব্যবহার করব।
  • জিপিং হ'ল সংক্ষেপণ যা সার্ভারে ডেটাবেস বাদে উপরের যে কোনও একটির জন্য অন্য প্রক্রিয়া হিসাবে যুক্ত করা যেতে পারে।

1

আমি শুনেছি এক্সএমএল পাঠ্যের সবচেয়ে খারাপ বৈশিষ্ট্যগুলি (প্রক্রিয়া করাতে অসুবিধে / ধীর) এবং বাইনারি (অপঠনযোগ্য) একত্রিত করে।


সম্পূর্ণ উত্তর নয়
এন্টো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.