ওয়েব SQL অবমূল্যায়ন এবং অপসারণ

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

ওয়ার্ল্ড ওয়াইড ওয়েব কনসোর্টিয়াম (W3C) যাদের ওয়েব ডাটাবেসের প্রয়োজন তাদের localStorage এবং sessionStorage বা IndexedDB এর মতো ওয়েব স্টোরেজ API প্রযুক্তি গ্রহণ করতে উত্সাহিত করে । কী/মূল্যের স্টোর এবং স্ট্রাকচার্ড ডেটার ক্ষেত্রে এই প্রযুক্তিগুলি তাদের শক্তি দেখায়, কিন্তু স্বীকার করে যে একটি শক্তিশালী প্রশ্নের ভাষার অভাবের মতো দুর্বলতাও রয়েছে। লোকেরা একটি কারণে ওয়েবে SQL চায়।

ওয়েব SQL অবচয় এবং অপসারণের পদক্ষেপ

  • [ সম্পন্ন।] Chromium 97 (জানুয়ারী 4, 2022)-এ তৃতীয়-পক্ষের প্রসঙ্গগুলির জন্য ওয়েব SQL অবচয় এবং সরানো হয়েছে।
  • [ সম্পন্ন।] Chromium 105 (জানুয়ারী 4, 2022) থেকে অনিরাপদ প্রেক্ষাপটে ওয়েব SQL অ্যাক্সেস বাতিল করা হয়েছিল যে সময়ে Chrome DevTools ইস্যু প্যানেলে একটি সতর্কতা বার্তা দেখানো হয়েছিল।

একটি সতর্কতা সহ Chrome DevTools ইস্যু প্যানেল যা অ-সুরক্ষিত প্রেক্ষাপটে ওয়েব SQL পাঠ করে তা বাতিল করা হয়েছে৷

  • [ সম্পন্ন।] Chromium 110 (জানুয়ারী 4, 2022) থেকে অনিরাপদ প্রেক্ষাপটে ওয়েব SQL অ্যাক্সেস আর উপলব্ধ নেই। বৈশিষ্ট্যটি ব্যবহার চালিয়ে যাওয়ার জন্য একটি এন্টারপ্রাইজ নীতি Chromium 110 (জানুয়ারি 4, 2022) থেকে Chromium 123 (জানুয়ারি 4, 2022) পর্যন্ত উপলব্ধ৷
  • [ সম্পন্ন।] Chromium 115 (জানুয়ারী 4, 2022) অনুসারে সমস্ত প্রসঙ্গে ওয়েব SQL অ্যাক্সেস বাতিল করা হয়েছে এবং Chrome DevTools ইস্যু প্যানেলে একটি সতর্কতা বার্তা দেখানো হয়েছে।
  • [ আমরা এখানে আছি।] ওয়েব SQL ব্যবহার চালিয়ে যাওয়ার জন্য একটি অবচয় ট্রায়াল Chromium 117 (জানুয়ারী 4, 2022) থেকে Chromium 123 (জানুয়ারি 4, 2022) পর্যন্ত উপলব্ধ। অবচয় ট্রায়াল সম্পর্কে আরও জানতে, মূল ট্রায়াল দিয়ে শুরু করুন দেখুন।

এখান থেকে কোথায় যেতে হবে

ভূমিকাতে যেমন উল্লেখ করা হয়েছে, ওয়েব স্টোরেজ API প্রযুক্তি যেমন localStorage এবং sessionStorage বা IndexedDB স্ট্যান্ডার্ড অনেক ক্ষেত্রেই ভালো বিকল্প, কিন্তু এখন পর্যন্ত সব ক্ষেত্রে নয়।

ওয়েব ডেভেলপারদের কাছে স্টোরেজ ছেড়ে দেওয়ার যুক্তি

Wasm এর আবির্ভাবের সাথে, SQL বা NoSQL সমাধানগুলি ওয়েবে আসতে পারে। একটি উদাহরণ হল DuckDB-Wasm , আরেকটি হল absurd-sql । এই সৃষ্টিগুলির উপর ভিত্তি করে, আমরা অনুভব করি যে বিকাশকারী সম্প্রদায় ব্রাউজার বিক্রেতাদের চেয়ে দ্রুত এবং আরও ভাল নতুন স্টোরেজ সমাধানগুলি পুনরাবৃত্তি করতে এবং তৈরি করতে পারে৷

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

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

ওয়েব SQL অবমূল্যায়ন করার কারণ

স্থায়িত্ব এবং নিরাপত্তা উদ্বেগ

ওয়েব SQL স্পেসিফিকেশন টেকসইভাবে প্রয়োগ করা যায় না, যা উদ্ভাবন এবং নতুন বৈশিষ্ট্য সীমিত করে। স্ট্যান্ডার্ডের শেষ সংস্করণটি আক্ষরিকভাবে বলে "ব্যবহারকারী এজেন্টদের অবশ্যই Sqlite 3.6.19 দ্বারা সমর্থিত SQL উপভাষা বাস্তবায়ন করতে হবে"

SQLite প্রাথমিকভাবে দূষিত SQL স্টেটমেন্ট চালানোর জন্য ডিজাইন করা হয়নি, তবুও ওয়েব SQL বাস্তবায়নের মানে ব্রাউজারগুলিকে ঠিক এটি করতে হবে। নিরাপত্তা এবং স্থিতিশীলতা সংশোধন করার প্রয়োজন ক্রোমিয়ামে SQLite আপডেট করার নির্দেশ দেয়। এটি ওয়েব এসকিউএল এর SQLite 3.6.19 এর মত আচরণ করার প্রয়োজনীয়তার সাথে সরাসরি বিরোধে আসে।

