حالت بومی فایراستور شامل دو مجموعه عملیات است - عملیات هسته فایراستور و عملیات خط لوله فایراستور.
عملیات Firestore Core قابلیت استاندارد ایجاد، خواندن، بهروزرسانی و حذف سند (CRUD) را به همراه پشتیبانی داخلی برای کوئریهای شنود بلادرنگ و ماندگاری آفلاین ارائه میدهد. یک تفاوت عملیاتی متمایز در این نسخه این است که ایندکسها اختیاری هستند و به طور خودکار برای فیلدهای تکی ایجاد نمیشوند. در حالی که این امر به کوئریها اجازه میدهد بدون پیکربندی اولیه ایندکس اجرا شوند، کوئریهای بدون ایندکس به طور پیشفرض کل مجموعه را اسکن میکنند. این امر میتواند منجر به افزایش تأخیر و هزینهها با رشد مجموعه دادهها شود.
عملیات Firestore Pipeline یکی از ویژگیهای اصلی نسخه Firestore Enterprise است که بر اساس یک موتور جستجوی پیشرفته ساخته شده است تا طیف وسیعی از پرسوجوهای ممکن را به طور قابل توجهی گسترش دهد. عملیات Firestore Pipeline از یک سینتکس پرسوجوی انعطافپذیر و یک روش شاخصگذاری متمایز استفاده میکند که در آن شاخصها اختیاری هستند و به طور خودکار ایجاد نمیشوند و امکان عملیات بازیابی پیشرفته دادهها را برای برنامهها فراهم میکنند.
ویژگیهای عملیات اصلی فایراستور
عملیات اصلی امکان عملیات استاندارد CRUD و کوئریهای شنود بلادرنگ را فراهم میکنند. با این حال، هنگام استفاده از این عملیات در نسخه Enterprise، رفتار اساسی در مورد نمایهسازی و صدور صورتحساب در مقایسه با نسخه استاندارد به طور قابل توجهی تغییر میکند.
عملکرد و تداوم
عملیات اصلی، سینتکس زنجیرهسازی متد آشنا (برای مثال، .where() ، .orderBy() ) که در نسخه استاندارد استفاده میشد را حفظ کردهاند. این عملیات از کوئریهای شنود بلادرنگ و ماندگاری آفلاین برای کلاینتهای موبایل و وب پشتیبانی میکنند. توصیه میشود از این عملیات برای بارهای کاری تراکنشی استاندارد، جستجوهای ساده و مهاجرت کد برنامه موجود استفاده شود.
نمایهسازی سفارشی
برخلاف نسخه استاندارد، عملیات Core در نسخه Enterprise به طور خودکار شاخصهای تک فیلدی ایجاد نمیکند. شاخصها اختیاری هستند و برای اجرای یک پرسوجو الزامی نیستند. اگر یک شاخص خاص وجود نداشته باشد، پرسوجو یک اسکن کامل از مجموعه انجام میدهد. در حالی که پرسوجوهای بدون شاخص امکان نمونهسازی سریع را فراهم میکنند، ممکن است با رشد مجموعه دادهها، کندتر عمل کنند و هزینه بیشتری داشته باشند. توسعهدهندگان باید به صورت دستی شاخصهایی ایجاد کنند تا عملکرد پرسوجو را بهینه کرده و مصرف واحد خواندن را کاهش دهند.
مدل صورتحساب (مبتنی بر واحد)
واحدهای خواندن به جای تعداد سند، در بخشهای ۴ کیلوبایتی محاسبه میشوند. یک پرسوجوی فهرستبندی نشده که یک مجموعه بزرگ را اسکن میکند، واحدهای خواندن را بر اساس کل بایتهای اسکن شده در تمام اسناد مصرف میکند. واحدهای نوشتن در بخشهای ۱ کیلوبایتی محاسبه میشوند. نوشتن یک سند، واحدهایی را برای دادهها به علاوه واحدهای اضافی برای هر ورودی فهرست به روز شده مصرف میکند. برخلاف نسخه استاندارد، که فهرستبندی خودکار تک فیلدی را اعمال میکند، اکنون میتوانید فیلدهای خاصی را برای فهرستبندی انتخاب کنید تا هزینهها و عملکرد نوشتن بهینه شود.
ویژگیهای عملیات خط لوله فایراستور
نسخه Firestore Enterprise با عملیات Pipeline از یک موتور جستجوی پیشرفته استفاده میکند که بسیاری از محدودیتهای موجود در نسخه Firestore Standard را حذف میکند. عملیات Pipeline Firestore صدها ویژگی جستجوی اضافی را ارائه میدهد. عملیات Pipeline Firestore دارای قابلیتهای زیر است:
سینتکس قابل ترکیب مبتنی بر مرحله
پرسوجوهای خط لولهای با تعریف مجموعهای از مراحل متوالی که به ترتیب اجرا میشوند، ساخته میشوند. این امر امکان انجام عملیات پیچیدهای مانند فیلتر کردن نتیجه یک تجمیع را فراهم میکند که قبلاً امکانپذیر نبود.
مثال زیر یک پرسوجوی پایپلاین را نشان میدهد که تعداد شناسههای منحصر به فرد محصولات مشاهده شده در ماه گذشته را پیدا میکند:
guard let cutoffDate = Calendar.current.date(byAdding: .month, value: -1, to: Date()) else {
return
}
let snapshot = try await db.pipeline()
.collection("productViews")
.where(Field("viewedAt").greaterThan(cutoffDate.timeIntervalSince1970))
.aggregate([Field("productId").countDistinct().as("uniqueProductViews")])
.execute()
قابلیتهای گسترشیافته
پرس و جوی Pipelines تعداد زیادی از قابلیتهای جدید را معرفی میکند، از جمله:
- تجمیعها: پشتیبانی از توابع تجمیع جدید (مانند
sum(...)،min(...)وcount_distinct(...)) همراه با فیلدهای گروهبندی دلخواه. - فیلترینگ پیچیده: پشتیبانی از صدها تابع اضافی برای بیان دستورات
where(...)به صورت دلخواه پیچیده، از جملهregex_match(...)،add(...)وstr_contains(...)، همه بدون نیاز به اندیس سخت. - خواندن/تصویرسازی جزئی: بازیابی زیرمجموعههای پویا از اسناد با استفاده از
select(...)،remove_fields(...)و بسیاری از مراحل دستکاری سند دیگر.
برای کسب اطلاعات بیشتر در مورد این قابلیتها، به «پرس و جو از دادهها با عملیات خط لوله» مراجعه کنید.
پشتیبانی آنلاین و آفلاین
برای استفاده از حالتهای Realtime و Offline، توسعهدهندگان میتوانند از عملیاتهای Firestore Core در نسخه Firestore Enterprise استفاده کنند.
یکپارچهسازی کلاینت و ابزار
نسخه Enterprise شامل ویژگیهای تخصصی برای تعامل و مدیریت Pipeline Queryها است:
- توضیح و پروفایلبندی کوئری: میتوانید از نتایج توضیح کوئری برای فهمیدن تعداد واحدهای خواندن یا نوشتنی که یک کوئری مصرف میکند و تحلیل اجرای آن استفاده کنید.
- بینشهای پرسوجو: نسخه سازمانی از بینشهای پرسوجو پشتیبانی میکند که به شما کمک میکند با ارائه دیدی نسبت به پرسوجوهای برتر اجرا شده در پایگاه داده و ویژگیهای عملکرد آنها، تعیین کنید که ایندکسها کجا میتوانند ایجاد شوند تا عملکرد و هزینه بهبود یابد.
- انواع جدید شاخص: شما میتوانید شاخصهای تخصصی برای نسخه Enterprise ایجاد کنید، از جمله انواع شاخص مانند شاخصهای پراکنده، غیر پراکنده و منحصر به فرد. همچنین از ایجاد و ویرایش شاخصهای جستجوی برداری برای پایگاههای داده Enterprise پشتیبانی میکند.
تفاوتهای بین Firestore Standard و Firestore Enterprise
تفاوت عملیاتی عمده بین عملیات Core و Pipeline در مدیریت فهرستبندی نهفته است که مستقیماً بر عملکرد و هزینه تأثیر میگذارد.
| استاندارد فایراستور - عملیات اصلی | شرکت فایراستور - عملیات اصلی و خط لوله | |
| الزام نمایهسازی | برای پرسوجوها، فهرستها مورد نیاز هستند. شاخصها برای فیلدهای منفرد به صورت خودکار ایجاد میشوند، در حالی که پرسوجوهای پیچیدهتر به شاخصهای ترکیبی یا شاخصهای گروههای مجموعه متکی هستند که باید به صورت دستی پیکربندی شوند. | ایندکسها الزامی نیستند و بنابراین برای کوئریها اختیاری هستند. شما میتوانید در صورت نیاز، ایندکسها را تعریف کنید. نسخه Enterprise همچنین از طیف وسیعتری از انواع ایندکس، از جمله ایندکسهای غیر پراکنده/تنک و منحصر به فرد، پشتیبانی میکند. |
| عملکرد | کوئریهای ایندکسشده: عملکرد و هزینه با اندازه مجموعه نتایج شما مقیاسبندی میشوند. | کوئریهای بدون فهرستبندی: عملکرد و هزینه با اندازه مجموعه دادههای شما مقیاسبندی میشوند. کوئریهای ایندکسشده: عملکرد و هزینه با اندازه مجموعه نتایج شما مقیاسبندی میشوند. توصیه میکنیم از ابزارهای Query Explain و Query Insights برای ایجاد ایندکسها و بهبود عملکرد و هزینه کوئریهای خود استفاده کنید. |
| پیامد هزینه ذخیرهسازی | شما به دلیل ایندکسهای خودکار و ایندکسهای ترکیبی، متحمل سربار ذخیرهسازی میشوید. | شما در هزینههای ذخیرهسازی صرفهجویی میکنید زیرا ایندکسها به طور خودکار برای هر فیلد ایجاد نمیشوند. |
| مبنای هزینه | به ازای هر عملیات خواندن ، نوشتن و حذف سند هزینه دریافت میشود. | هزینه به ازای هر واحد خواندن (بخشهای ۴ کیلوبایتی) و واحد نوشتن (بخشهای ۱ کیلوبایتی) محاسبه میشود. ورودیهای شاخص نوشتن، واحدهای نوشتن را مصرف میکنند. با چند مثال ، با قیمتگذاری جدید آشنا شوید. |
| قوانین امنیتی | قوانین امنیتی با تأیید مجوزهای خواندن/نوشتن، از مجموعهها محافظت میکنند. | قوانین امنیتی با تأیید مجوزهای خواندن/نوشتن، از مجموعهها محافظت میکنند. در راهنمای مدلسازی داده، نحوه مدلسازی دادههای خود را برای پشتیبانی از پرسوجوهای خط لوله بیاموزید. |