ফায়ারস্টোর নেটিভ মোড ওভারভিউ

ফায়ারস্টোর নেটিভ মোডে দুটি সেট অপারেশন থাকে - ফায়ারস্টোর কোর এবং ফায়ারস্টোর পাইপলাইন অপারেশন।

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

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

ফায়ারস্টোর কোর অপারেশনের বৈশিষ্ট্য

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

কার্যকারিতা এবং ধারাবাহিকতা

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

কাস্টম ইন্ডেক্সিং

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

বিলিং মডেল (ইউনিট-ভিত্তিক)

প্রতি ডকুমেন্টের সংখ্যার পরিবর্তে ৪KB ট্রাঞ্চে পঠন ইউনিট চার্জ করা হয়। একটি বৃহৎ সংগ্রহ স্ক্যান না করা একটি আনইনডেক্সড কোয়েরি সমস্ত ডকুমেন্টের স্ক্যান করা মোট বাইটগুলির উপর ভিত্তি করে পঠন ইউনিট খরচ করবে। লেখার ইউনিট ১KB ট্রাঞ্চে পঠন ইউনিট চার্জ করা হয়। একটি ডকুমেন্ট লেখার জন্য ডেটার জন্য ইউনিট খরচ হয় এবং আপডেট করা প্রতিটি ইনডেক্স এন্ট্রির জন্য অতিরিক্ত ইউনিট খরচ হয়। স্ট্যান্ডার্ড সংস্করণের বিপরীতে, যা স্বয়ংক্রিয় একক-ক্ষেত্র সূচীকরণ জোরদার করে, আপনি এখন লেখার খরচ এবং কর্মক্ষমতা অপ্টিমাইজ করার জন্য সূচীকরণের জন্য নির্দিষ্ট ক্ষেত্রগুলি বেছে নিতে পারেন।

ফায়ারস্টোর পাইপলাইন পরিচালনার বৈশিষ্ট্য

পাইপলাইন অপারেশন সহ ফায়ারস্টোর এন্টারপ্রাইজ সংস্করণটি একটি উন্নত কোয়েরি ইঞ্জিন ব্যবহার করে যা ফায়ারস্টোর স্ট্যান্ডার্ড সংস্করণের অনেক বিদ্যমান সীমাবদ্ধতা দূর করে। ফায়ারস্টোর পাইপলাইন অপারেশন শত শত অতিরিক্ত কোয়েরি বৈশিষ্ট্য প্রদান করে। ফায়ারস্টোর পাইপলাইন অপারেশনগুলিতে নিম্নলিখিত ক্ষমতা রয়েছে:

পর্যায়-ভিত্তিক কম্পোজেবল সিনট্যাক্স

পাইপলাইন কোয়েরিগুলি ধারাবাহিক পর্যায়ের একটি সিরিজ সংজ্ঞায়িত করে তৈরি করা হয় যা ক্রমানুসারে সম্পাদিত হয়। এটি জটিল ক্রিয়াকলাপের জন্য অনুমতি দেয়, যেমন একটি সমষ্টির ফলাফলের উপর ফিল্টারিং, যা আগে সম্ভব ছিল না।

নিম্নলিখিত উদাহরণে একটি পাইপলাইন কোয়েরি দেখানো হয়েছে যা গত মাসে দেখা অনন্য পণ্য আইডির সংখ্যা খুঁজে বের করে:

guard let cutoffDate = Calendar.current.date(byAdding: .month, value: -1, to: Date()) else {
  return
}
let snapshot = try await db.pipeline()
  .collection("productViews")
  .where(Field("viewedAt").greaterThan(cutoffDate.timeIntervalSince1970))
  .aggregate([Field("productId").countDistinct().as("uniqueProductViews")])
  .execute()

বর্ধিত ক্ষমতা

পাইপলাইনস কোয়েরি বিপুল সংখ্যক নতুন ক্ষমতার পরিচয় করিয়ে দেয়, যার মধ্যে রয়েছে:

  • সমষ্টি: নতুন সমষ্টি ফাংশন (যেমন sum(...) , min(...) , এবং count_distinct(...) ) এর সাথে নির্বিচারে গ্রুপিং ফিল্ডের জন্য সমর্থন।
  • জটিল ফিল্টারিং: জটিল where(...) বিবৃতিগুলিকে নির্বিচারে প্রকাশ করার জন্য শত শত অতিরিক্ত ফাংশনের জন্য সমর্থন, যার মধ্যে রয়েছে regex_match(...) , add(...) এবং str_contains(...) , সবই হার্ড ইনডেক্স প্রয়োজনীয়তা ছাড়াই।
  • আংশিক পঠন / অনুমান: select(...) , remove_fields(...) , এবং অন্যান্য অনেক ডকুমেন্ট ম্যানিপুলেশন পর্যায় ব্যবহার করে ডকুমেন্টের গতিশীল উপসেটগুলি পুনরুদ্ধার করুন।

