আপনার ডাটাবেস প্রোফাইল

Firebase CLI- তে বিল্ট-ইন ডাটাবেস প্রোফাইলার টুল ব্যবহার করে আপনার Firebase Realtime Database এর পারফরম্যান্স পরিমাপ করুন। প্রোফাইলার টুলটি একটি নির্দিষ্ট সময় ধরে আপনার ডাটাবেসের সমস্ত কার্যকলাপ লগ করে এবং তারপর একটি বিস্তারিত রিপোর্ট তৈরি করে। আপনার ডাটাবেসের পারফরম্যান্সের সমস্যা সমাধান করতে, সমস্যাযুক্ত এলাকা চিহ্নিত করতে এবং আনইনডেক্সড কোয়েরি কমাতে এই বিস্তারিত রিপোর্টটি ব্যবহার করুন।

একটি প্রোফাইল তৈরি করুন

  1. আপনার Firebase Realtime Database প্রোফাইলিং শুরু করার আগে, নিশ্চিত করুন যে আপনি Firebase সিএলআই -এর সর্বশেষ সংস্করণ ব্যবহার করছেন এবং যে ডেটাবেস ও প্রজেক্টটি প্রোফাইল করতে চান তার জন্য এটি ইনিশিয়ালাইজ করেছেন। মনে রাখবেন, প্রোফাইল করার জন্য আপনাকে অবশ্যই সেই প্রজেক্টের একজন এডিটর বা মালিক হতে হবে।

  2. নিম্নলিখিত কমান্ডটি ব্যবহার করে আপনার ডাটাবেস প্রোফাইলিং শুরু করুন:

    firebase database:profile
    প্রোফাইলারটি আপনার ডেটাবেস থেকে অপারেশনগুলো রেকর্ড করার এবং প্রোফাইল তৈরি করার সময় একটি স্ট্যাটাস মেসেজ প্রদর্শন করে।

  3. প্রোফাইলটি সম্পূর্ণ করতে এবং ফলাফল দেখতে এন্টার চাপুন।

আপনার ফলাফল ব্যাখ্যা করুন

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

গতি

স্পিড রিপোর্ট প্রতিটি অপারেশন টাইপের জন্য সার্ভারের রেসপন্স টাইম (মিলিসেকেন্ডে) পরিমাপ করে। তবে, স্পিড রিপোর্টে পরিমাপ করা গতি এন্ড-ইউজারদের প্রকৃত অভিজ্ঞতার গতির প্রতিফলন নাও হতে পারে। নেটওয়ার্কের অবস্থাসহ বিভিন্ন কারণ ক্লায়েন্ট সাইডে ল্যাটেন্সি বাড়িয়ে দিতে পারে।

স্পিড রিপোর্টে নিম্নলিখিত বৈশিষ্ট্যগুলো অন্তর্ভুক্ত রয়েছে:

  • পাথ: আপনার ডাটাবেসের সেই পাথ যেখানে অপারেশনগুলো সংঘটিত হয়েছে। যদি ২৫টির বেশি চাইল্ড নোড থাকে, তাহলে প্রোফাইলার টুল সেগুলোকে একটি প্যারেন্ট পাথে একত্রিত করে এবং একটি $wildcard মার্কার যোগ করে। আপনি রিপোর্টে আপনার ডাটাবেসের রুট ডিরেক্টরি দেখতে পারেন, যা একটি ফরওয়ার্ড স্ল্যাশ / দ্বারা চিহ্নিত করা হয়।
  • গণনা: প্রদত্ত পাথে সংঘটিত অপারেশনের সংখ্যা।
  • গড় নির্বাহ গতি: ঐ নির্দিষ্ট পাথে থাকা বিশেষ অপারেশন টাইপটি পরিচালনা করার জন্য প্রয়োজনীয় বিজনেস লজিক সম্পাদন করতে সার্ভারের যে গড় সময় লাগে। এখানে পরিমাপ করা সময়কালটি নিচে বর্ণিত 'গড় অপেক্ষারত সময়' দ্বারা পরিমাপ করা সময়ের পর থেকে শুরু হয়।
  • গড় অপেক্ষার সময়: অনুরোধগুলি কার্যকর হওয়ার আগে গড়ে যে সময়টুকু সারিতে থাকে। এই বিলম্ব ক্লায়েন্ট-প্রবর্তিত সমস্ত অনুরোধের ক্ষেত্রেই প্রযোজ্য। মোট সার্ভার-সাইড অনুরোধ লেটেন্সি হলো মোটামুটিভাবে সেই অনুরোধের অপেক্ষার সময় এবং কার্যকর হওয়ার গতির যোগফল।
  • অনুমতি নেই: আপনার ডাটাবেসে ফায়ারবেস ডাটাবেস নিয়ম দ্বারা প্রদত্ত পাথে অবরুদ্ধ অপারেশনের সংখ্যা।
