এই পৃষ্ঠায় Cloud Firestore ও MongoDB-এর মধ্যে আচরণগত পার্থক্য বর্ণনা করা হয়েছে।
MongoDB ভার্সনের উপর নির্ভর করে কাজ করে এমন ফিচারের ব্রেকডাউন দেখতে, এখানে যান:
কানেকশন ও ডেটাবেস
- প্রতিটি কানেকশন একটিমাত্র Cloud Firestore ডেটাবেসে সীমাবদ্ধ।
- কানেক্ট করার আগে ডেটাবেস তৈরি করতে হবে।
নামকরণ
আপনার ডেটা মডেলের বিভিন্ন অংশের নামকরণের ক্ষেত্রে নিম্নলিখিত পার্থক্যগুলি প্রযোজ্য।
সংগ্রহ
__.*__-এর সাথে ম্যাচ করে এমন কালেকশনের নাম কাজ করে না।
ফিল্ড
__.*__-এর সাথে ম্যাচ করা ফিল্ডের নাম কাজ করে না।- খালি ফিল্ডের নাম কাজ করে না।
ডকুমেন্ট
- ডকুমেন্টের সর্বাধিক সাইজ হল ১৬ MiB।
- ফিল্ডের সর্বাধিক নেস্টিং ডেপ্থ হল ২০। প্রতিটি অ্যারে এবং অবজেক্ট-টাইপ করা ফিল্ড সামগ্রিক গভীরতায় একটি লেভেল যোগ করে।
- Eventarc ইভেন্টে, ১০ MiB-এর থেকে বড় ডকুমেন্ট ইভেন্ট পেলোডে অন্তর্ভুক্ত করা হয় না।
_id ফিল্ড
- টপ-লেভেল
_idফিল্ডটি অবশ্যই ObjectId, স্ট্রিং, ৬৪-বিট পূর্ণসংখ্যা, ৩২-বিট পূর্ণসংখ্যা, ডবল, বাইনারি বা অবজেক্ট হতে হবে। অন্যান্য BSON টাইপ কাজ করে না।
মান
- জাভাস্ক্রিপ্ট, সিম্বল, DBPointer এবং Undefined BSON টাইপ কাজ করে না।
তারিখ
- তারিখের ভ্যালু অবশ্যই
[0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z]-এর মধ্যে হতে হবে।
Decimal128
NaN, পজিটিভ ইনফিনিটি এবং নেগেটিভ ইনফিনিটি ভ্যালু লেখার সময় ক্যানোনিক্যালাইজ করা হয়।- Decimal128-এ পাটিগণিত সংক্রান্ত অপারেশন কাজ করে না।
দুইটি
NaNভ্যালু লেখার সময় ক্যানোনিক্যালাইজ করা হয়।
রেগুলার এক্সপ্রেশন
- রেগুলার এক্সপ্রেশন বিকল্প অবশ্যই সঠিক ("i", "m", "s", "u" বা "x") এবং বর্ণানুক্রমিকভাবে পুনরাবৃত্তি না করে প্রদান করতে হবে।
কোয়েরি
- ন্যাচারাল সর্ট অর্ডার (স্পষ্ট সর্ট ছাড়া কোয়েরি)
ইনসার্শন অর্ডার বা
_id-এর হিসেবে ছোট থেকে বড় ক্রমে সাজানোর সাথে মেলে না।
এগ্রিগেশন
- অ্যাগ্রিগেশন ২৫০টি স্টেজের মধ্যে সীমিত।
$mergeএবং$outস্টেজ কাজ করে না। কাজ করে এমন স্টেজ ও অপারেটরের সম্পূর্ণ তালিকা দেখতে কমান্ড বিভাগ দেখুন।$facetস্টেজে ইনপুট স্টেজে$randবা$sampleকাজ করে না কারণ এটি একটি পরিবর্তনশীল এক্সপ্রেশন।
লেখেন
- ডলার চিহ্ন ("$") দিয়ে শুরু হওয়া নামের ডকুমেন্ট
updateবাfindAndModify-এর আপসার্ট ফিচার ব্যবহার করে তৈরি করা যাবে না। - আপনার কানেকশন স্ট্রিংয়ে
retryWrites=false(অথবা আপনার ড্রাইভারের জন্য উপযুক্ত পদ্ধতি ব্যবহার করুন) অন্তর্ভুক্ত আছে কিনা তা নিশ্চিত করুন যাতে ড্রাইভার এই ফিচারটি ব্যবহার করার চেষ্টা না করে। আবার চেষ্টা করা যায় এমন রাইট কাজ করে না।
লেনদেন
স্ন্যাপশট আইসোলেশন ও সিরিয়ালাইজেবল ট্রানজ্যাকশন কাজ করে।
ডিফল্ট হিসেবে, ট্রানজ্যাকশন স্ন্যাপশট আইসোলেশনের সাথে অপ্টিমিস্টিক কনকারেন্সি কন্ট্রোল ব্যবহার করে।
উদ্বেগ সংক্রান্ত ডেটা দেখার অনুমতি দিন
Cloud Firestore,
snapshot,majorityএবংlinearizableপড়ার ব্যাপারে উদ্বেগ সমর্থন করে। ডিফল্ট হলsnapshotযা স্ন্যাপশট আইসোলেশনকে বোঝায়।অ্যাপ্লিকেশনের জন্য কঠোর সামঞ্জস্যের প্রয়োজন হলে এবং রাইট স্কিউ অ্যানোমালি প্রতিরোধ করতে হলে
linearizableব্যবহার করুন। অন্যান্য ওয়ার্কলোডের জন্য,snapshotপারফর্ম্যান্স উন্নত করতে এবং ট্রানজ্যাকশন সংক্রান্ত সমস্যা কমাতে পারে।
সমস্যা লিখুন
- শুধুমাত্র
w: 'majority'এবংw: 1রাইট কনসার্ন কাজ করে।
পড়ার পছন্দ
- শুধুমাত্র
primary,primaryPreferred,primary_preferred,secondary_preferredএবংnearest-এর রিড কনসার্ন কাজ করে।
ইন্ডেক্স
- ওয়াইল্ডকার্ড ইন্ডেক্স কাজ করে না।
- Cloud Firestore অটোমেটিক
_id-এ কোনও ইন্ডেক্স তৈরি করে না, তবে এটি নিশ্চিত করে যে_id-এর ভ্যালু কোনও কালেকশনের মধ্যে অনন্য। একই ধরনের সাজানোর আচরণ অর্জন করতে, আপনাকে স্পষ্টভাবে_idফিল্ডে একটি অর্ডার করা ইনডেক্স তৈরি করতে হবে। তবে, সম্ভাব্য হটস্পট সমস্যা সম্পর্কে সতর্ক থাকুন, বিশেষ করে যদি আপনার_idমান একঘেয়েভাবে বৃদ্ধি পায় বা হ্রাস পায় (যেমন, টাইমস্ট্যাম্প), কারণ এটি স্কেলে কর্মক্ষমতাকে প্রভাবিত করতে পারে। - মাল্টি-কী চালু না থাকা ইন্ডেক্স, রাইট অপারেশনের ভিত্তিতে অটোমেটিক মাল্টি-কী ইন্ডেক্সে পরিবর্তিত হয় না। আপনি ইন্ডেক্স তৈরি করার সময় আপনাকে অবশ্যই মাল্টি-কী চালু করতে হবে এবং বিকল্পটি পরিবর্তন করা যাবে না।
সমস্যা
- Cloud Firestore এবং MongoDB-এর মধ্যে এরর কোড ও মেসেজ আলাদা হতে পারে।
কমান্ড
নির্দিষ্ট কমান্ডের ক্ষেত্রে নিম্নলিখিত আচরণগত পার্থক্য প্রযোজ্য।
- নিম্নলিখিত টেবিলে তালিকাভুক্ত নয় এমন কমান্ড কাজ করে না।
commentবেশিরভাগ কমান্ডের ক্ষেত্রে গ্রহণ করা হলেও উপেক্ষা করা হয়।maxTimeMSবেশিরভাগ কমান্ডের ক্ষেত্রে গ্রহণ করা হয়, তবে উপেক্ষা করা হতে পারে।
কোয়েরি
এবং লেখে
| কমান্ড | কাজ করে না এমন ফিল্ড |
|---|---|
|
|
|
|
|
|
|
|
(কিছু নেই) |
|
|
আপডেট স্টেটমেন্টের মধ্যে:
|
|
|
মুছে ফেলার স্টেটমেন্টের মধ্যে:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(কিছু নেই) |
|
|
(কিছু নেই) |
লেনদেন
এবং সেশন
| কমান্ড | কাজ করে না এমন ফিল্ড |
|---|---|
|
|
(কিছু নেই) |
|
|
(কিছু নেই) |
|
|
(কিছু নেই) |
অ্যাডমিনিস্ট্রেশন
| কমান্ড | কাজ করে না এমন ফিল্ড | Notes |
|---|---|---|
|
|
|
filter উল্লেখ করা হলে তা খালি রাখতে হবে। |
|
|
(কিছু নেই) |
প্রদান করা হলে, authorizedCollections অবশ্যই ফলস হতে হবে। |
|
|
(কিছু নেই) |
|
|
|
(কিছু নেই) |
|
|
|
(কিছু নেই) |
|
|
|
|
এই কমান্ডটি কোনও অপারেশন নয়।capped প্রদান করা হলে অবশ্যই মিথ্যা হতে হবে।
|
|
|
(কিছু নেই) |
ড্রপ কালেকশন সংক্রান্ত সীমাবদ্ধতা
আপনি কোনও কালেকশন ড্রপ করলে নিম্নলিখিত সীমাবদ্ধতা প্রযোজ্য হয়:
- সাইজের সীমা: বড় কালেকশন ড্রপ করলে কানেকশন টাইমআউট হতে পারে। টাইমআউট দেখতে পেলে কানেকশনের সময়সীমা বাড়ান। বিকল্প হিসেবে আপনি বাল্ক ডিলিট ব্যবহার করতে পারেন।
- ইভেন্ট:
dropকমান্ড ব্যবহার করার সময় Eventarc-এর জন্য ড্রপ কালেকশন ইভেন্ট তৈরি করা হয় না।
এর পরে কী করতে হবে
- কুইকস্টার্ট: ডেটাবেস তৈরি করে সেটির সাথে কানেক্ট করুন রান করুন।
- কাজ করে এমন ফিচারের সম্পূর্ণ তালিকা দেখতে, কাজ করে এমন MongoDB ডেটার ধরন, ড্রাইভার ও ফিচার দেখুন।