কীভাবে লোকাল স্টোরেজ ইন্ডেক্সডডিবি থেকে আলাদা?


108

লোকালস্টোরেজ এবং ইনডেক্সডডিবি এইচটিএমএল 5-তে ডেটা অফলাইনে সঞ্চয় করার জন্য ব্যবহৃত হয়। তাদের মূল পার্থক্যগুলি কী কী এবং কোনটি কোন পরিস্থিতিতে ভাল?


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

আপনি বিভিন্ন স্টোরেজ অপশনগুলির মধ্যে এবং ব্রাউজারগুলির জুড়ে পারফরম্যান্স এখানে পরীক্ষা করতে পারেন: nolanlawson.github.io/datedia-compistance (নোলান লসনের ক্রেডিট)
লুকাশ বাস্কেরোটো

উত্তর:


121

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

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

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

এই মুহুর্তে, ইনডেক্সডডিবি সর্বকালের প্রতিটি পরিস্থিতির জন্য সর্বোত্তম সমাধান বলে মনে হতে পারে। তবে এর সমস্ত বৈশিষ্ট্যের জন্য একটি জরিমানা রয়েছে: ডিওএম স্টোরেজের সাথে তুলনা করে, এর এপিআই বেশ জটিল। indexedDB ডাটাবেস ধারণাগুলির সাথে একটি সাধারণ পরিচিতি অনুমান করে, ওয়েব স্টোরেজ সহ আপনি ডানদিকে ঝাঁপিয়ে পড়তে পারেন you আপনি যদি কখনও কুকি নিয়ে কাজ করেন তবে ওয়েব স্টোরেজ সহ আপনার কোনও সমস্যা হবে না। এছাড়াও, সাধারণভাবে ওয়েব স্টোরেজ (এবং আরও কোড = আরও বেশি বাগ) এর মতো একই ফলাফল অর্জনের জন্য আপনাকে সূচিযুক্ত ডিবিতে আরও কোড লিখতে হবে। তদ্ব্যতীত, ব্রাউজারগুলি যা এটি সমর্থন করে না তাদের জন্য ওয়েব স্টোরেজ অনুকরণ করা তুলনামূলকভাবে সহজ। ইনডেক্সডডিবি দিয়ে, কাজটি তার উপযুক্ত হবে না। শেষ অবধি, আপনি ইনডেক্সডডিবিতে ডুব দেওয়ার আগে আপনার প্রথমে কোটা API এ একবার দেখা উচিত ।

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


15
এছাড়াও, ইনডেক্সডডিবি সাম্প্রতিক ব্রাউজারগুলি দ্বারা সমর্থিত : আইই 10+, ক্রোম 23+, ফায়ারফক্স 10+, অপেরা 15+, এবং অ্যান্ড্রয়েড 4.4+।
ডেভিড হার্কনেস

1
@ অ্যানিস, ডিওএম স্টোরেজ এবং ওয়েব স্টোরেজের মধ্যে কোনও পার্থক্য রয়েছে কি?
স্যান্ড্রোমার্কস

তারা একই মনে হয়। en.wikedia.org/wiki/Web_stores
Lawliet

এছাড়াও পরিষেবা কর্মীরা ইনডেক্সডডিবি ব্যবহার করতে পারেন তবে স্থানীয় স্টোরেজ নয়
ফ্যাবিচ

9

@ অ্যানিস উত্তরটি দুর্দান্ত। কেবল কয়েকটি জিনিস যুক্ত করতে চাই।

  1. পরিষেবা ওয়ার্কার্সের মতো কয়েকটি পরিস্থিতিতে আপনি ব্লকিং কোড ব্যবহার করতে পারবেন না, সুতরাং আপনি লোকালস্টোরেজ ব্যবহার করতে পারবেন না এবং অবশ্যই ইনডেক্সডডিবি জাতীয় কিছু ব্যবহার করতে পারেন।

  2. ইন্ডেক্সডডিবি'র জন্য এপিআই জটিল এবং ক্লান্তিকর (আমি "ভয়ঙ্কর", ওয়াইএমএমভি) বলতে এতদূর যেতে পেরেছি)। এপিআইকে সহজ করার জন্য বেশ কয়েকটি "র‌্যাপার" লাইব্রেরি রয়েছে, আমি দৃ strongly়ভাবে পরামর্শ দিচ্ছি যে আপনি সেগুলি দেখুন।


পুনরায় লোকাল স্টোরেজ এবং ব্লকিং কোড ব্যবহার করতে পারে না, আপনি কি কোনও প্রতিশ্রুতি দিয়ে ব্লকিং কোডটি মোড়ক এবং এটিকে অবরুদ্ধ করতে পারবেন না?
joedotnot

3

আমার জন্য, আমি দেখেছি যে আমি সঞ্চয় করতে পারেন ব্লব IndexedDB যখন localStorage আমি স্ট্রিং শুধুমাত্র সংরক্ষণ করতে পারেন। এর অর্থ এই যে ইমেজ, অডিও, ভিডিওর মতো বাইনারি ডেটার জন্য সূচক ডিডিবি আরও ভাল। হ্যাঁ আমরা স্থানীয় স্টোরেজে বেস 64 এ চিত্রগুলি সঞ্চয় করতে পারি তবে ব্লবগুলি ছোট এবং দ্রুত হবে কারণ আমাদের সেগুলি ডিকোড করার দরকার নেই।

এমডিএন থেকে উদ্ধৃতি :

The keys and the values are always strings.

ইনডেক্সডডিবি সম্পর্কে :

Any objects supported by the structured clone algorithm can be stored:  
All primitive types However not symbols
Boolean object   
String object    
Date     
RegExp  The lastIndex field is not preserved.
Blob     
File     
FileList     
ArrayBuffer  
ArrayBufferView This basically means all typed arrays like Int32Array etc.
ImageData    
Array    
Object  This just includes plain objects (e.g. from object literals)
Map  
Set

তাই কি? ডকুমেন্টেশন এটি সম্পর্কে কি বলে?
মেল

দুঃখিত, ডকুমেন্টেশনের রেফারেন্স যুক্ত।
ভাইটালি জেডনেভিচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.