ডাটাবেস কর্মক্ষমতা অপ্টিমাইজ করুন

আপনার অ্যাপে Firebase Realtime Database কর্মক্ষমতা উন্নত করার কয়েকটি ভিন্ন উপায় রয়েছে। আপনার Realtime Database কর্মক্ষমতা অপ্টিমাইজ করতে আপনি কী করতে পারেন তা খুঁজে বের করতে, বিভিন্ন Realtime Database মনিটরিং সরঞ্জামগুলির মাধ্যমে ডেটা সংগ্রহ করুন, তারপর সেই অনুযায়ী আপনার অ্যাপ বা Realtime Database ব্যবহারে পরিবর্তন করুন৷

Realtime Database কর্মক্ষমতা নিরীক্ষণ

আপনার প্রয়োজনীয় গ্রানুলারিটির স্তরের উপর নির্ভর করে আপনি কয়েকটি ভিন্ন টুলের মাধ্যমে আপনার Realtime Database কর্মক্ষমতা সম্পর্কে ডেটা সংগ্রহ করতে পারেন:

  • উচ্চ-স্তরের ওভারভিউ: সূচীহীন প্রশ্নের তালিকার জন্য প্রোফাইলার টুল ব্যবহার করুন এবং রিড/রাইট অপারেশনগুলির একটি রিয়েলটাইম ওভারভিউ।
  • বিল করা ব্যবহার অনুমান: আপনার বিল করা ব্যবহার এবং উচ্চ-স্তরের পারফরম্যান্স মেট্রিক্স দেখতে Firebase কনসোলে উপলব্ধ ব্যবহারের মেট্রিকগুলি ব্যবহার করুন৷
  • বিস্তারিত ড্রিলডাউন: সময়ের সাথে সাথে আপনার ডাটাবেস কীভাবে পারফর্ম করছে তা আরও দানাদার দেখার জন্য Cloud Monitoring ব্যবহার করুন।

মেট্রিক দ্বারা কর্মক্ষমতা উন্নত

একবার আপনি ডেটা সংগ্রহ করার পরে, আপনি যে পারফরম্যান্সের ক্ষেত্রে উন্নতি করতে চান তার উপর ভিত্তি করে নিম্নলিখিত সেরা অনুশীলন এবং কৌশলগুলি অন্বেষণ করুন৷

এক নজরে কর্মক্ষমতা উন্নতির কৌশল
মেট্রিক বর্ণনা সর্বোত্তম অনুশীলন
লোড/ব্যবহার আপনার ডাটাবেসের ক্ষমতার কতটা ব্যবহার করা হয়েছে তা অপ্টিমাইজ করুন যে কোনো নির্দিষ্ট সময়ে (**লোড** বা **io/database_load** মেট্রিক্সে প্রতিফলিত)। আপনার ডেটা স্ট্রাকচার অপ্টিমাইজ করুন
ডাটাবেস জুড়ে সংক্ষিপ্ত তথ্য
শ্রোতার দক্ষতা উন্নত করুন
ক্যোয়ারী-ভিত্তিক নিয়ম সহ ডাউনলোড সীমিত করুন
সংযোগগুলি অপ্টিমাইজ করুন
সক্রিয় সংযোগ 200,000-সংযোগ সীমার নিচে থাকার জন্য আপনার ডাটাবেসের সাথে যুগপত, সক্রিয় সংযোগের সংখ্যা ভারসাম্য রাখুন। ডাটাবেস জুড়ে সংক্ষিপ্ত তথ্য
নতুন সংযোগ কমিয়ে দিন
আউটগোয়িং ব্যান্ডউইথ যদি আপনার ডাটাবেস থেকে ডাউনলোডগুলি আপনার চেয়ে বেশি বলে মনে হয়, তাহলে আপনি আপনার রিড অপারেশনগুলির দক্ষতা উন্নত করতে পারেন এবং এনক্রিপশন ওভারহেড কমাতে পারেন। সংযোগগুলি অপ্টিমাইজ করুন
আপনার ডেটা স্ট্রাকচার অপ্টিমাইজ করুন
ক্যোয়ারী-ভিত্তিক নিয়ম সহ ডাউনলোড সীমিত করুন
SSL সেশন পুনরায় ব্যবহার করুন
শ্রোতার দক্ষতা উন্নত করুন
ডেটা অ্যাক্সেস সীমাবদ্ধ করুন
স্টোরেজ নিশ্চিত করুন যে আপনি অব্যবহৃত ডেটা সঞ্চয় করছেন না, বা কোটার অধীনে থাকার জন্য অন্যান্য ডেটাবেস এবং/অথবা ফায়ারবেস পণ্যগুলিতে আপনার সঞ্চিত ডেটা ভারসাম্য বজায় রাখুন। অব্যবহৃত ডেটা পরিষ্কার করুন
আপনার ডেটা স্ট্রাকচার অপ্টিমাইজ করুন
ডাটাবেস জুড়ে সংক্ষিপ্ত তথ্য
Cloud Storage for Firebase ব্যবহার করুন

