Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

একাধিক ডাটাবেস সহ স্কেল

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

কখন আপনার ডেটা ছোট করবেন

আপনি যদি রিয়েলটাইম ডাটাবেস ব্যবহার করে থাকেন এবং নিচের যে কোন পরিস্থিতিতে মানানসই হন তাহলে আপনি একাধিক ডেটাবেস জুড়ে আপনার ডেটাকে ছোট করতে চাইতে পারেন:

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

কীভাবে আপনার ডেটাকে ছোট করা যায়

আপনার ডেটা ছোট করার জন্য, এই পদক্ষেপগুলি অনুসরণ করুন (নীচে আরও বিস্তারিতভাবে বর্ণিত):

  1. আপনার অ্যাপের নির্দিষ্ট চাহিদা অনুযায়ী একাধিক ডেটাবেসে আপনার ডেটা ম্যাপ করুন।
  2. একাধিক ডাটাবেস দৃষ্টান্ত তৈরি করুন।
  3. আপনার অ্যাপটি কনফিগার করুন যাতে এটি প্রতিটি ডেটা সেটের জন্য প্রয়োজনীয় রিয়েলটাইম ডেটাবেস দৃষ্টান্তের সাথে সংযুক্ত হয়।

আপনার ডেটা ম্যাপ করুন

যখন আপনি একাধিক ডেটাবেসে আপনার ডেটা ম্যাপ করছেন, নিম্নলিখিত শর্তগুলি পূরণ করার চেষ্টা করুন:

  • প্রতিটি ক্যোয়ারী শুধুমাত্র একটি একক ডাটাবেস দৃষ্টান্তের বিরুদ্ধে চলে। রিয়েলটাইম ডেটাবেস ডাটাবেস দৃষ্টান্ত জুড়ে প্রশ্ন সমর্থন করে না।
  • ডাটাবেস দৃষ্টান্ত জুড়ে ডেটা ভাগ করা বা নকল করা (অথবা ন্যূনতম ভাগ করা বা সদৃশকরণ)।
  • প্রতিটি অ্যাপের দৃষ্টান্ত যে কোনো মুহূর্তে শুধুমাত্র একটি ডাটাবেসের সাথে সংযুক্ত হয়।

আপনি যখন আপনার ডেটা ম্যাপ করছেন, নিম্নলিখিত কৌশলগুলি প্রয়োগ করার কথা বিবেচনা করুন:

একটি "মাস্টার শার্ড" তৈরি করুন

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

বিভাগ দ্বারা বা গ্রাহক দ্বারা বাকেট ডেটা

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

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

তারপরে আপনি আগাম বেশ কয়েকটি ডাটাবেস উদাহরণ তৈরি করতে পারেন এবং সংস্থার আইডি ব্যবহার করে একটি দলকে তার ডাটাবেস দৃষ্টান্তে ম্যাপ করতে পারেন। উদাহরণস্বরূপ, রিয়েলটাইম ডাটাবেস এ -তে সংগঠন এ ম্যাপ।

আপনি আপনার অ্যাপের জন্য ডেটা ম্যাপ করার উপায় আপনার নির্দিষ্ট ব্যবহারের ক্ষেত্রে নির্ভর করে, কিন্তু উপরে বর্ণিত শর্ত এবং কৌশলগুলি আপনাকে আপনার ডেটার জন্য কী কাজ করে তা নির্ধারণ করতে সাহায্য করতে পারে।

একাধিক রিয়েলটাইম ডাটাবেস উদাহরণ তৈরি করুন

আপনার উপর হন, তাহলে আলোকচ্ছটা মূল্যের পরিকল্পনা , আপনি একই Firebase প্রকল্পে একাধিক ডাটাবেসের দৃষ্টান্ত তৈরি করতে পারেন।