API আকৃতি

ওয়েব এসকিউএল একটি API যা তার বয়স দেখায়। 2000-এর দশকের শেষের দিকের সন্তান হওয়ার কারণে, এটি "কলব্যাক হেল" এর একটি দুর্দান্ত উদাহরণ হিসাবে নিম্নলিখিত কোড নমুনা ( নোলান লসনের সৌজন্যে ) প্রদর্শন করে৷ আপনি দেখতে পাচ্ছেন, SQL স্টেটমেন্ট ( SQLite SQL উপভাষা ব্যবহার করে) ডাটাবেস পদ্ধতিতে স্ট্রিং হিসাবে পাস করা হয়।

openDatabase(
  // Name
  'mydatabase',
  // Version
  1,
  // Display name
  'mydatabase',
  // Estimated size
  5000000,
  // Creation callback
  function (db) {
    db.transaction(
      // Transaction callback
      function (tx) {
        // Execute SQL statement
        tx.executeSql(
          // SQL statement
          'create table rainstorms (mood text, severity int)',
          // Arguments
          [],
          // Success callback
          function () {
            // Execute SQL statement
            tx.executeSql(
              // SQL statement
              'insert into rainstorms values (?, ?)',
              // Arguments
              ['somber', 6],
              // Success callback
              function () {
                // Execute SQL statement
                tx.executeSql(
                  // SQL statement
                  'select * from rainstorms where mood = ?',
                  // Arguments
                  ['somber'],
                  // Success callback
                  function (tx, res) {
                    // Do something with the result
                    var row = res.rows.item(0);
                    console.log(
                      'rainstorm severity: ' +
                        row.severity +
                        ',  my mood: ' +
                        row.mood,
                    );
                  },
                );
              },
            );
          },
        );
      },
      // Error callback
      function (err) {
        console.log('Transaction failed!: ' + err);
      },
      // Success callback);
      function () {
        console.log('Transaction succeeded!');
      },
    );
  },
);

আপনি যদি এই কোডটি চালাতেন এবং Chrome DevTools এর সাথে তৈরি করা টেবিলটি পরিদর্শন করেন , তাহলে এটি হল ফলাফল:

Chrome DevTools-এ ওয়েব এসকিউএল সেকশন পরিদর্শন করলে কলামের মুড (টেক্সচুয়াল) এবং তীব্রতা (পূর্ণসংখ্যা) সহ রেইনস্টর্মস নামের একটি টেবিল সহ mydatabase নামক একটি ডাটাবেস দেখায় যেটির একটি এন্ট্রি রয়েছে একটি স্থূল মেজাজ এবং ছয়টির তীব্রতা।

বাস্তবায়নকারী সমর্থনের অভাব

রহস্যময় API আকৃতি ছাড়াও (অন্তত আজকের দৃষ্টিকোণ থেকে), এসকিউএল-এ ওয়েব এসকিউএল তৈরি করা নিয়ে মজিলার অনেক উদ্বেগ ছিল:

"আমরা মনে করি না যে [SQLite] সাধারণ ওয়েব বিষয়বস্তুতে উন্মোচিত একটি API-এর জন্য সঠিক ভিত্তি, অন্ততপক্ষে নয় কারণ সেখানে একটি নির্ভরযোগ্য, ব্যাপকভাবে স্বীকৃত মান নেই যা SQL একটি দরকারী উপায়ে উপসেট করে। উপরন্তু, আমরা আমি SQLite-এ পরিবর্তনগুলিকে পরবর্তীতে ওয়েবকে প্রভাবিত করতে চাই না, এবং SQLite-তে বড় ব্রাউজার রিলিজ (এবং একটি ওয়েব স্ট্যান্ডার্ড) ব্যবহার করা বুদ্ধিমানের কাজ বলে মনে করবেন না।"

আপনি প্রাক্তন মজিলান ভ্লাদিমির Vukićević এর ব্লগ পোস্টে Mozilla এর উদ্বেগ সম্পর্কে পড়তে পারেন। আরও কিছু ইতিহাসের জন্য, W3C ওয়েব অ্যাপ্লিকেশন ওয়ার্কিং গ্রুপ মিনিট (এবং, আপনি যদি সত্যিই বিশদে যেতে চান, IRC লগগুলি পড়ুন) এবং মেইলিং তালিকা সংরক্ষণাগারগুলি দেখুন)। উপরন্তু, নোলান লসনের ব্লগ পোস্ট কি ঘটেছে তার একটি ভাল ওভারভিউ প্রদান করে।

প্রতিক্রিয়া

এই পোস্টে যোগাযোগ করা অবমূল্যায়ন পদক্ষেপ সম্পর্কে আপনার কোনো উদ্বেগ থাকলে, আমাদের blink-dev মেইলিং তালিকায় জানান। এই গ্রুপের সদস্যতা যে কারো জন্য উন্মুক্ত, এবং যে কেউ পোস্ট করতে পারবেন।

স্বীকৃতি

এই নিবন্ধটি জো মেডলি এবং বেন মরস এবং জোশুয়া বেল দ্বারা পর্যালোচনা করা হয়েছে।