অপারেশনের ধরণ অনুযায়ী গতির প্রতিবেদন
পঠন সম্পাদনের গতি ডাটাবেস থেকে ডেটা পড়ার জন্য ক্লায়েন্টের অনুরোধের ক্ষেত্রে সার্ভারের প্রতিক্রিয়া সময়। রিড এক্সিকিউশন টাইম সাধারণত পঠিত ডেটার পরিমাণের সাথে সমানুপাতিক হয়, কিন্তু ক্যাশে প্রিফেচিং-এর কারণে কিছু ছোট রিডও বিলম্বিত হতে পারে।
লেখার কার্য সম্পাদনের গতি ডাটাবেসে ডেটা লেখার জন্য ক্লায়েন্টের অনুরোধের ক্ষেত্রে সার্ভারের প্রতিক্রিয়া সময়। লেখার কার্য সম্পাদনের সময়, লিখিত ডেটার পরিমাণের সাথে সমানুপাতিক।
সংযোগের কার্য সম্পাদনের গতি ডাটাবেস ক্লায়েন্টদের সাথে সংযোগ স্থাপনের অনুরোধের জন্য সার্ভারের প্রতিক্রিয়া সময়। সংযোগ অনুরোধের লেটেন্সি মূলত সংযোগ ব্যবস্থাপনা সম্পর্কিত ইন-মেমরি সার্ভার-সাইড হিসাবরক্ষণের কারণে হয়ে থাকে।
সম্প্রচার সম্পাদনের গতি

রিয়েলটাইম আপডেটের জন্য প্রদত্ত পাথে লিসেনিং করা ক্লায়েন্টদের কাছে ডেটা বিতরণ করতে সার্ভারের যে সময় লাগে।

ব্রডকাস্ট স্পিড রিপোর্টের ' কাউন্ট ' প্রপার্টিটি মোট কতগুলো ব্রডকাস্ট হয়েছে তার সংখ্যা দেখায়, তথ্য গ্রহণকারী ক্লায়েন্টের সংখ্যা নয়। উদাহরণস্বরূপ, যদি একটি নির্দিষ্ট পাথে ১০টি ক্লায়েন্ট লিসেনিং অবস্থায় থাকে এবং সার্ভারটি সেই ১০টি ক্লায়েন্টের কাছে একটি আপডেট ব্রডকাস্ট করে, তাহলে ব্রডকাস্ট কাউন্টে কেবল ১টি ব্রডকাস্টই প্রতিফলিত হবে, যদিও ১০টি ক্লায়েন্ট ডেটাটি গ্রহণ করেছে।

'Permission Denied ' প্রপার্টিটি 'Broadcast Speed' রিপোর্টে অন্তর্ভুক্ত করা হয় না।

ব্যান্ডউইথ

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

ব্যান্ডউইথ রিপোর্টে নিম্নলিখিত বৈশিষ্ট্যগুলো অন্তর্ভুক্ত রয়েছে:

  • পাথ: আপনার ডাটাবেসের সেই পাথ যেখানে অপারেশনগুলো সংঘটিত হয়েছে। যদি ২৫টির বেশি চাইল্ড নোড থাকে, তাহলে প্রোফাইলার টুল সেগুলোকে একত্রিত করে একটি প্যারেন্ট পাথ তৈরি করে।

  • মোট: প্রদত্ত পাথে সমস্ত অপারেশন জুড়ে ব্যবহৃত মোট বহির্গামী বা আগত বাইট।

  • গণনা: প্রদত্ত পাথে সংঘটিত অপারেশনের সংখ্যা।

  • গড়: প্রদত্ত পাথে বিভিন্ন অপারেশন জুড়ে ডাউনলোড বা আপলোড করা বাইটের গড় সংখ্যা (বাইট/রাইট বা বাইট/রিড)।

ব্যান্ডউইথ রিপোর্ট
ডাউনলোড করা বাইট রিড এবং ব্রডকাস্ট অপারেশনের মাধ্যমে ব্যবহৃত ডেটা ক্লায়েন্ট SDK এবং REST API-এর মাধ্যমে পাঠানো হয়।
আপলোড করা বাইট ডাটাবেস সার্ভারে আসা রাইট রিকোয়েস্টের মাধ্যমে ডেটা ব্যবহৃত হয়। ডিলিটগুলো রাইট হিসেবে প্রদর্শিত হয় এবং ইনকামিং-এর অধীনে ০ বাইট জায়গা নেয়।

