আচরণের পার্থক্য

এই পৃষ্ঠায় Cloud Firestore এবং মঙ্গোডিবি-র মধ্যকার আচরণগত পার্থক্য বর্ণনা করা হয়েছে।

MongoDB ভার্সন অনুযায়ী সমর্থিত ফিচারগুলোর বিস্তারিত বিবরণের জন্য দেখুন:

সংযোগ এবং ডাটাবেস

  • প্রতিটি সংযোগ একটিমাত্র Cloud Firestore ডেটাবেসে সীমাবদ্ধ।
  • ডাটাবেসে সংযোগ করার আগে তা অবশ্যই তৈরি করতে হবে।

নামকরণ

আপনার ডেটা মডেলের অংশগুলোর নামকরণের ক্ষেত্রে নিম্নলিখিত পার্থক্যগুলো প্রযোজ্য।

সংগ্রহ

  • __.*__ এর সাথে মেলে এমন সংগ্রহের নাম সমর্থিত নয়।

ক্ষেত্র

  • __.*__ এর মতো ফিল্ডের নাম সমর্থিত নয়।
  • খালি ফিল্ডের নাম সমর্থিত নয়।

নথি

  • ডকুমেন্টের সর্বোচ্চ আকার ৪ এমআইবি।
  • ফিল্ডের সর্বোচ্চ নেস্টিং গভীরতা হলো ২০। প্রতিটি অ্যারে এবং অবজেক্ট-টাইপ ফিল্ড সামগ্রিক গভীরতায় এক স্তর যোগ করে।

_id

  • শীর্ষ-স্তরের _id ফিল্ডটি অবশ্যই ObjectId, String, 64-বিট পূর্ণসংখ্যা, 32-বিট পূর্ণসংখ্যা, Double, Binary, বা Object হতে হবে। অন্যান্য BSON টাইপ সমর্থিত নয়।

মূল্যবোধ

  • JavaScript, Symbol, DBPointer এবং Undefined BSON টাইপগুলো সমর্থিত নয়।

তারিখ

  • তারিখের মান অবশ্যই [0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z] ব্যবধির মধ্যে হতে হবে।

দশমিক ১২৮

  • লেখার সময় NaN , ধনাত্মক অসীম এবং ঋণাত্মক অসীম মানগুলোকে প্রমিত করা হয়।
  • Decimal128-এর উপর গাণিতিক অপারেশন সমর্থিত নয়।

দ্বিগুণ

  • লেখার সময় NaN মানগুলিকে প্রমিত করা হয়।

নিয়মিত অভিব্যক্তি

  • রেগুলার এক্সপ্রেশনের অপশনগুলো অবশ্যই বৈধ ("i", "m", "s", "u", বা "x") হতে হবে এবং কোনো পুনরাবৃত্তি ছাড়া বর্ণানুক্রমিকভাবে প্রদান করতে হবে।

প্রশ্ন

  • স্বাভাবিক সর্ট অর্ডার (সুনির্দিষ্ট সর্ট ছাড়া কোয়েরিগুলোর ক্ষেত্রে) ইনসারশন অর্ডার বা _id অনুযায়ী আরোহী ক্রমের সাথে মেলে না।

সমষ্টি

  • সমষ্টি ২৫০টি পর্যায়ে সীমাবদ্ধ।
  • $merge এবং $out স্টেজগুলো সমর্থিত নয়। সমর্থিত স্টেজ ও অপারেটরগুলোর সম্পূর্ণ তালিকার জন্য কমান্ড সেকশনটি দেখুন।
  • $lookup স্টেজটি let এবং pipeline ফিল্ড সমর্থন করে না।
  • $facet স্টেজটি ইনপুট স্টেজে $rand বা $sample সমর্থন করে না, কারণ এটি একটি volatile এক্সপ্রেশন।

লেখে

  • যেসব ডকুমেন্টের নাম ডলার চিহ্ন ("$") দিয়ে শুরু হয়, সেগুলো update বা findAndModify -এর আপসার্ট ফিচার ব্যবহার করে তৈরি করা যায় না।
  • আপনার কানেকশন স্ট্রিং-এ retryWrites=false অন্তর্ভুক্ত আছে কিনা তা নিশ্চিত করুন (অথবা আপনার ড্রাইভারের জন্য উপযুক্ত পদ্ধতিটি ব্যবহার করুন), যাতে ড্রাইভার এই ফিচারটি ব্যবহার করার চেষ্টা না করে। রিট্রাইয়েবল রাইট সমর্থিত নয়।

লেনদেন

  • স্ন্যাপশট আইসোলেশন এবং সিরিয়ালাইজেবল ট্রানজ্যাকশন সমর্থিত।

  • ডিফল্টরূপে, ট্রানজ্যাকশনগুলো স্ন্যাপশট আইসোলেশন সহ অপটিমিস্টিক কনকারেন্সি কন্ট্রোল ব্যবহার করে।

