از Firestore به Firebase SQL Connect: دیتابیس عوض شد، صفحه نه
خلاصهٔ کاملتر
بولنت تورکمن تو این مقاله تعریف میکنه که دو روز بعد از انتقال پلتفرم داخلی رزومهشون از Firestore به Firebase SQL Connect، صفحهای که اصلاً باعث مهاجرت شده بود هنوز 18.6 مگابایت داده دانلود میکرد و حدود 55 ثانیه قفل میموند. این صفحه آیتمهای داخل هر رزومه رو بر اساس یه فیلد گروهبندی میکنه و تو یه بازهی زمانی میشمره. Firestore Standard فقط یه مقدار برای کل کوئری برمیگردونه و group-by نداره، برای همین تیم کل داده رو تو مرورگر لود میکرد و همونجا جمعبندی میکرد.
نویسنده میگه مهاجرت هیچی رو عوض نکرد چون صفحه هنوز همهی رزومهها رو میگرفت و مرورگر هم براش فرقی نمیکنه پشتش چه دیتابیسیه. خودش اعتراف میکنه که اول سراغ نمودارها رفته و بعد سراغ حلقهی خوشهبندی اسمها، چون کند به نظر میاومدن، ولی هیچکدوم مقصر نبودن. به گفتهش: «مهاجرت صفحه رو سریع نکرد، فقط قابل درست کردنش کرد.»
راهحل یه جدول مشتقشده بود: موقع هر ذخیرهی رزومه، لیست تودرتو به یه ردیف جدا برای هر آیتم «shred» میشه (یعنی از دل سند بیرون کشیده و صاف میشه). بعد یه endpoint سمت سرور با بازهی تاریخ کاربر روش کوئری میزنه و برچسب نهایی هم از قبل روی هر ردیف ذخیره شده:
type Span
@table(key: ["id"])
@index(fields: ["groupId", "startDate"], order: [ASC, DESC]) {
id: String!
document: Document! @ref @index # @ref does NOT auto-index the FK column
labelRaw: String
startDate: Date @index
endDate: Date
}نتیجهها جالبه: فیلتر دهساله از 56 ثانیه به 3.7 ثانیه رسید و همهی بازهها حدود سه ثانیه طول میکشن، یعنی دیگه حجم داده روی زمان اثر نداره. main thread از 55.7 ثانیه بلاکشدن به 542 میلیثانیه رسید، درخواستهای برچسب به صفر رسید و دادهی جستجو از 18.27 به 1.63 مگابایت. نویسنده دربارهی Firestore Enterprise هم صادقه: Pipeline operations اون که آوریل 2026 عمومی شد group-by و join داره و احتمالاً جواب میداد، ولی تیم بررسیش نکرد.
دلیل انتخاب SQL Connect این بود که Cloud SQL مدیریتشدهست با یه لایه GraphQL و Firebase Auth رو نگه میداره. نویسنده چند تا باگ مهاجرت رو هم میگه که با تطابق تعداد ردیفها لو نرفتن، مثلاً VectorValue باعث شد 6,500 embedding بیصدا جا بمونن، یا toISOString().slice(0, 10) تاریخها رو یه روز عقب میبرد. صفحهی /overview هنوز درست نشده و حالا 22.98 مگابایت میکشه، یعنی همون باگ هنوز سر جاشه.
نکات کلیدی:
- Firebase Data Connect از آوریل 2026 اسمش شده Firebase SQL Connect ولی CLI هنوز dataconnect هست.
- فیلتر دهساله 15 برابر سریعتر شد: از 56 به 3.7 ثانیه.
- بدترین حالت ذخیره: 15 عملیات روی SQL Connect در برابر 106 نوشتن روی Firestore.
- @ref تو SQL Connect ستون کلید خارجی رو خودکار ایندکس نمیکنه.
- Firestore Enterprise با Pipeline operations احتمالاً جایگزین سادهتری بود که بررسی نشد.
- درس اصلی: جدولهای مشتقشده و کوئریهای سمت سرور باید جزو خود مهاجرت باشن.