ডাটাবেস বিভাগে প্রসঙ্গ মেনু সহ ফায়ারবেস কনসোলে একটি ডাটাবেস তৈরি করুন

  1. Firebase কনসোলে, ডেটা ট্যাবে যান বিকাশ> ডাটাবেস অধ্যায়।
  2. রিয়েলটাইম ডাটাবেস বিভাগে মেনু থেকে নতুন ডাটাবেস তৈরি করুন নির্বাচন করুন।
  3. আপনার ডাটাবেজ রেফারেন্স এবং কাস্টমাইজ করুন সিকিউরিটি নিয়ম , তাহলে এটি পেয়েছেন ক্লিক করুন।

আপনার প্রয়োজন মত অনেক ডাটাবেস দৃষ্টান্ত তৈরি করতে প্রক্রিয়াটি পুনরাবৃত্তি করুন। প্রতিটি ডাটাবেসের দৃষ্টান্তের নিজস্ব ফায়ারবেস রিয়েলটাইম ডাটাবেস রুলস রয়েছে, যাতে আপনি আপনার ডেটা অ্যাক্সেস করতে পারেন।

তৈরি এবং Firebase কনসোল বা ব্যবহারে ডাটাবেসের দৃষ্টান্ত পরিচালনা করতে পারেন রিয়েলটাইম ডাটাবেজ ম্যানেজমেন্ট বিশ্রাম এপিআই

প্রতিটি উদাহরণের জন্য রিয়েলটাইম ডাটাবেস নিয়ম সম্পাদনা এবং স্থাপন করুন

নিশ্চিত করুন যে আপনার রিয়েলটাইম ডেটাবেস নিয়মগুলি আপনার প্রকল্পের প্রতিটি ডাটাবেসের ক্ষেত্রে যথাযথ অ্যাক্সেসের অনুমতি দেয়। প্রতিটি ডাটাবেসের নিয়ম, যা আপনি Firebase কনসোলে বা ব্যবহার থেকে সম্পাদনা করতে এবং স্থাপন করতে তার নিজস্ব সেট আছে লক্ষ্যমাত্রা স্থাপন করতে Firebase CLI

  • Firebase কনসোল থেকে নিয়ম সম্পাদনা এবং স্থাপন করতে, এই ধাপগুলি অনুসরণ করুন:

    1. যান বিধি ট্যাব বিকাশ> ডাটাবেস বিভাগে।
    2. আপনি যে ডাটাবেসটি সম্পাদনা করতে চান তা নির্বাচন করুন, তারপরে নিয়মগুলি সংশোধন করুন।
  • Firebase CLI থেকে নিয়ম সম্পাদনা এবং স্থাপন করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

    1. আপনার ডাটাবেস ইনস্ট্যান্স জন্য নিয়ম ফাইলের মধ্যে নিয়ম (উদাহরণস্বরূপ, সংশোধন foo.rules.json )।
    2. একই নিয়ম ফাইল ব্যবহার করে এমন ডেটাবেস সংযুক্ত করার জন্য স্থাপনার লক্ষ্যগুলি তৈরি করুন এবং প্রয়োগ করুন। : উদাহরণস্বরূপ
      firebase target:apply database main my-db-1 my-db-2
      firebase target:apply database other my-other-db-3
    3. আপনার আপডেট firebase.json প্রয়োগের লক্ষ্যমাত্রা সঙ্গে কনফিগারেশন ফাইল:

      {
        "database": [
          {"target": "main", "rules": "foo.rules.json"},
          {"target": "other", "rules": "bar.rules.json"}
        ]
      }
      
    4. চালান প্রয়োগের কমান্ড প্রয়োগ করুন:

      firebase deploy

নিশ্চিত করুন যে আপনি ধারাবাহিকভাবে একই জায়গা থেকে নিয়মগুলি সম্পাদনা এবং স্থাপন করছেন। ফায়ারবেস সিএলআই থেকে নিয়ম প্রয়োগ করা ফায়ারবেস কনসোলে আপনার করা যেকোনো সম্পাদনাকে ওভাররাইড করে এবং ফায়ারবেস কনসোলে সরাসরি সম্পাদনা করার নিয়মগুলি ফায়ারবেস সিএলআই -এর মাধ্যমে আপনি যে সাম্প্রতিক পরিবর্তনগুলি স্থাপন করেছেন তা ওভাররাইড করে।