উদ্বেগ পড়ুন

  • Cloud Firestore snapshot , majority এবং linearizable রিড কনসার্ন সমর্থন করে। ডিফল্ট হলো snapshot , যা স্ন্যাপশট আইসোলেশনকে বোঝায়।

    যখন অ্যাপ্লিকেশনটির কঠোর সামঞ্জস্যতা প্রয়োজন এবং রাইট স্কিউ অ্যানোমালি প্রতিরোধ করতে হয়, তখন linearizable ব্যবহার করুন। অন্যান্য ওয়ার্কলোডের ক্ষেত্রে, snapshot পারফরম্যান্স উন্নত করতে এবং ট্রানজ্যাকশন কনটেনশন কমাতে পারে।

উদ্বেগ লিখুন

  • শুধুমাত্র w: 'majority' এবং w: 1 রাইট কনসার্ন সমর্থিত।

পড়ার পছন্দ

  • শুধুমাত্র primary , primaryPreferred , primary_preferred , secondary_preferred এবং nearest read concerns সমর্থিত।

সূচক

  • ওয়াইল্ডকার্ড ইনডেক্স সমর্থিত নয়।
  • Cloud Firestore স্বয়ংক্রিয়ভাবে _id এর উপর ইনডেক্স তৈরি করে না, তবে এটি নিশ্চিত করে যে একটি কালেকশনের মধ্যে _id এর মানগুলো অনন্য থাকে।
  • যেসব ইনডেক্সে মাল্টি-কি সক্রিয় করা নেই, সেগুলো রাইট অপারেশনের ভিত্তিতে স্বয়ংক্রিয়ভাবে মাল্টি-কি ইনডেক্সে পরিবর্তিত হয় না। ইনডেক্স তৈরি করার সময় আপনাকে অবশ্যই মাল্টি-কি সক্রিয় করতে হবে এবং এই অপশনটি পরিবর্তন করা যায় না।

ত্রুটি

  • Cloud Firestore এবং মঙ্গোডিবি-র মধ্যে ত্রুটি কোড এবং বার্তা ভিন্ন হতে পারে।

কমান্ড

নির্দিষ্ট কমান্ডগুলোর ক্ষেত্রে নিম্নলিখিত আচরণগত পার্থক্যগুলো প্রযোজ্য।

  • নিম্নলিখিত সারণিতে তালিকাভুক্ত নয় এমন কমান্ডগুলি অসমর্থিত।
  • বেশিরভাগ কমান্ডে comment গৃহীত হলেও তা উপেক্ষা করা হয়।
  • maxTimeMS বেশিরভাগ কমান্ডে গৃহীত হয়, কিন্তু এটি উপেক্ষা করা হতে পারে।

প্রশ্ন ও লেখা

আদেশ অসমর্থিত ক্ষেত্র

find

  • max
  • min
  • returnKey
  • showRecordId
  • tailable
  • oplogReplay
  • noCursorTimeout
  • awaitData
  • allowPartialResults
  • collation
  • allowDiskUsage
  • let

aggregate

  • collation
  • let

insert

(কিছুই না)

update

একটি আপডেট বিবৃতির মধ্যে:

  • collation

delete

একটি ডিলিট স্টেটমেন্টের মধ্যে:

  • collation

findAndModify

  • collation
  • let

count

  • collation

distinct

  • collation

getMore

  • comment

killCursors

(কিছুই না)

explain

(কিছুই না)

লেনদেন এবং অধিবেশন

আদেশ অসমর্থিত ক্ষেত্র

commitTransaction

(কিছুই না)

abortTransaction

(কিছুই না)

endSessions

(কিছুই না)

প্রশাসন

আদেশ অসমর্থিত ক্ষেত্র নোট

listDatabases

  • authorizedDatabases
filter প্রদান করা হলে তা অবশ্যই খালি থাকতে হবে।

listCollections

(কিছুই না)

প্রদান করা হলে authorizedCollections অবশ্যই false হতে হবে।

listIndexes

(কিছুই না)

createIndexes

(কিছুই না)

dropIndexes

(কিছুই না)

createCollection

  • timeseries
  • expireAfterSeconds
  • clusteredIndex
  • changeStreamPreAndPostImages
  • size
  • max
  • storageEngine
  • validator
  • validationLevel
  • validationAction
  • indexOptionDefaults
  • viewOn
  • pipeline
  • collation
  • encryptedFields
এই কমান্ডটি কোনো কাজ করে না।

প্রদান করা হলে capped অবশ্যই false হতে হবে।

এরপর কী?