এই ক্ষমতাগুলি সম্পর্কে আরও জানতে, পাইপলাইন অপারেশন সহ কোয়েরি ডেটা দেখুন।

রিয়েলটাইম এবং অফলাইন সাপোর্ট

রিয়েলটাইম এবং অফলাইন ব্যবহার করার জন্য, ডেভেলপাররা ফায়ারস্টোর এন্টারপ্রাইজ সংস্করণে ফায়ারস্টোর কোর অপারেশন ব্যবহার করতে পারেন।

ক্লায়েন্ট এবং টুলিং ইন্টিগ্রেশন

এন্টারপ্রাইজ সংস্করণে পাইপলাইন কোয়েরিগুলির সাথে ইন্টারঅ্যাক্ট এবং পরিচালনা করার জন্য বিশেষ বৈশিষ্ট্যগুলি অন্তর্ভুক্ত রয়েছে:

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

ফায়ারস্টোর স্ট্যান্ডার্ড এবং ফায়ারস্টোর এন্টারপ্রাইজের মধ্যে পার্থক্য

কোর এবং পাইপলাইন অপারেশনের মধ্যে প্রধান কর্মক্ষম পার্থক্য হল ইনডেক্সিং ব্যবস্থাপনা, যা সরাসরি কর্মক্ষমতা এবং খরচকে প্রভাবিত করে।

ফায়ারস্টোর স্ট্যান্ডার্ড - মূল কার্যক্রম ফায়ারস্টোর এন্টারপ্রাইজ - মূল এবং পাইপলাইন অপারেশন
ইনডেক্সিং প্রয়োজনীয়তা প্রশ্নের জন্য সূচী প্রয়োজন।

পৃথক ক্ষেত্রের জন্য সূচী স্বয়ংক্রিয়ভাবে তৈরি হয়, যখন আরও জটিল প্রশ্নগুলি যৌগিক সূচী বা সংগ্রহ গোষ্ঠী সূচীর উপর নির্ভর করে যা ম্যানুয়ালি কনফিগার করতে হবে।

সূচীপত্রের প্রয়োজন নেই, এবং তাই প্রশ্নের জন্য ঐচ্ছিক।

আপনি প্রয়োজন অনুসারে সূচকগুলি সংজ্ঞায়িত করেন। এন্টারপ্রাইজ সংস্করণটি নন-স্পার্স/স্পার্স এবং ইউনিক সূচক সহ বিস্তৃত ধরণের সূচককেও সমর্থন করে।

কর্মক্ষমতা সূচীবদ্ধ প্রশ্ন: আপনার ফলাফল সেটের আকারের সাথে কর্মক্ষমতা এবং খরচের স্কেল।

আনইনডেক্সড কোয়েরি: আপনার ডেটাসেটের আকারের সাথে পারফরম্যান্স এবং খরচের স্কেল।

সূচীবদ্ধ প্রশ্ন: আপনার ফলাফল সেটের আকারের সাথে কর্মক্ষমতা এবং খরচের স্কেল।

আমরা সূচী তৈরি করতে এবং আপনার প্রশ্নের কর্মক্ষমতা এবং খরচ উন্নত করতে Query Explain এবং Query Insights টুল ব্যবহার করার পরামর্শ দিচ্ছি।

স্টোরেজ খরচের প্রভাব স্বয়ংক্রিয় সূচক এবং যৌগিক সূচক থেকে আপনার স্টোরেজ ওভারহেড খরচ হয়। প্রতিটি ক্ষেত্রের জন্য সূচী স্বয়ংক্রিয়ভাবে তৈরি হয় না বলে আপনি স্টোরেজ খরচ বাঁচান।
খরচের ভিত্তি প্রতিটি ডকুমেন্ট পড়া , লেখা এবং মুছে ফেলার জন্য চার্জ করা হবে। প্রতি রিড ইউনিট (৪ কেবি ট্রাঞ্চ) এবং লেখার ইউনিট (১ কেবি ট্রাঞ্চ) প্রতি চার্জ করা হয়। লেখার সূচক এন্ট্রিগুলি লেখার ইউনিট ব্যবহার করে।

কিছু উদাহরণ সহ নতুন মূল্য সম্পর্কে জানুন।

নিরাপত্তা বিধি নিরাপত্তা বিধিগুলি পঠন/লেখার অনুমতি যাচাই করে সংগ্রহগুলিকে সুরক্ষিত করে। সুরক্ষা বিধিগুলি পঠন/লেখার অনুমতি যাচাই করে সংগ্রহগুলিকে সুরক্ষিত করে। ডেটা মডেল গাইডে পাইপলাইন কোয়েরিগুলিকে সমর্থন করার জন্য আপনার ডেটা কীভাবে মডেল করবেন তা শিখুন।