একাধিক ডেটাবেস দৃষ্টান্তের সাথে আপনার অ্যাপ সংযুক্ত করুন

সেকেন্ডারি ডাটাবেস দৃষ্টান্তগুলিতে সংরক্ষিত ডেটা অ্যাক্সেস করতে ডাটাবেস রেফারেন্স ব্যবহার করুন। আপনি ইউআরএল বা অ্যাপের মাধ্যমে একটি নির্দিষ্ট ডাটাবেসের উদাহরণের রেফারেন্স পেতে পারেন। যদি আপনি একটি URL নির্দিষ্ট না করেন, তাহলে আপনি অ্যাপের ডিফল্ট ডাটাবেস উদাহরণের রেফারেন্স পাবেন।

ওয়েব সংস্করণ 9

import { initializeApp } from "firebase/app";
import { getDatabase } from "firebase/database";

const app1 = initializeApp({
  databaseURL: "https://testapp-1234-1.firebaseio.com"
});

const app2 = initializeApp({
  databaseURL: "https://testapp-1234-2.firebaseio.com"
}, 'app2');

// Get the default database instance for an app1
const database1 = getDatabase(app1);

// Get a database instance for app2
const database2 = getDatabase(app2);

ওয়েব সংস্করণ 8

const app1 = firebase.initializeApp({
  databaseURL: "https://testapp-1234-1.firebaseio.com"
});

const app2 = firebase.initializeApp({
  databaseURL: "https://testapp-1234-2.firebaseio.com"
}, 'app2');

// Get the default database instance for an app1
var database1 = firebase.database();

// Get a database instance for app2
var database2 = firebase.database(app2);
সুইফট
// Get the default database instance for an app
var ref: DatabaseReference!

ref = Database.database().reference()
// URL টি Var সুত্র দ্বারা সেকেন্ডারি ডাটাবেস ইনস্ট্যান্স পান: DatabaseReference! ref = Database.database ("https://testapp-1234.firebaseio.com")। রেফারেন্স ()
উদ্দেশ্য গ
// Get the default database instance for an app
@property (strong, nonatomic) FIRDatabaseReference *ref;

self.ref = [[FIRDatabase database] reference];
// URL টি @property দ্বারা সেকেন্ডারি ডাটাবেস ইনস্ট্যান্স পান (শক্তিশালী, nonatomic) FIRDatabaseReference * সুত্র; self.ref = [[FIRDatabase databaseWithURL:@"https://testapp-1234.firebaseio.com"] রেফারেন্স];

জাভা

// Get the default database instance for an app
DatabaseReference primary = FirebaseDatabase.getInstance()
        .getReference();

// Get a secondary database instance by URL
DatabaseReference secondary = FirebaseDatabase.getInstance("https://testapp-1234.firebaseio.com")
        .getReference();

কোটলিন+কেটিএক্স

// Get the default database instance for an app
val primary = Firebase.database.reference

// Get a secondary database instance by URL
val secondary = Firebase.database("https://testapp-1234.firebaseio.com").reference

Firebase CLI ব্যবহার করার সময় একটি উদাহরণ উল্লেখ করুন

ব্যবহার করুন --instance বিকল্প যা Firebase রিয়েলটাইম ডাটাবেস তোমাদের Firebase CLI কমান্ড প্রয়োগ করতে চান তা নির্দিষ্ট করার। উদাহরণস্বরূপ, নামে একটি ডাটাবেস উদাহরণস্বরূপ প্রোফাইলার চালানোর জন্য নিম্নলিখিত কমান্ড প্রয়োগ করুন my-example-shard.firebaseio.com :

firebase database:profile --instance "my-example-shard"

প্রতিটি ডাটাবেসে সংযোগগুলি অপ্টিমাইজ করুন

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

আরো পরামর্শ পান

আপনি আরো একাধিক ডাটাবেসের দৃষ্টান্ত জুড়ে আপনার ডেটা sharding সাহায্যের প্রয়োজন হয়, আমাদের উপর Firebase বিশেষজ্ঞদের কাছে পৌঁছাতে ফসকা চ্যানেল বা স্ট্যাক ওভারফ্লো