IndexedDB-তে ডিফল্ট স্থায়িত্ব মোডে একটি পরিবর্তন

IndexedDB-তে ডিফল্ট স্থায়িত্ব মোড ক্রোম 121 থেকে strict থেকে relaxed হতে পরিবর্তিত হচ্ছে৷ এই সামঞ্জস্যটি কর্মক্ষমতা বাড়াতে এবং Firefox এবং Safari-এর মতো অন্যান্য প্রধান ব্রাউজারগুলির সাথে সারিবদ্ধ করার জন্য৷ ব্লগ পোস্টটি এই পরিবর্তনের বিশদ বিবরণ এবং ওয়েব বিকাশকারীদের জন্য এর অর্থ কী তা ব্যাখ্যা করে৷

IndexedDB স্থায়িত্ব মোড

IndexedDB , বৃহৎ পরিমাণে স্ট্রাকচার্ড ডেটা সঞ্চয় করার জন্য একটি শক্তিশালী ওয়েব API, readwrite লেনদেনের জন্য দুটি স্থায়িত্ব মোড অফার করে:

  • strict : complete ইভেন্টটি ইস্যু করার আগে এই মোডটি স্পষ্টভাবে ওএসকে ডিস্কে পরিবর্তনগুলি ফ্লাশ করার নির্দেশ দেয়।
  • relaxed এই মোডটি ডিফল্ট OS ফ্লাশিং আচরণের উপর নির্ভর করে এবং পরিবর্তনগুলি OS বাফারে পরিণত করার পরে complete ইভেন্টটি ইস্যু করে, যা সাধারণত প্রতি কয়েক সেকেন্ডে ফ্লাশ করা হয়।

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

যখন এটি strict স্থায়িত্বের সাথে গ্যারান্টির ক্ষেত্রে আসে, তখন ইনডেক্সডডিবি লেনদেন complete ইভেন্টটি ডেটা লেখা না হওয়া পর্যন্ত বরখাস্ত করা হয় না, যেখানে relaxed স্থায়িত্ব সহ, complete ইভেন্টটি ফায়ার হয়ে গেলে ডেটা লেখার প্রক্রিয়ায় থাকে। (সম্পূর্ণ প্রক্রিয়া সম্পর্কে আরও বিশদ বিবরণের জন্য, এই ব্যাখ্যাকারীটি দেখুন )।

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

ডিফল্ট স্থায়িত্ব মোড পরিবর্তন

এই পরিবর্তনের গুরুত্বপূর্ণ দিক হল Chrome-এ readwrite লেনদেনের জন্য ডিফল্ট স্থায়িত্ব মোড। এখন পর্যন্ত, ডিফল্ট strict ছিল, ডাটা পরিবর্তনের জন্য অবিলম্বে ডিস্ক লেখা নিশ্চিত করে। যাইহোক, কর্মক্ষমতা বিবেচনার কারণে এবং অন্যান্য প্রধান ব্রাউজারগুলির সাথে সারিবদ্ধ করার জন্য যা সকলেই relaxed ব্যবহার করে, ক্রোম একইভাবে ডিফল্টকে relaxed পরিবর্তন করার পরিকল্পনা করেছে।

এই পরিবর্তনটি কর্মক্ষমতা এবং ডেটা স্থায়িত্বের মধ্যে একটি ভাল ভারসাম্য প্রদান করার জন্য ডিজাইন করা হয়েছে। যদিও strict সর্বোচ্চ ডেটা স্থায়িত্ব নিশ্চিত করে, relaxed প্রায়শই অনেক ওয়েব অ্যাপ্লিকেশনের জন্য যথেষ্ট এবং নিম্নলিখিত উপায়ে কর্মক্ষমতা উল্লেখযোগ্যভাবে উন্নত করতে পারে

  • গতি—বাস্তব-বিশ্বের উদাহরণে, Chrome টিম 3 এবং 30 এর মধ্যে গতির উন্নতি দেখেছে৷
  • ডিস্কের স্থায়িত্ব, বিশেষ করে সলিড স্টেট ডিস্ক (SSD) সহ ডিভাইসগুলির জন্য।
  • বর্ধিত ব্যাটারি জীবন.
  • পড়ার গতিতে উন্নতি। IndexedDB-এর আর্কিটেকচারের কারণে, যেখানে পঠিত লেনদেনগুলি প্রায়ই লেখার লেনদেনের পিছনে ব্লক করা হয়, পাঠের গতি একটি গৌণ প্রভাব হিসাবে উন্নত হয়।
  • পুরো ডিভাইসটি ইতিবাচকভাবে প্রভাবিত হয়, কারণ ডিস্ক অপারেশনগুলি একটি শেয়ার্ড সিস্টেম রিসোর্স।

ইন্টারঅপারেবিলিটি এবং সামঞ্জস্য

এই পরিবর্তনের একটি গুরুত্বপূর্ণ দিক হ'ল আন্তঃক্রিয়াশীলতা এবং সামঞ্জস্যের উপর এর প্রভাব। অন্যান্য প্রধান ব্রাউজার বিক্রেতাদের আচরণের সাথে সারিবদ্ধ করে, Chromium আন্তঃকার্যক্ষমতা উন্নত করে। মান নিজেই বিভিন্ন বাস্তবায়নের জন্য অনুমতি দেয় এবং এই পরিবর্তনের লক্ষ্য সেই বাস্তবায়নগুলিকে সামঞ্জস্য করা। আপনি এই GitHub ইস্যুতে এই পরিবর্তনের আরও ঐতিহাসিক প্রসঙ্গ খুঁজে পেতে পারেন।

ওয়েব ডেভেলপারদের জন্য এর মানে কি?

এই পরিবর্তনটি কোনো নতুন API পৃষ্ঠের পরিচয় দেয় না। বিদ্যমান IndexedDB API একই থাকে এবং এই পরিবর্তনটি প্রাথমিকভাবে readwrite লেনদেনের ডিফল্ট আচরণকে প্রভাবিত করে। লেনদেন তৈরি করার সময় আপনি আপনার পছন্দের স্থায়িত্ব মোড নির্দিষ্ট করতে পারেন, আপনাকে ডেটা স্থায়িত্ব এবং কর্মক্ষমতা নিয়ন্ত্রণ করে। নিম্নোক্ত কোড নমুনা দেখায় যে কীভাবে ঐচ্ছিক বিকল্প অ্যারেতে durability strict সেট করে পুরানো আচরণ ফিরিয়ে আনা যায়।

let db;
const DBOpenRequest = window.indexedDB.open("toDoList", 4);
DBOpenRequest.onsuccess = (event) => {
  db = DBOpenRequest.result;
};
const transaction = db.transaction(
  ['toDoList'],
  'readwrite',
  { durability: 'strict' });

এটি পাঠানোর আগে স্থানীয়ভাবে পরিবর্তনটি পরীক্ষা করা হচ্ছে

পরিবর্তনটি Chrome 121-এ কার্যকর হবে। আপনি যদি আগে স্থানীয়ভাবে নতুন আচরণ পরীক্ষা করতে চান, chrome://flags#indexed-db-default-durability-relaxed পতাকা টগল করুন।

আরও জানুন

এই পরিবর্তনের আরও প্রযুক্তিগত বিবরণ এবং আপডেটের জন্য, ট্র্যাকিং বাগ এবং Chrome প্ল্যাটফর্ম স্ট্যাটাস এন্ট্রি পরীক্ষা করুন।

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

স্বীকৃতি

এই নিবন্ধটি Evan Stade এবং Rachel Andrew দ্বারা পর্যালোচনা করা হয়েছে।