Catch up on everything we announced at this year's Firebase Summit. Learn more

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

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

কখন আপনার ডেটা ভাগ করবেন

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

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

কীভাবে আপনার ডেটা ভাগ করবেন

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

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

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

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

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

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

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

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

বিভাগ দ্বারা বা গ্রাহক দ্বারা বালতি তথ্য

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

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

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

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

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

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

ডাটাবেস বিভাগে প্রসঙ্গ মেনু সহ 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

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

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

সেকেন্ডারি ডাটাবেস ইনস্ট্যান্সে সংরক্ষিত ডেটা অ্যাক্সেস করতে ডাটাবেস রেফারেন্স ব্যবহার করুন। আপনি URL বা অ্যাপ দ্বারা একটি নির্দিষ্ট ডাটাবেস উদাহরণের জন্য রেফারেন্স পেতে পারেন। আপনি একটি 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);
সুইফট
দ্রষ্টব্য: এই Firebase পণ্য অ্যাপ ক্লিপ লক্ষ্যে পাওয়া যায় না।
// 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").রেফারেন্স()
উদ্দেশ্য গ
দ্রষ্টব্য: এই Firebase পণ্য অ্যাপ ক্লিপ লক্ষ্যে পাওয়া যায় না।
// 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 বিশেষজ্ঞদের কাছে পৌঁছাতে ফসকা চ্যানেল বা স্ট্যাক ওভারফ্লো