مقیاس با چندین پایگاه داده

بهترین راه برای بهینه سازی عملکرد و مقیاس داده های خود در پایگاه داده بیدرنگ Firebase، تقسیم داده های خود در چندین نمونه پایگاه داده بیدرنگ است که به عنوان اشتراک گذاری پایگاه داده نیز شناخته می شود. Sharding به شما می دهد انعطاف پذیری را به مقیاس فراتر از محدودیت که به موارد پایگاه داده فردی اعمال می شود، علاوه بر تعادل بار و بهینه سازی عملکرد.

چه زمانی داده های خود را به اشتراک بگذارید

اگر از پایگاه داده Realtime استفاده می کنید و در هر یک از سناریوهای زیر قرار می گیرید، ممکن است بخواهید داده های خود را در چندین پایگاه داده به اشتراک بگذارید:

  • شما می خواهید به فراتر از حد مجاز از 200،000 اتصالات به طور همزمان در مقیاس، 1000 عملیات نوشتن / دوم، و یا هر یک از دیگر محدودیت برای مثال پایگاه داده واحد است.
  • شما چندین مجموعه داده مجزا دارید و می خواهید عملکرد را بهینه کنید (به عنوان مثال، یک برنامه چت که به گروه های جداگانه و مستقلی از کاربران خدمت می کند).
  • شما می خواهید بار را در چندین پایگاه داده متعادل کنید تا زمان آپدیت را بهبود ببخشید و خطر بارگذاری بیش از حد یک نمونه پایگاه داده را کاهش دهید.

چگونه داده های خود را به اشتراک بگذارید

برای به اشتراک گذاری داده های خود، این مراحل را دنبال کنید (که در زیر با جزئیات بیشتر توضیح داده شده است):

  1. داده های خود را با توجه به نیازهای خاص برنامه خود به چندین پایگاه داده نقشه برداری کنید.
  2. چندین نمونه پایگاه داده ایجاد کنید.
  3. برنامه خود را طوری پیکربندی کنید که به نمونه پایگاه داده بیدرنگ لازم برای هر مجموعه داده متصل شود.

داده های خود را نقشه برداری کنید

هنگامی که داده های خود را به چندین پایگاه داده نگاشت می کنید، سعی کنید شرایط زیر را برآورده کنید:

  • هر پرس و جو فقط در برابر یک نمونه پایگاه داده اجرا می شود. پایگاه داده بیدرنگ از پرس و جو در نمونه های پایگاه داده پشتیبانی نمی کند.
  • بدون اشتراک گذاری یا تکراری از داده ها در نمونه های پایگاه داده (یا حداقل اشتراک گذاری یا تکراری).
  • هر نمونه برنامه در هر لحظه فقط به یک پایگاه داده متصل می شود.

همانطور که در حال نقشه برداری از داده های خود هستید، استراتژی های زیر را در نظر بگیرید:

ایجاد یک "تکه اصلی"

نقشه ای از نحوه ذخیره داده های شما در نمونه های پایگاه داده ذخیره کنید. به این ترتیب، می‌توانید به‌صورت برنامه‌نویسی به دنبال این باشید که کدام نمونه پایگاه داده با مشتری اتصال مطابقت دارد. به خاطر داشته باشید که این ممکن است بیش از اتصال مستقیم به نمونه پایگاه داده خاصی که نیاز دارید، زمانی که به آن نیاز دارید، سربار داشته باشد.

داده‌ها را بر اساس دسته‌ها یا بر اساس مشتری جمع‌بندی کنید

ذخیره داده ها در نمونه های پایگاه داده siled، گروه بندی شده بر اساس کاربر یا نوع داده. به عنوان مثال، اگر یک برنامه چت بسازید که به چندین سازمان خدمت می کند، می توانید یک نمونه پایگاه داده برای هر سازمان ایجاد کنید و تمام داده های چت را در نمونه های پایگاه داده منحصر به فرد ذخیره کنید.

در این مورد، سازمان A و سازمان B داده ها را به اشتراک نمی گذارند، هیچ داده تکراری در پایگاه داده شما وجود ندارد و شما فقط در مورد یک نمونه پایگاه داده پرس و جو انجام می دهید. علاوه بر این، کاربران در هر سازمان تنها زمانی به پایگاه داده سازمان خود متصل می شوند که از برنامه چت استفاده می کنند.