সংযোগগুলি অপ্টিমাইজ করুন

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

যখনই সম্ভব, আপনার অ্যাপের প্ল্যাটফর্মের জন্য REST API-এর পরিবর্তে নেটিভ SDK ব্যবহার করুন। SDKগুলি খোলা সংযোগ বজায় রাখে, SSL এনক্রিপশন খরচ এবং ডাটাবেস লোড হ্রাস করে যা REST API এর সাথে যোগ করতে পারে।

আপনি যদি REST API ব্যবহার করেন, তাহলে একটি খোলা সংযোগ বজায় রাখতে একটি HTTP কিপ-লাইভ ব্যবহার করার কথা বিবেচনা করুন বা সার্ভার-প্রেরিত ইভেন্টগুলি ব্যবহার করুন, যা SSL হ্যান্ডশেক থেকে খরচ কমাতে পারে।

একাধিক ডাটাবেস জুড়ে শার্ড ডেটা

একাধিক Realtime Database ইনস্ট্যান্স জুড়ে আপনার ডেটা বিভক্ত করা, অন্যথায় ডাটাবেস শার্ডিং নামে পরিচিত, তিনটি সুবিধা দেয়:

  1. ডাটাবেস দৃষ্টান্ত জুড়ে বিভক্ত করে আপনার অ্যাপে অনুমোদিত মোট যুগপত, সক্রিয় সংযোগ বাড়ান।
  2. ডাটাবেস দৃষ্টান্ত জুড়ে ভারসাম্য লোড.
  3. আপনার যদি ব্যবহারকারীদের স্বতন্ত্র গোষ্ঠী থাকে যাদের শুধুমাত্র বিচ্ছিন্ন ডেটা সেটগুলিতে অ্যাক্সেসের প্রয়োজন হয়, উচ্চ থ্রুপুট এবং কম লেটেন্সির জন্য বিভিন্ন ডাটাবেস উদাহরণ ব্যবহার করুন।

আপনি যদি ব্লেজ প্রাইসিং প্ল্যানে থাকেন, আপনি একই ফায়ারবেস প্রকল্পের মধ্যে একাধিক ডাটাবেস দৃষ্টান্ত তৈরি করতে পারেন, ডাটাবেস দৃষ্টান্ত জুড়ে একটি সাধারণ ব্যবহারকারী প্রমাণীকরণ পদ্ধতি ব্যবহার করে।

কীভাবে এবং কখন ডেটা শার্ড করবেন সে সম্পর্কে আরও জানুন।

দক্ষ ডেটা স্ট্রাকচার তৈরি করুন

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

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

উপরন্তু, প্রতিটি লেখা আপনার মোট ডাটাবেস ব্যবহারের 0.1% নিতে পারে। আপনার ডেটাকে এমনভাবে গঠন করুন যা আপনাকে SDK বা RESTful PATCH অনুরোধের update() পদ্ধতির মাধ্যমে মাল্টি-পাথ আপডেট হিসাবে একটি একক অপারেশনে ব্যাচ লেখার অনুমতি দেয়।

আপনার ডেটা স্ট্রাকচার অপ্টিমাইজ করতে এবং কর্মক্ষমতা উন্নত করতে, ডেটা স্ট্রাকচারের জন্য সর্বোত্তম অনুশীলনগুলি অনুসরণ করুন৷

অননুমোদিত প্রবেশ রোধ করুন

Realtime Database Security Rules সাথে আপনার ডাটাবেসের অননুমোদিত ক্রিয়াকলাপ প্রতিরোধ করুন। উদাহরণস্বরূপ, নিয়মগুলি ব্যবহার করে এমন পরিস্থিতি এড়াতে পারে যেখানে একটি দূষিত ব্যবহারকারী বারবার আপনার সম্পূর্ণ ডাটাবেস ডাউনলোড করে।

ফায়ারবেস রিয়েলটাইম ডেটাবেস নিয়ম ব্যবহার সম্পর্কে আরও জানুন।

ডাউনলোড সীমিত করতে ক্যোয়ারী-ভিত্তিক নিয়ম ব্যবহার করুন

