এই পৃষ্ঠায় নেটিভ মোড ডেটাবেসে ডেটা অ্যাক্সেস করার জন্য উপলব্ধ বিভিন্ন ইন্টারফেস ব্যাখ্যা করা হয়েছে।
অপারেশন ইন্টারফেস
নেটিভ মোড ডেটা অ্যাক্সেস করার জন্য দুটি ইন্টারফেস সমর্থন করে:
পাইপলাইন অপারেশন
Cloud Firestore জন্য নতুন কোয়েরি ইন্টারফেস। পাইপলাইন অপারেশনগুলো একটি স্টেজ-ভিত্তিক কম্পোজেবল সিনট্যাক্স সমর্থন করে। আপনি ক্রমানুসারে সম্পাদিত হওয়া ধারাবাহিক স্টেজগুলোর একটি সিরিজ সংজ্ঞায়িত করে একটি অপারেশন তৈরি করেন। এটি জটিল অপারেশনগুলোর সুযোগ করে দেয়, যেমন কোনো অ্যাগ্রিগেশনের ফলাফলের উপর ফিল্টারিং করা, যা আগের মূল ইন্টারফেসে (কোর অপারেশন) সম্ভব ছিল না।
পাইপলাইন অপারেশন শুধুমাত্র ফায়ারস্টোর এন্টারপ্রাইজ সংস্করণে উপলব্ধ এবং এটি প্রিভিউ লঞ্চ পর্যায়ে রয়েছে।
মূল কার্যক্রম
কোর অপারেশনস হলো Cloud Firestore মূল ইন্টারফেস। ডকুমেন্ট পুনরুদ্ধার করার জন্য কোর অপারেশনস ডকুমেন্ট বা কালেকশন রেফারেন্সের উপর মেথড-চেইনিং সিনট্যাক্স ( .where() , .orderBy() , .get() ) ব্যবহার করে। কোয়েরির ধাপগুলোর ক্রম এখানে অন্তর্নিহিত থাকে এবং অ্যাগ্রিগেশন সাপোর্ট সীমিত।
মূল অপারেশনগুলো এন্টারপ্রাইজ এবং স্ট্যান্ডার্ড উভয় সংস্করণেই উপলব্ধ, কিন্তু সংস্করণভেদে ইনডেক্সের ডিফল্ট সেটিংসে অনেক পার্থক্য রয়েছে। বিস্তারিত জানতে পরবর্তী বিভাগটি দেখুন।
সংস্করণগুলির মধ্যে ইন্টারফেসের পার্থক্য
এন্টারপ্রাইজ সংস্করণে নেটিভ মোড সাপোর্ট চালু হওয়ায়, ফায়ারস্টোর কোর এবং পাইপলাইন উভয় অপারেশনই এখন উপলব্ধ। এন্টারপ্রাইজ সংস্করণে কোর অপারেশন ব্যবহার করার সময়, নতুন ইনডেক্স আচরণ এবং মূল্য নির্ধারণ মডেল স্ট্যান্ডার্ড সংস্করণের অনেক সীমাবদ্ধতা দূর করে।
| বৈশিষ্ট্য | স্ট্যান্ডার্ড সংস্করণ | এন্টারপ্রাইজ সংস্করণ |
| সমর্থিত কার্যক্রম | ফায়ারস্টোর কোর অপারেশনের মধ্যে সীমাবদ্ধ। | ফায়ারস্টোর কোর ও পাইপলাইন অপারেশন এবং ফায়ারস্টোর মঙ্গোডিবি কম্প্যাটিবিলিটি অপারেশন সমর্থন করে। |
| সূচীকরণের প্রয়োজনীয়তা | সকল কোয়েরির জন্য ইনডেক্স প্রয়োজন। | কোয়েরির জন্য ইনডেক্সের প্রয়োজন নেই। |
| সূচী তৈরি | একক ফিল্ডের জন্য স্বয়ংক্রিয় ইনডেক্স তৈরি করা হয়। আপনি ম্যানুয়ালি কম্পোজিট ইনডেক্স তৈরি করতে পারেন। | কোনো স্বয়ংক্রিয় ইনডেক্স তৈরি হয় না। ইনডেক্সগুলো ম্যানুয়ালি পরিচালনা করতে হয়। |
| সূচীকৃত ক্ষেত্র | ইনডেক্স করা ফিল্ডগুলোতে যদি আগে থেকে একটি অতিরিক্ত __name__ ফিল্ড উপস্থিত না থাকে, তাহলে তা স্বয়ংক্রিয়ভাবে যুক্ত হয়ে যায়। | ইনডেক্স করা ফিল্ডগুলোর শেষে __name__ স্বয়ংক্রিয়ভাবে যুক্ত হয় না । আপনার অ্যাপ্লিকেশনের জন্য এটি গুরুত্বপূর্ণ হলে, ইনডেক্স করা ফিল্ডগুলোতে আপনাকে স্পষ্টভাবে __name__ উল্লেখ করতে হবে। |
| সাজানোর ক্রম স্বাভাবিকীকরণ | কোয়েরির অর্ডার বাই ক্লজটিকে শেষে ইনইকুয়ালিটি ফিল্ড এবং __name__ ফিল্ড যুক্ত করে নর্মালাইজ করা হয় (যদি আগে থেকে উপস্থিত না থাকে)। এটি অর্ডার বাই ক্লজে অন্য কী কী ফিল্ড আছে তা নির্বিশেষে ফলাফলের একটি অনন্য ও সুনির্দিষ্ট ক্রম নিশ্চিত করে। | সর্ট অর্ডারের কোনো নর্মালাইজেশন নেই। `sort a ASC`-এর মতো একটি সর্ট অর্ডার শুধুমাত্র এটি নিশ্চিত করে যে ফলাফলগুলো `a` ফিল্ড অনুযায়ী সাজানো হয়েছে। Cloud Firestore আপনার বিদ্যমান ইনডেক্সগুলো ব্যবহার করে সম্ভাব্য সবচেয়ে কার্যকর ক্রমে ফলাফল ফেরত দেবে। অতএব, যদি `a` ফলাফল সেটের মধ্যে অনন্য না হয়, তাহলে ইনডেক্স কনফিগারেশন, এক্সিকিউশন স্ট্র্যাটেজি ইত্যাদির উপর নির্ভর করে কোয়েরি ভেদে ফলাফলের ক্রম পরিবর্তিত হতে পারে। ফলাফলের একটি অনন্য, সুনির্দিষ্ট ক্রম নিশ্চিত করতে, আপনাকে সর্ট অর্ডারে `__name__`- এর মতো একটি অনন্য ফিল্ড যোগ করতে হবে। |
| কোয়েরির কর্মক্ষমতা এবং খরচ | ইনডেক্সের প্রয়োজনীয়তার কারণে কোয়েরিগুলো সাধারণত ভালো পারফর্ম করে । | ইনডেক্স তৈরি করে কোয়েরির পারফরম্যান্স ও খরচ অপ্টিমাইজ করুন। আপনি কোয়েরি এক্সপ্লেইন এবং কোয়েরি ইনসাইটস ব্যবহার করে অনুপস্থিত ইনডেক্সগুলো শনাক্ত করতে পারেন। ডেটাসেট বড় হওয়ার সাথে সাথে ইনডেক্স ছাড়া কোয়েরিগুলো অকার্যকর ও ব্যয়বহুল হয়ে পড়ার ঝুঁকি থাকে, যার জন্য পর্যবেক্ষণ ও সমন্বয়ের প্রয়োজন হয়। |
| সূচীকরণ উপরি খরচ | যেহেতু ইনডেক্সগুলো স্বয়ংক্রিয়, তাই ইনডেক্স লেখার জন্য কোনো চার্জ নেই। | একটি সংশ্লিষ্ট ডকুমেন্ট লেখার সময় ইনডেক্স এন্ট্রি লিখতে রাইট ইউনিট খরচ হয় (প্রতি ১ কিলোবাইট ইনডেক্স এন্ট্রির আকারের জন্য ১ রাইট ইউনিট)। প্রতিটি ফিল্ডের জন্য ইনডেক্স এন্ট্রি তৈরি না করার মাধ্যমে আপনি স্টোরেজ খরচ সাশ্রয় করেন। |
| বিলিং মডেল (পঠন/লিখন/মুছে ফেলা) | প্রতিটি নথি পড়া, লেখা এবং মুছে ফেলার জন্য চার্জ প্রযোজ্য। | প্রতিটি রিড এবং রাইটের জন্য (ট্রাঞ্চ) চার্জ করা হয়। রিডের জন্য রিড ইউনিটে (৪ কিলোবাইট ট্রাঞ্চ) চার্জ করা হয়। রাইট এবং ডিলিটকে একত্রিত করে রাইট ইউনিটে (১ কিলোবাইট ট্রাঞ্চ) চার্জ করা হয়। |
| ভিত্তি মূল্য (প্রতি মিলিয়ন) প্রদর্শিত মূল্য us-central1 অঞ্চলের জন্য প্রযোজ্য। | এর মানে হলো: প্রতি ১,০০,০০০ নথিতে ০.০৩ ডলার (বা প্রতি মিলিয়নে ০.৩০ ডলার)। রাইটস: প্রতি ১,০০,০০০ ডকুমেন্টের জন্য $০.০৯ (বা প্রতি মিলিয়নে $০.৯০)। মুছে ফেলার খরচ: প্রতি ১,০০,০০০ ডকুমেন্টের জন্য $০.০১ (অথবা প্রতি মিলিয়নের জন্য $০.১০) | রিড ইউনিট: প্রতি ১০ লক্ষ রিড ইউনিটে $০.০৫ । রাইট ইউনিট: প্রতি ১০ লক্ষ রাইট ইউনিটের জন্য $০.২৬ । স্ট্যান্ডার্ড রিড খরচের তুলনায় ডকুমেন্টের আকার ৪ কিলোবাইটের কম হলে দাম সাধারণত কম হয়। |
| রিয়েল-টাইম আপডেট প্রদর্শিত মূল্যসমূহ us-central1 অঞ্চলের জন্য প্রযোজ্য। | রিয়েলটাইম আপডেটগুলো অন্তর্ভুক্ত এবং প্রতি ১,০০,০০০ ডকুমেন্টের জন্য $০.০৩ হারে 'রিড' হিসেবে বিল করা হয় । | রিয়েলটাইম আপডেটের জন্য একটি নতুন আলাদা SKU (রিয়েলটাইম আপডেট ইউনিট) রয়েছে, যার চার্জ প্রতি ৪ KiB ট্রাঞ্চের জন্য প্রযোজ্য। রিয়েলটাইম আপডেটের খরচ প্রতি মিলিয়ন রিড ইউনিটে $০.৩০ । |