سپس می توانید چندین نمونه پایگاه داده را از قبل ایجاد کنید و از شناسه سازمان برای نگاشت یک تیم به نمونه پایگاه داده خود استفاده کنید. برای مثال، سازمان A به پایگاه داده بیدرنگ A نقشه می‌دهد.

نحوه نقشه‌برداری داده‌ها برای برنامه‌تان به مورد استفاده خاص شما بستگی دارد، اما شرایط و استراتژی‌های ذکر شده در بالا می‌تواند به شما کمک کند تا مشخص کنید چه چیزی برای داده‌هایتان کار می‌کند.

چندین نمونه پایگاه داده بیدرنگ ایجاد کنید

اگر شما در حال طرح قیمت گذاری فروغ ، شما می توانید موارد پایگاه داده های متعدد در پروژه فایربیس همان ایجاد کنید.

یک پایگاه داده در کنسول Firebase با منوی زمینه در بخش پایگاه داده ایجاد کنید

  1. در فایربیس کنسول، به تب Data بروید در توسعه> پایگاه بخش.
  2. انتخاب کنید ایجاد بانک اطلاعاتی جدید از منوی در بخش پایگاه بیدرنگ.
  3. سفارشی کردن مرجع پایگاه خود را و قوانین امنیتی ، پس از آن رو آن کلیک کنید.

برای ایجاد هر تعداد نمونه پایگاه داده که نیاز دارید، این فرآیند را تکرار کنید. هر نمونه پایگاه داده دارای مجموعه ای از قوانین پایگاه داده بیدرنگ Firebase است، بنابراین می توانید دسترسی به داده های خود را دقیق تنظیم کنید.

شما می توانید ایجاد و مدیریت نمونههای پایگاه داده در کنسول فایربیس یا با استفاده از پایگاه داده های بیدرنگ API مدیریت REST .

قوانین پایگاه داده بیدرنگ را برای هر نمونه ویرایش و استقرار کنید

مطمئن شوید که قوانین پایگاه داده بیدرنگ شما اجازه دسترسی مناسب به هر نمونه پایگاه داده در پروژه شما را می دهد. هر پایگاه داده مجموعه خود را از قوانین، که شما می توانید از کنسول فایربیس، یا با استفاده از ویرایش و استقرار فایربیس 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);
سریع
نکته: این محصول فایربیس در دسترس در برنامه کلیپ ویدیوئی هدف است.
// Get the default database instance for an app
var ref: DatabaseReference!

ref = Database.database().reference()
// یک مثال پایگاه داده های ثانویه توسط URL ور کد عکس: DatabaseReference! ref = Database.database("https://testapp-1234.firebaseio.com").reference()
هدف-C
نکته: این محصول فایربیس در دسترس در برنامه کلیپ ویدیوئی هدف است.
// Get the default database instance for an app
@property (strong, nonatomic) FIRDatabaseReference *ref;

self.ref = [[FIRDatabase database] reference];
// یک مثال پایگاه داده های ثانویه توسطproperty URL (قوی، 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();

Kotlin+KTX

// 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 گزینه مشخص کنید که کدام پایگاه فایربیس بیدرنگ می خواهید به درخواست یک فرمان فایربیس CLI به. به عنوان مثال، استفاده از دستور زیر برای اجرای profiler را برای یک نمونه پایگاه داده به نام my-example-shard.firebaseio.com :

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

اتصالات موجود در هر پایگاه داده را بهینه کنید

اگر هر کلاینت نیاز به اتصال به چندین پایگاه داده در طول یک جلسه داشته باشد، می توانید تعداد اتصالات همزمان به هر نمونه پایگاه داده را با اتصال به هر نمونه پایگاه داده تنها تا زمانی که لازم است کاهش دهید.

مشاوره بیشتری دریافت کنید

اگر شما نیاز به کمک بیشتر sharding داده های خود را در سراسر موارد پایگاه داده های مختلف، رسیدن به کارشناسان فایربیس در ما کانال اسلاک و یا در سرریز پشته .