عملیات Firestore Pipeline یکی از ویژگیهای اصلی نسخه Firestore Enterprise است که بر اساس یک موتور پرسوجوی جدید ساخته شده است تا طیف پرسوجوهای ممکن را به طور قابل توجهی گسترش دهد. عملیات Firestore Pipeline از یک سینتکس پرسوجوی انعطافپذیر و یک روش شاخصگذاری متمایز استفاده میکند که در آن شاخصها اختیاری هستند و به طور خودکار ایجاد نمیشوند و امکان عملیات بازیابی پیشرفته دادهها را برای برنامهها فراهم میکنند.
ویژگیهای عملیات خط لوله فایراستور
نسخه Firestore Enterprise و عملیات جدید Pipeline از یک موتور جستجوی جدید و پیشرفته استفاده میکنند که بسیاری از محدودیتهای موجود در نسخه Firestore Standard را حذف میکند. عملیات Firestore Pipeline بیش از ۱۲۰ ویژگی جستجوی جدید را ارائه میدهد. عملیات Firestore Pipeline دارای قابلیتهای زیر است:
سینتکس قابل ترکیب مبتنی بر مرحله
پرسوجوهای خط لولهای با تعریف مجموعهای از مراحل متوالی که به ترتیب اجرا میشوند، ساخته میشوند. این امر امکان انجام عملیات پیچیدهای مانند فیلتر کردن نتیجه یک تجمیع را فراهم میکند که قبلاً امکانپذیر نبود.
مثال زیر یک پرسوجوی پایپلاین را نشان میدهد که تعداد شناسههای منحصر به فرد محصولات مشاهده شده در ماه گذشته را پیدا میکند:
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 برای ایجاد ایندکسها و بهبود عملکرد و هزینه کوئریهای خود استفاده کنید. |
| پیامد هزینه ذخیرهسازی | شما به دلیل ایندکسهای خودکار و ایندکسهای ترکیبی، متحمل سربار ذخیرهسازی میشوید. | شما در هزینههای ذخیرهسازی صرفهجویی میکنید زیرا ایندکسها به طور خودکار برای هر فیلد ایجاد نمیشوند. |
| مبنای هزینه | به ازای هر عملیات خواندن ، نوشتن و حذف سند هزینه دریافت میشود. | هزینه به ازای هر واحد خواندن (بخشهای ۴ کیلوبایتی) و واحد نوشتن (بخشهای ۱ کیلوبایتی) محاسبه میشود. ورودیهای شاخص نوشتن، واحدهای نوشتن را مصرف میکنند. با چند مثال ، با قیمتگذاری جدید آشنا شوید. |
| قوانین امنیتی | قوانین امنیتی با تأیید مجوزهای خواندن/نوشتن، از مجموعهها محافظت میکنند. | قوانین امنیتی با تأیید مجوزهای خواندن/نوشتن، از مجموعهها محافظت میکنند. در راهنمای مدلسازی داده، نحوه مدلسازی دادههای خود را برای پشتیبانی از پرسوجوهای خط لوله بیاموزید. |