সূচীকৃত নয় এমন কোয়েরি

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

আনইনডেক্সড কোয়েরি রিপোর্টটি নিম্নলিখিত বৈশিষ্ট্যগুলি প্রদর্শন করে:

  • পাথ: আপনার ডাটাবেসের সেই পাথ যেখানে আনইনডেক্সড কোয়েরিগুলো সংঘটিত হয়েছিল।
  • ইনডেক্স: যে নিয়মটি আপনার যোগ করা উচিত আনইনডেক্সড কোয়েরিগুলো সমাধান করার জন্য। ইনডেক্সিং সম্পর্কে আরও জানুন ' আপনার ডেটা ইনডেক্স করুন' অংশে।
  • গণনা: প্রদত্ত পাথে সংঘটিত অসূচীকৃত কোয়েরির সংখ্যা।

উন্নত প্রোফাইলিং

আপনার ডাটাবেস যে সমস্ত অপারেশন পরিচালনা করছে তা দেখতে, ডাটাবেস প্রোফাইল করার সময় নিম্নলিখিতভাবে --raw ফ্ল্যাগটি ব্যবহার করুন:

firebase database:profile --raw

কাঁচা আউটপুটে প্রতিটি অপারেশনের জন্য ক্লায়েন্টের তথ্যও অন্তর্ভুক্ত থাকে, যেমন userAgent স্ট্রিং এবং আইপি অ্যাড্রেস। আপনার Firebase Realtime Database প্রোফাইল করা বিভিন্ন অপারেশন সম্পর্কে আরও জানতে Firebase Realtime Database অপারেশন টাইপস” দেখুন।

প্রোফাইলার টুল: এটি কোনো বিলিং টুল নয়

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

নিচে ফায়ারবেস দ্বারা বিল করা নেটওয়ার্ক ট্র্যাফিকের কিছু সাধারণ উদাহরণ দেওয়া হলো, যা আপনার ডাটাবেস প্রোফাইলে অন্তর্ভুক্ত নয়:

  • প্রোটোকল ওভারহেড: একটি সেশন স্থাপন এবং বজায় রাখার জন্য সার্ভার এবং ক্লায়েন্টদের মধ্যে কিছু অতিরিক্ত ট্র্যাফিকের প্রয়োজন হয়। অন্তর্নিহিত প্রোটোকলের উপর নির্ভর করে, এই ট্র্যাফিকের মধ্যে অন্তর্ভুক্ত থাকতে পারে: ফায়ারবেস রিয়েলটাইম ডেটাবেসের রিয়েলটাইম প্রোটোকল ওভারহেড, ওয়েবসকেট ওভারহেড, এবং HTTP হেডার ওভারহেড। প্রতিবার একটি সংযোগ স্থাপন করার সময়, এই ওভারহেড, যেকোনো SSL এনক্রিপশন ওভারহেডের সাথে মিলিত হয়ে, সংযোগ খরচে অবদান রাখে। যদিও এটি সাধারণত খুব বেশি ব্যান্ডউইথ নয়, তবে আপনার পেলোডগুলি খুব ছোট হলে বা আপনি ঘন ঘন, স্বল্প সময়ের সংযোগ স্থাপন করলে এটি যথেষ্ট হতে পারে।
  • SSL এনক্রিপশন ওভারহেড: নিরাপদ সংযোগের জন্য প্রয়োজনীয় SSL এনক্রিপশন ওভারহেডের সাথে একটি খরচ জড়িত থাকে। গড়ে, এই খরচ প্রাথমিক হ্যান্ডশেকের জন্য প্রায় ৩.৫ কিলোবাইট এবং প্রতিটি বহির্গামী বার্তায় TLS রেকর্ড হেডারের জন্য প্রায় ৪০ বাইট। বেশিরভাগ অ্যাপের জন্য, এটি আপনার বিলের একটি ছোট অংশ। তবে, আপনার নির্দিষ্ট ক্ষেত্রে যদি অনেক বেশি SSL হ্যান্ডশেকের প্রয়োজন হয়, তাহলে এটি একটি বড় অংশ হয়ে যেতে পারে। উদাহরণস্বরূপ, যে ডিভাইসগুলো TLS সেশন টিকিট সমর্থন করে না, সেগুলোতে প্রচুর সংখ্যক SSL সংযোগ হ্যান্ডশেকের প্রয়োজন হতে পারে।

আপনার বিল বোঝা ও তার পরিমাণ অনুমান করা সম্পর্কে আরও পড়ুন।