কীভাবে ইনডেক্সডডিবি এইচটিএমএল 5 স্থানীয় স্টোরেজ থেকে আলাদা?


86
  1. ইনডেক্সডডিবি এবং স্থানীয় স্টোরেজ উভয়ই মূল মূল্য সঞ্চয়। দুটি কী / মান স্টোর থাকার সুবিধা কী?
  2. indexedDB হ'ল অবিচ্ছিন্ন, তবে যোগ দেয় (সর্বাধিক সময় গ্রহণকারী জিনিস) ম্যানুয়াল। এ্যাসিঙ্ক কলগুলি করার মতো তারা একই থ্রেডে চালিত হতে পারে। এটি কীভাবে ইউআইকে আটকাবে না?
  3. indexedDB একটি বৃহত স্টোর অনুমতি দেয়। এইচটিএমএল 5 স্টোরের আকার বাড়াবেন না কেন?
  4. আমি আমার মাথা আঁচড়াচ্ছি ইনডেক্সডডিবি এর বিন্দু কী?

উত্তর:


115

স্থানীয় স্টোরেজ যেমন হয় তেমনিভাবে ইনডেক্সডডিবি কী-ভ্যালু স্টোর নয়। স্থানীয় স্টোরেজ কেবল স্ট্রিং সঞ্চয় করে, তাই স্থানীয় স্টোরেজে কোনও অবজেক্ট রাখার জন্য সাধারণ পন্থাটি JSON. স্ট্রিংফাই করুন:

myObject = {a: 1, b: 2, c: 3};
localStorage.setItem("uniq", JSON.stringify(myObject));

কী দিয়ে অবজেক্টটি সন্ধানের জন্য এটি ঠিক আছে uniqতবে মাইওজেক্টের বৈশিষ্ট্যগুলি স্থানীয় স্টোরেজ থেকে ফিরে পাওয়ার একমাত্র উপায় হ'ল জেএসওএন ars

var myStorageObject = JSON.parse(localStorage.getItem("uniq"));
window.alert(myStorageObject.b);

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

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

অন্তত এই ধারণা। ইনডেক্সডডিবি এপিআই খুব স্বজ্ঞাত নয়।

এ্যাসিঙ্ক কলগুলি করার মতো তারা একই থ্রেডে চালিত হতে পারে। এটি কীভাবে ইউআইকে আটকাবে না?

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

indexedDB একটি বৃহত স্টোর অনুমতি দেয়। এইচটিএমএল 5 স্টোরের আকার বাড়াবেন না কেন?

কারণ, যথাযথ সূচিকরণ ছাড়াই এটি যত বড় হয়েছে তত ক্রমশ ধীর হয়ে উঠবে।


4
স্থানীয় স্টোরেজ যখন ইনডেক্সডডিবি কীভাবে লেনদেনকে সমর্থন করে তার জন্য নিম্নলিখিত প্রশ্নের উত্তরগুলিও দেখতে চাইতে পারেন । লেনদেনের সমর্থন না থাকা ক্রোম এবং অপেরা হিসাবে ব্রাউজারগুলিতে স্থানীয় স্টোরেজে মুটি-ট্যাব / উইন্ডো অ্যাক্সেস নিয়ে সমস্যা হতে পারে যা প্রতি ট্যাবে পৃথক প্রক্রিয়া / থ্রেড ব্যবহার করে।
স্টিফান

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

ইনডেক্সডডিবি এপিআই নিশ্চিতরূপে খুব স্বজ্ঞাত নয়, তবে ডেক্সির মতো মোড়ক লাইব্রেরি রয়েছে , এটি বিষয়গুলি সহজ করে তোলে
fengshuo

@ আরবার্টক, আপনি অবজেক্টটি সন্ধান করার জন্য সমস্ত বস্তুর মধ্য দিয়ে পাড়ি দেওয়ার বিষয়ে বলেছিলেন যেখানে বি == ২, লোকাল স্টোরেজে আমরা যে সমস্ত আইটেম সঞ্চয় করি তার সাথে আমাদের কী যুক্ত থাকার দরকার হয় কেন?
তিনু জোস কে

@ টিক 20 কারণ কীটি ব্যবহার করার কোনও উপায় নেই কারণ এতে থাকা বস্তুটি না পেয়ে
রবার্টক

8

আমি স্থানীয় স্টোরেজ বনাম ইন্ডেক্সডডিবি এবং অন্যান্য সম্ভাব্য বিকল্পগুলি নিয়ে আলোচনা করে এই ভাল নিবন্ধটি জুড়ে এসেছি।

(নীচের সমস্ত মানগুলি মিলি সেকেন্ডে রয়েছে)

https://nolanlawson.com/2015/09/29/indexeddb-websql-localstores- কি- ব্লক-the-dom/

স্মৃতি তুলনা

নিবন্ধ থেকে সংক্ষিপ্ত বিবরণ (সম্পূর্ণ লেখকের মতামত),

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

  4. ইনডেক্সডডিবি একটি ওয়েব কর্মীর মধ্যে সাঁতার কাটতে ভাল কাজ করে, যেখানে এটি প্রায় একই গতিতে চালিত হয় তবে ডিওএমকে অবরুদ্ধ না করে। একমাত্র ব্যতিক্রম সাফারি, যা কোনও কর্মীর ভিতরে ইনডেক্সডডিবি সমর্থন করে না, তবে এটি ইউআইকে অবরুদ্ধ করে না।

  5. ডেটা সহজ এবং ন্যূনতম হলে লোকালমিওরি আদর্শ


6

রবার্টকের অ্যাঞ্জারটিতে যুক্ত করে, ইনডেক্সডডিবি 'রেঞ্জগুলি' জানে তাই আপনি 'আব' দিয়ে শুরু হওয়া সমস্ত রেকর্ড অনুসন্ধান ও পুনরুদ্ধার করতে পারেন এবং 'এবিসি' ইত্যাদি খুঁজে পেতে 'আবদ' দিয়ে শেষ করতে পারেন etc.


0

ব্রাউজারের কনসোলে নিম্নলিখিতটি চালান। এটি লোকালস্টোরেজ এবং সেশনস্টোরেজের পাশাপাশি অ্যাপ্লিকেশন> স্টোরেজে পৃথক সত্তা তৈরি করবে

const request = indexedDB.open("notes");
request.onupgradeneeded = e => {
  alert("upgrade");
}
request.onsuccess = e => {
  alert("success");
}
request.onerror = e => {
  alert("error");
}

আপনি এই স্টোরেজটি অন্যান্য দুটি স্টোরের তুলনায় সমস্ত CRUD ক্রিয়াকলাপের সাথে জিজ্ঞাসা করতে পারেন যার সাথে খেলতে কম স্বাচ্ছন্দ্য এবং ফাংশন রয়েছে।

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