Associative array
কম্পিউটার বিজ্ঞানে, একটি সহযোগী অ্যারে, মানচিত্র, প্রতীক টেবিল বা অভিধান হল একটি বিমূর্ত তথ্য প্রকার যা (কী, মান) জোড়ার সংগ্রহ সংরক্ষণ করে, যাতে প্রতিটি সম্ভাব্য কী সংগ্রহে সর্বাধিক একবার উপস্থিত হয়। গাণিতিক পরিভাষায়, একটি সহযোগী অ্যারে হল সসীম ডোমেন সহ একটি ফাংশন। এটি 'সন্ধান', 'অপসারণ' এবং 'সন্নিবেশ' ক্রিয়াকলাপগুলিকে সমর্থন করে। অভিধান সমস্যা হল দক্ষ তথ্য কাঠামো নকশা করার ক্লাসিক সমস্যা যা সহযোগী অ্যারে প্রয়োগ করে। অভিধান সমস্যার দুটি প্রধান সমাধান হল হ্যাশ টেবিল এবং সার্চ ট্রি। কখনও কখনও সরাসরি সম্বোধন করা অ্যারে, বাইনারি সার্চ ট্রি বা অন্যান্য আরও বিশেষ কাঠামো ব্যবহার করে সমস্যাটি সমাধান করা সম্ভব। অনেক প্রোগ্রামিং ভাষায় আদিম ডেটা প্রকার হিসাবে সহযোগী অ্যারে অন্তর্ভুক্ত থাকে, অন্যদিকে অন্যান্য অনেক ভাষা সফ্টওয়্যার লাইব্রেরি সরবরাহ করে যা সহযোগী অ্যারেগুলিকে সমর্থন করে। কন্টেন্ট-অ্যাড্রেসেবল মেমোরি হল সহযোগী অ্যারেগুলির জন্য সরাসরি হার্ডওয়্যার-স্তরের সমর্থনের একটি রূপ। সহযোগী অ্যারেগুলির অনেকগুলি প্রয়োগ রয়েছে যার মধ্যে রয়েছে মৌলিক প্রোগ্রামিং প্যাটার্ন যেমন মেমোয়েশন এবং ডেকোরেটর প্যাটার্ন। নামটি গণিতে পরিচিত সহযোগী বৈশিষ্ট্য থেকে আসে না। বরং, এটি কীগুলির সঙ্গে মূল্যবোধের সংযোগ থেকে উদ্ভূত হয়। এটি সহযোগী প্রসেসরের সাথে বিভ্রান্ত হওয়া উচিত নয়। একটি সহযোগী বিন্যাসে, একটি কী এবং একটি মানের মধ্যে সম্পর্ক প্রায়শই "ম্যাপিং" হিসাবে পরিচিত; একই শব্দটি একটি নতুন সমিতি তৈরির প্রক্রিয়া বোঝাতেও ব্যবহার করা যেতে পারে। একটি সহযোগী অ্যারের জন্য সাধারণত যে ক্রিয়াকলাপগুলি সংজ্ঞায়িত করা হয় সেগুলি হলঃ সন্নিবেশ করান বা রাখুনঃ সংগ্রহে একটি নতুন জোড়া যোগ করুন, তার নতুন মানের কী ম্যাপিং করুন। যে কোনও বিদ্যমান ম্যাপিং ওভাররাইট করা হয়। এই ক্রিয়াকলাপের যুক্তিগুলি হল মূল এবং মূল্য। সরিয়ে ফেলুন বা মুছে ফেলুনঃ সংগ্রহ থেকে একটি জোড়া সরিয়ে ফেলুন, তার মান থেকে একটি প্রদত্ত কী উন্মোচন করুন। এই অপারেশনের যুক্তি হল মূল বিষয়। সন্ধান করুন, সন্ধান করুন বা পানঃ একটি প্রদত্ত কী-এর সাথে আবদ্ধ মান (যদি থাকে) খুঁজে বের করুন। এই ক্রিয়াকলাপের যুক্তি হল মূল বিষয়, এবং ক্রিয়াকলাপ থেকে মান ফেরত দেওয়া হয়। যদি কোনও মান পাওয়া না যায়, কিছু সন্ধান ফাংশন একটি ব্যতিক্রম উত্থাপন করে, অন্যরা একটি ডিফল্ট মান প্রদান করে (যেমন শূন্য, নাল, বা কনস্ট্রাক্টরকে দেওয়া একটি নির্দিষ্ট মান)। সহযোগী অ্যারেতে অন্যান্য ক্রিয়াকলাপও অন্তর্ভুক্ত থাকতে পারে যেমন ম্যাপিংয়ের সংখ্যা নির্ধারণ করা বা সমস্ত ম্যাপিংয়ের উপর লুপ করার জন্য একটি ইটারেটর তৈরি করা। এই ধরনের ক্রিয়াকলাপের জন্য, যে ক্রমে ম্যাপিংগুলি ফেরত দেওয়া হয় তা সাধারণত বাস্তবায়ন-সংজ্ঞায়িত হয়। একটি মাল্টিম্যাপ একটি একক কী-এর সাথে একাধিক মান যুক্ত করার অনুমতি দিয়ে একটি সহযোগী অ্যারেকে সাধারণীকরণ করে। একটি দ্বিমুখী মানচিত্র একটি সম্পর্কিত বিমূর্ত তথ্য প্রকার যেখানে ম্যাপিং উভয় দিকেই কাজ করেঃ প্রতিটি মান অবশ্যই একটি অনন্য কী-এর সাথে যুক্ত হতে হবে এবং একটি দ্বিতীয় সন্ধান অপারেশন একটি যুক্তি হিসাবে একটি মান গ্রহণ করে এবং সেই মানের সাথে সম্পর্কিত কীটি সন্ধান করে। সহযোগী অ্যারের ক্রিয়াকলাপগুলি বিভিন্ন বৈশিষ্ট্যকে সন্তুষ্ট করতে হবেঃ সন্ধান (কে, সন্নিবেশ (জে, ভি, ডি)) = যদি কে = = জে হয় তবে ভি অন্যথায় সন্ধান (কে, ডি) সন্ধান (কে, নতুন ()) = ব্যর্থ, যেখানে ব্যর্থ একটি ব্যতিক্রম বা ডিফল্ট মান অপসারণ (কে, সন্নিবেশ (জে, ভি, ডি)) = যদি কে = = জে হয় তবে (কে, ডি) সরিয়ে ফেলুন অন্যথায় সন্নিবেশ (জে, ভি, অপসারণ (কে, ডি)) সরিয়ে ফেলুন (কে, নতুন () = নতুন () যেখানে কে এবং জে কী, ভি একটি মান, ডি একটি সহযোগী অ্যারে এবং নতুন () একটি নতুন, খালি সহযোগী অ্যারে তৈরি করে। উদাহরণস্বরূপ মনে করুন যে একটি গ্রন্থাগার দ্বারা প্রদত্ত ঋণের সেট একটি তথ্য কাঠামোতে উপস্থাপিত হয়। একটি গ্রন্থাগারের প্রতিটি বই একবারে শুধুমাত্র একজন গ্রন্থাগার পৃষ্ঠপোষক দ্বারা পরীক্ষা করা যেতে পারে। তবে, একজন একক পৃষ্ঠপোষক একাধিক বই পরীক্ষা করতে সক্ষম হতে পারেন। অতএব, কোন বইগুলি সম্পর্কে তথ্য পরীক্ষা করা হয় যে কোন পৃষ্ঠপোষকদের একটি সহযোগী বিন্যাস দ্বারা প্রতিনিধিত্ব করা যেতে পারে, যেখানে বইগুলি হল মূল এবং পৃষ্ঠপোষকরা হল মূল্য। পাইথন বা জে. এস. ও. এন থেকে স্বরলিপি ব্যবহার করে, তথ্য কাঠামোটি হবেঃ {"প্রাইড অ্যান্ড প্রিজুডিস": "অ্যালিস", "উথারিং হাইটস": "অ্যালিস", "গ্রেট এক্সপেক্টেশনস": "জন"} "গ্রেট এক্সপেক্টেশনস" কী-এর উপর একটি অনুসন্ধান অপারেশন "জন" ফিরিয়ে দেবে। যদি জন তার বই ফেরত দেয়, এটি একটি মুছে ফেলার অপারেশন ঘটাবে, এবং যদি প্যাট একটি বই পরীক্ষা করে, যা একটি সন্নিবেশ অপারেশন ঘটাবে, যা একটি ভিন্ন অবস্থার দিকে পরিচালিত করবেঃ {"প্রাইড অ্যান্ড প্রিজুডিস": "অ্যালিস", "দ্য ব্রাদার্স কারামাজভ": "প্যাট", "উথারিং হাইটস": "অ্যালিস"] খুব কম ম্যাপিং সহ অভিধানগুলির জন্য বাস্তবায়ন, একটি অ্যাসোসিয়েশন তালিকা, ম্যাপিংয়ের একটি লিঙ্কযুক্ত তালিকা ব্যবহার করে অভিধানটি বাস্তবায়ন করা বোধগম্য হতে পারে। এই বাস্তবায়নের সাথে, মৌলিক অভিধান ক্রিয়াকলাপ সম্পাদনের সময় মোট ম্যাপিংয়ের সংখ্যার মধ্যে রৈখিক; তবে, এটি বাস্তবায়ন করা সহজ এবং এর চলমান সময়ের ধ্রুবক কারণগুলি ছোট। আরেকটি খুব সহজ বাস্তবায়ন কৌশল, যখন কীগুলি একটি সংকীর্ণ পরিসরে সীমাবদ্ধ থাকে, তখন ব্যবহারযোগ্য হয় সরাসরি একটি অ্যারেতে সম্বোধন করাঃ একটি প্রদত্ত কী কে-এর মান অ্যারে সেল এ [কে]-তে সংরক্ষণ করা হয়, অথবা যদি কে-এর জন্য কোনও ম্যাপিং না থাকে তবে সেল একটি বিশেষ প্রহরী মান সংরক্ষণ করে যা একটি ম্যাপিংয়ের অভাব নির্দেশ করে। এই কৌশলটি সহজ এবং দ্রুত, প্রতিটি অভিধানের ক্রিয়াকলাপে অবিচ্ছিন্ন সময় লাগে। যাইহোক, এই কাঠামোর জন্য জায়গার প্রয়োজনীয়তা হল পুরো কীস্পেসের আকার, যা কীস্পেসটি ছোট না হলে এটিকে অবাস্তব করে তোলে। অভিধান বাস্তবায়নের দুটি প্রধান পদ্ধতি হল হ্যাশ টেবিল বা সার্চ ট্রি। হ্যাশ টেবিল বাস্তবায়ন একটি সহযোগী অ্যারের সর্বাধিক ব্যবহৃত সাধারণ-উদ্দেশ্য বাস্তবায়ন একটি হ্যাশ টেবিলের সাথে হয়ঃ একটি হ্যাশ ফাংশনের সাথে মিলিত একটি অ্যারে যা প্রতিটি কীকে অ্যারের একটি পৃথক "বালতি" তে পৃথক করে। একটি হ্যাশ টেবিলের পিছনে মূল ধারণাটি হল যে তার সূচকের মাধ্যমে একটি অ্যারের একটি উপাদান অ্যাক্সেস করা একটি সহজ, ধ্রুবক-সময় অপারেশন। অতএব, একটি হ্যাশ টেবিলের জন্য একটি অপারেশনের গড় ওভারহেড শুধুমাত্র কী-এর হ্যাশের গণনা, যা অ্যারের মধ্যে সংশ্লিষ্ট বালতি অ্যাক্সেসের সাথে মিলিত হয়। যেমন, হ্যাশ টেবিলগুলি সাধারণত ও (1) সময়ে কাজ করে এবং সাধারণত বিকল্প বাস্তবায়নের চেয়ে বেশি কাজ করে। হ্যাশ টেবিলগুলি অবশ্যই সংঘর্ষ পরিচালনা করতে সক্ষম হতে হবেঃ অ্যারের একই বালতিতে দুটি ভিন্ন কী-এর হ্যাশ ফাংশন দ্বারা ম্যাপিং। এই সমস্যার দুটি সর্বাধিক বিস্তৃত পন্থা হল পৃথক চেইনিং এবং উন্মুক্ত সম্বোধন। পৃথক চেইনিং-এ, অ্যারে নিজেই মানটি সংরক্ষণ করে না তবে একটি পয়েন্টারকে অন্য ধারকটিতে সংরক্ষণ করে, সাধারণত একটি অ্যাসোসিয়েশন তালিকা, যা হ্যাশের সাথে মিলে যাওয়া সমস্ত মান সংরক্ষণ করে। এর বিপরীতে, উন্মুক্ত ঠিকানায়, যদি একটি হ্যাশ সংঘর্ষ পাওয়া যায়, তবে টেবিলটি একটি নির্ধারিত পদ্ধতিতে মান সংরক্ষণের জন্য একটি অ্যারেতে একটি খালি জায়গা চায়, সাধারণত অ্যারেতে পরবর্তী তাৎক্ষণিক অবস্থানটি দেখে। খোলা ঠিকানায় ক্যাশ মিসের অনুপাত আলাদা চেইনিংয়ের তুলনায় কম থাকে যখন টেবিলটি বেশিরভাগ খালি থাকে। যাইহোক, টেবিলটি আরও উপাদান দিয়ে পূর্ণ হওয়ার সাথে সাথে ওপেন অ্যাড্রেসিংয়ের কর্মক্ষমতা দ্রুত হ্রাস পায়। উপরন্তু, পৃথক চেইনিং বেশিরভাগ ক্ষেত্রে কম মেমরি ব্যবহার করে, যদি না এন্ট্রিগুলি খুব ছোট হয় (একটি পয়েন্টারের আকারের চারগুণেরও কম)। বৃক্ষ বাস্তবায়ন স্ব-ভারসাম্য বাইনারি অনুসন্ধান গাছ আরেকটি সাধারণ পদ্ধতি হল একটি স্ব-ভারসাম্য বাইনারি অনুসন্ধান গাছের সাথে একটি সহযোগী অ্যারে বাস্তবায়ন করা, যেমন একটি এভিএল গাছ বা একটি লাল-কালো গাছ। হ্যাশ টেবিলের তুলনায়, এই কাঠামোগুলির শক্তি এবং দুর্বলতা উভয়ই রয়েছে। স্ব-ভারসাম্য বাইনারি অনুসন্ধান গাছের সবচেয়ে খারাপ কার্যকারিতা হ্যাশ টেবিলের তুলনায় উল্লেখযোগ্যভাবে ভাল, ও (লগ এন) এর বড় ও নোটেশনে সময় জটিলতা সহ। এটি হ্যাশ টেবিলের বিপরীতে, যার সবচেয়ে খারাপ পারফরম্যান্সে সমস্ত উপাদান একটি বালতি ভাগ করে নেয়, যার ফলে ও (এন) সময় জটিলতা হয়। উপরন্তু, এবং সমস্ত বাইনারি অনুসন্ধান গাছের মতো, স্ব-ভারসাম্য বাইনারি অনুসন্ধান গাছগুলি তাদের উপাদানগুলিকে ক্রমানুসারে রাখে। সুতরাং, এর উপাদানগুলিকে অতিক্রম করা একটি ন্যূনতম থেকে সর্বশ্রেষ্ঠ প্যাটার্ন অনুসরণ করে, যেখানে একটি হ্যাশ টেবিল অতিক্রম করার ফলে উপাদানগুলি আপাতদৃষ্টিতে এলোমেলো ক্রমে থাকতে পারে। যেহেতু এগুলি ক্রমানুসারে রয়েছে, বৃক্ষ-ভিত্তিক মানচিত্রগুলি পরিসীমার প্রশ্নগুলিও সন্তুষ্ট করতে পারে (দুটি সীমার মধ্যে সমস্ত মান খুঁজে পেতে পারে) যেখানে একটি হ্যাশম্যাপ শুধুমাত্র সঠিক মান খুঁজে পেতে পারে। যাইহোক, হ্যাশ টেবিলগুলির ও (1) এর স্ব-ভারসাম্য বাইনারি অনুসন্ধান গাছের তুলনায় অনেক ভাল গড়-কেস সময় জটিলতা রয়েছে এবং একটি ভাল হ্যাশ ফাংশন ব্যবহার করা হলে তাদের সবচেয়ে খারাপ-কেস পারফরম্যান্স অত্যন্ত অসম্ভব। এটি লক্ষণীয় যে একটি স্ব-ভারসাম্যপূর্ণ বাইনারি অনুসন্ধান গাছ একটি হ্যাশ টেবিলের জন্য বালতি বাস্তবায়নের জন্য ব্যবহার করা যেতে পারে যা পৃথক চেইনিং ব্যবহার করে। এটি গড়-কেস ধ্রুবক সন্ধানের অনুমতি দেয়, তবে ও (লগ এন) এর সবচেয়ে খারাপ-কেস পারফরম্যান্সের আশ্বাস দেয়। যাইহোক, এটি বাস্তবায়নে অতিরিক্ত জটিলতা প্রবর্তন করে এবং ছোট হ্যাশ টেবিলগুলির জন্য আরও খারাপ পারফরম্যান্সের কারণ হতে পারে, যেখানে গাছের মধ্যে প্রবেশ এবং ভারসাম্য বজায় রাখতে ব্যয় করা সময় একটি লিঙ্কযুক্ত তালিকার সমস্ত উপাদানগুলিতে রৈখিক অনুসন্ধান করার জন্য প্রয়োজনীয় সময়ের চেয়ে বেশি বা অনুরূপ ডেটা কাঠামো। অন্যান্য ট্রি অ্যাসোসিয়েটিভ অ্যারেগুলি ভারসাম্যহীন বাইনারি সার্চ ট্রি বা একটি নির্দিষ্ট ধরনের কী যেমন রেডিক্স ট্রি, ট্রাই, জুডি অ্যারে বা ভ্যান এমডে বোয়াস ট্রি-র জন্য বিশেষায়িত ডেটা স্ট্রাকচারেও সংরক্ষণ করা যেতে পারে, যদিও এই বাস্তবায়নের আপেক্ষিক কার্যকারিতা পরিবর্তিত হয়। উদাহরণস্বরূপ, জুডি গাছগুলিকে হ্যাশ টেবিলের তুলনায় কম দক্ষতার সাথে কাজ করার জন্য নির্দেশিত করা হয়, যেখানে সাবধানে নির্বাচিত হ্যাশ টেবিলগুলি সাধারণত অভিযোজিত রেডিক্স গাছের তুলনায় আরও দক্ষতার সাথে কাজ করে, যেখানে তারা পরিচালনা করতে পারে এমন ডেটা প্রকারের উপর সম্ভাব্য বৃহত্তর বিধিনিষেধ রয়েছে। এই বিকল্প কাঠামোগুলির সুবিধাগুলি অতিরিক্ত সহযোগী অ্যারে অপারেশনগুলি পরিচালনা করার ক্ষমতা থেকে আসে, যেমন ম্যাপিং খুঁজে বের করা যার কী একটি জিজ্ঞাসিত কীয়ের নিকটতম যখন ম্যাপিংয়ের সেটে প্রশ্ন অনুপস্থিত থাকে। তুলনা নির্দেশিত অভিধান একটি অভিধানের মৌলিক সংজ্ঞা একটি ক্রমকে বাধ্যতামূলক করে না। গণনার একটি নির্দিষ্ট ক্রম নিশ্চিত করার জন্য, সহযোগী অ্যারের ক্রমযুক্ত সংস্করণগুলি প্রায়শই ব্যবহার করা হয়। একটি সুশৃঙ্খল অভিধানের দুটি ইন্দ্রিয় রয়েছেঃ গণনার ক্রম সর্বদা বাছাই করে প্রদত্ত কীগুলির জন্য নির্ধারণমূলক। গাছ-ভিত্তিক বাস্তবায়নের ক্ষেত্রে এটি হয়, একটি প্রতিনিধি হল সি + +-এর ধারক। গণনার ক্রমটি মূল-স্বাধীন এবং পরিবর্তে সন্নিবেশের ক্রমের উপর ভিত্তি করে। জাভা এবং পাইথনের লিঙ্কডহ্যাশম্যাপ. নেট ফ্রেমওয়ার্কে "অর্ডারড ডিকশনারি"-র ক্ষেত্রে এটি হয়। পরেরটি বেশি প্রচলিত। এই ধরনের অর্ডার করা অভিধানগুলি একটি অ্যাসোসিয়েশন তালিকা ব্যবহার করে, একটি সাধারণ অভিধানের উপরে দ্বিগুণ লিঙ্কযুক্ত তালিকা ওভারলে করে বা প্রকৃত তথ্যকে বিরল (ক্রমহীন) অ্যারে থেকে সরিয়ে এবং ঘন সন্নিবেশ-অর্ডার করা একটিতে সরিয়ে প্রয়োগ করা যেতে পারে। ভাষা সমর্থন সহযোগী অ্যারেগুলি একটি প্যাকেজ হিসাবে যে কোনও প্রোগ্রামিং ভাষায় প্রয়োগ করা যেতে পারে এবং অনেক ভাষা ব্যবস্থা তাদের মানক গ্রন্থাগারের অংশ হিসাবে সরবরাহ করে। কিছু ভাষায়, এগুলি কেবল স্ট্যান্ডার্ড সিস্টেমে নির্মিত হয় না, তবে প্রায়শই অ্যারের মতো সাবস্ক্রিপ্টিং ব্যবহার করে বিশেষ সিনট্যাক্স থাকে। 1969 সালে এস. এন. ও. বি. ও. এল. 4 দ্বারা "টেবিল" নামে সহযোগী অ্যারেগুলির জন্য অন্তর্নির্মিত বাক্যবিন্যাস সমর্থন চালু করা হয়েছিল। টিএমজি স্ট্রিং কী এবং পূর্ণসংখ্যা মান সহ টেবিল সরবরাহ করে। এম. ইউ. এম. পি. এস বহু-মাত্রিক সহযোগী অ্যারে তৈরি করেছে, বিকল্পভাবে স্থায়ী, এর মূল তথ্য কাঠামো। সেট এবং মানচিত্রের সম্ভাব্য বাস্তবায়ন হিসাবে এস. ই. টি. এল তাদের সমর্থন করেছিল। রেক্স, পার্ল, পিএইচপি, টিসিএল, জাভাস্ক্রিপ্ট, ম্যাপেল, পাইথন, রুবি, ওল্ফ্রাম ল্যাঙ্গুয়েজ, গো এবং লুয়া সহ বেশিরভাগ আধুনিক স্ক্রিপ্টিং ভাষাগুলি প্রাথমিক ধারক প্রকার হিসাবে সহযোগী অ্যারেগুলিকে সমর্থন করে। আরও অনেক ভাষায়, এগুলি বিশেষ বাক্য গঠন ছাড়াই গ্রন্থাগার ফাংশন হিসাবে পাওয়া যায়। স্মলটক, অবজেক্টিভ-সি,. নেট, পাইথন, রিয়েলবেসিক, সুইফট, ভি. বি. এ এবং ডেলফিতে এগুলিকে অভিধান বলা হয়; পার্ল, রুবি এবং সিড 7-এ এগুলিকে হ্যাশ বলা হয়; সি + +, জাভা, গো, ক্লোজুর, স্কালা, ও. সি. এ. এম. এল, হাস্কেলে এগুলিকে মানচিত্র বলা হয় (মানচিত্র (সি + +), আনঅর্ডার্ড _ ম্যাপ (সি + +), এবং); কমন লিস্প এবং উইন্ডোজ পাওয়ারশেলে এগুলিকে হ্যাশ টেবিল বলা হয় (যেহেতু উভয়ই সাধারণত এই বাস্তবায়ন ব্যবহার করে); ম্যাপেল এবং লুয়াতে এগুলিকে টেবিল বলা হয়। পিএইচপি-তে, সমস্ত অ্যারে সহযোগী হতে পারে, তবে কীগুলি পূর্ণসংখ্যা এবং স্ট্রিংয়ের মধ্যে সীমাবদ্ধ। জাভাস্ক্রিপ্টে (আরও দেখুন জে. এস. ও. এন), সমস্ত বস্তু স্ট্রিং-মূল্যবান কীগুলির সাথে সহযোগী অ্যারে হিসাবে আচরণ করে, যেখানে মানচিত্র এবং দুর্বল মানচিত্রের ধরণগুলি স্বেচ্ছাচারী বস্তুগুলিকে কী হিসাবে গ্রহণ করে। লুয়াতে, এগুলি সমস্ত তথ্য কাঠামোর জন্য আদিম বিল্ডিং ব্লক হিসাবে ব্যবহৃত হয়। ভিজ্যুয়াল ফক্সপ্রোতে এগুলিকে সংগ্রহ বলা হয়। ডি ভাষা সহযোগী অ্যারেগুলিকেও সমর্থন করে। স্থায়ী সঞ্চয় সহযোগী অ্যারে ব্যবহার করে অনেক প্রোগ্রামকে সেই ডেটা আরও স্থায়ী আকারে সংরক্ষণ করতে হবে, যেমন একটি কম্পিউটার ফাইল। এই সমস্যার একটি সাধারণ সমাধান হল আর্কাইভিং বা সিরিয়ালাইজেশন নামে পরিচিত একটি সাধারণ ধারণা, যা মূল বস্তুর একটি পাঠ্য বা বাইনারি উপস্থাপনা তৈরি করে যা সরাসরি একটি ফাইলে লেখা যেতে পারে। এটি সাধারণত অন্তর্নিহিত অবজেক্ট মডেলে প্রয়োগ করা হয়, যেমন. নেট বা কোকো, যার মধ্যে স্ট্যান্ডার্ড ফাংশন রয়েছে যা অভ্যন্তরীণ তথ্যকে পাঠ্যে রূপান্তরিত করে। প্রোগ্রামটি এই পদ্ধতিগুলিকে কল করে যে কোনও গোষ্ঠীর বস্তুর একটি সম্পূর্ণ পাঠ্য উপস্থাপনা তৈরি করতে পারে, যা প্রায় সবসময়ই বেস অ্যাসোসিয়েটিভ অ্যারে ক্লাসে প্রয়োগ করা হয়। যে প্রোগ্রামগুলি খুব বড় ডেটা সেট ব্যবহার করে, তাদের জন্য এই ধরনের পৃথক ফাইল সঞ্চয় উপযুক্ত নয় এবং একটি ডাটাবেস ম্যানেজমেন্ট সিস্টেম (ডিবি) প্রয়োজন। কিছু ডিবি সিস্টেম স্থানীয়ভাবে সহযোগী অ্যারেগুলিকে ডেটা সিরিয়ালাইজ করে এবং তারপরে সেই সিরিয়ালাইজড ডেটা এবং কী সংরক্ষণ করে সঞ্চয় করে। পৃথক অ্যারেগুলি তখন তাদের উল্লেখ করার জন্য কী ব্যবহার করে ডাটাবেস থেকে লোড বা সংরক্ষণ করা যেতে পারে। এই মূল-মূল্যের দোকানগুলি বহু বছর ধরে ব্যবহৃত হয়ে আসছে এবং আরও সাধারণ রিলেশনাল ডাটাবেসের (আরডিবি) মতো দীর্ঘ ইতিহাস রয়েছে, তবে অন্যান্য কারণের মধ্যে মানসম্মতকরণের অভাব তাদের ব্যবহারকে নির্দিষ্ট কুলুঙ্গি ভূমিকায় সীমাবদ্ধ করে। বেশিরভাগ ক্ষেত্রে এই ভূমিকাগুলির জন্য আরডিবি ব্যবহার করা হত, যদিও আরডিবি-তে বস্তু সংরক্ষণ করা জটিল হতে পারে, একটি সমস্যা যা অবজেক্ট-রিলেশনাল ইম্পিডেন্স মিসম্যাচ নামে পরিচিত। এর পরে, ক্লাউড কম্পিউটিংয়ের জন্য উপযুক্ত উচ্চ-কার্যকারিতা ডেটাবেসের প্রয়োজনীয়তা এবং সেগুলি ব্যবহার করে প্রোগ্রামগুলির অভ্যন্তরীণ কাঠামোর সাথে আরও ঘনিষ্ঠভাবে মেলানো মূল-মূল্যের স্টোর বাজারে একটি নবজাগরণের দিকে পরিচালিত করে। এই সিস্টেমগুলি স্থানীয় পদ্ধতিতে সহযোগী অ্যারেগুলি সংরক্ষণ এবং পুনরুদ্ধার করতে পারে, যা সাধারণ ওয়েব-সম্পর্কিত কর্মপ্রবাহে কর্মক্ষমতা ব্যাপকভাবে উন্নত করতে পারে। আরও দেখুন কী-ভ্যালু ডাটাবেস টুপল ফাংশন (গণিত) জে. এস. ও. এন রেফারেন্স এক্সটার্নাল লিঙ্ক এন. আই. এস. টি-র ডিকশনারি অফ অ্যালগরিদমস অ্যান্ড ডেটা স্ট্রাকচারসঃ অ্যাসোসিয়েটিভ অ্যারে অ্যাবস্ট্রাক্ট ডেটা টাইপ কম্পোজিট ডেটা টাইপ ডেটা টাইপ