Realtime Database Security Rules আপনার ডাটাবেসের ডেটা অ্যাক্সেসকে সীমাবদ্ধ করে, তবে তারা পঠিত ক্রিয়াকলাপগুলির মাধ্যমে ফিরে আসা ডেটার সীমা হিসাবেও কাজ করতে পারে। যখন আপনি ক্যোয়ারী-ভিত্তিক নিয়ম ব্যবহার করেন, যেমন query. query.limitToFirst এর মত এক্সপ্রেশন, প্রশ্ন শুধুমাত্র নিয়ম দ্বারা আবদ্ধ ডেটা পুনরুদ্ধার করে।

উদাহরণ স্বরূপ, নিম্নোক্ত নিয়মটি অগ্রাধিকার দ্বারা আদেশ অনুসারে একটি প্রশ্নের প্রথম 1000টি ফলাফলে পড়ার অ্যাক্সেসকে সীমাবদ্ধ করে:

messages: {
  ".read": "query.orderByKey &&
            query.limitToFirst <= 1000"
}

// Example query:
db.ref("messages").limitToFirst(1000)
                  .orderByKey("value")

Realtime Database Security Rules সম্পর্কে আরও জানুন।

সূচক প্রশ্ন

আপনার ডেটা ইন্ডেক্স করা আপনার অ্যাপ চালানো প্রতিটি প্রশ্নের জন্য আপনি যে মোট ব্যান্ডউইথ ব্যবহার করেন তা হ্রাস করে।

SSL সেশন পুনরায় ব্যবহার করুন

TLS সেশনের টিকিট ইস্যু করে পুনঃসূচনা সংযোগগুলিতে SSL এনক্রিপশন ওভারহেড খরচ হ্রাস করুন৷ এটি বিশেষভাবে সহায়ক যদি আপনার ঘন ঘন, ডাটাবেসের সাথে নিরাপদ সংযোগের প্রয়োজন হয়।

শ্রোতার দক্ষতা উন্নত করুন

আপনার শ্রোতাদের সিঙ্ক করা ডেটার পরিমাণ সীমিত করতে যতটা সম্ভব পথের নিচে রাখুন। আপনার শ্রোতাদের আপনি যে ডেটা পেতে চান তার কাছাকাছি থাকা উচিত। ডাটাবেস রুটে শুনবেন না, কারণ এর ফলে আপনার সম্পূর্ণ ডাটাবেস ডাউনলোড হবে।

আপনার শ্রবণ ক্রিয়াকলাপগুলি যে ডেটা ফেরত দেয় তা সীমিত করতে প্রশ্নগুলি যুক্ত করুন এবং শ্রোতাদের ব্যবহার করুন যা শুধুমাত্র ডেটাতে আপডেট ডাউনলোড করে — উদাহরণস্বরূপ, once() এর পরিবর্তে on() )। .once() এমন অ্যাকশনের জন্য রিজার্ভ করুন যার জন্য সত্যিই ডেটা আপডেটের প্রয়োজন নেই। উপরন্তু, সর্বোত্তম পারফরম্যান্সের জন্য, যখনই সম্ভব, orderByKey() ব্যবহার করে আপনার প্রশ্নগুলি সাজান। orderByChild() দিয়ে সাজানো 6-8 গুণ ধীর হতে পারে, এবং orderByValue() দিয়ে সাজানো বৃহৎ ডেটা সেটের জন্য খুব ধীর হতে পারে, কারণ এর জন্য পারসিসটেন্স লেয়ার থেকে সম্পূর্ণ অবস্থানের পড়া প্রয়োজন।

শ্রোতাদের গতিশীলভাবে যোগ করার বিষয়েও নিশ্চিত করুন এবং যখন তাদের আর প্রয়োজন হবে না তখন তাদের সরিয়ে দিন।

অব্যবহৃত ডেটা পরিষ্কার করুন

পর্যায়ক্রমে আপনার ডাটাবেসের কোনো অব্যবহৃত বা ডুপ্লিকেট ডেটা মুছে ফেলুন। আপনি আপনার ডেটা ম্যানুয়ালি পরিদর্শন করতে ব্যাকআপ চালাতে পারেন বা পর্যায়ক্রমে Google Cloud Storage বালতিতে ব্যাক আপ করতে পারেন৷ এছাড়াও Cloud Storage for Firebase মাধ্যমে সঞ্চিত ডেটা হোস্ট করার কথা বিবেচনা করুন।

জাহাজ মাপযোগ্য কোড আপনি আপডেট করতে পারেন

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