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

متابیس داده شما را ذخیره نمیکند
متابیس یک ابزار برای پرسوجو از داده در یک پایگاه داده و بصریسازی نتایج است (متابیس همچنین چیزهای دیگری است، اما این تمرکز ما در حال حاضر نیست). اما مثل برخی ابزارهای BI دیگر که داده شما را ذخیره میکنند نیست. با متابیس، راهاندازی پایه این است:
- متابیس را به پایگاه داده خود متصل میکنید.
- یک پرسوجو در متابیس مینویسید (یا در سازنده کوئری یا ویرایشگر کد بومی)
- متابیس SQL را به پایگاه داده میفرستد.
- پایگاه داده شما پرسوجو را پردازش میکند، سپس نتایج را به متابیس برمیگرداند.
- متابیس داده شما را به رنگهای زیبا تبدیل میکند (یک نمودار در یک داشبورد).
متابیس خودش داده شما را از پایگاه داده شما بیرون نمیکشد تا پرسوجوی شما را پردازش کند - همه آن پردازش داخل پایگاه داده شما اتفاق میافتد. همه آنچه متابیس میبیند پرسوجویی است که مینویسید، و نتایجی که پرسوجو برمیگرداند.
چند nuance به این وجود دارد، چون متابیس مقداری پرسوجوی سبک از فراداده پایگاه داده شما انجام میدهد تا بداند چگونه نتایجی که پایگاه داده به آن برمیگرداند را handle کند. پس بیایید آن را طی کنیم.
پرسوجو از پایگاه داده خود با متابیس
دو راه برای ایجاد پرسوجوها در متابیس وجود دارد: استفاده از SQL (یا اگر به MongoDB متصل میشوید، زبان پرسوجوی MongoDB)، و استفاده از سازنده کوئری گرافیکی.
پرسوجوهای بومی
وقتی یک پرسوجو در SQL (یا در زبان پرسوجوی MongoDB) مینویسید، متابیس فقط آن پرسوجو را به پایگاه داده شما میفرستد.
کدی که در ویرایشگر بومی مینویسید مثل یک جعبه سیاه است: متابیس SQL شما را parse نمیکند، پس نمیداند چه اتفاقی در پرسوجوی شما میافتد، مثل اینکه کدام جداول را join میکنید، کدام ستونها را انتخاب میکنید، یا چگونه داده را فیلتر و تجمیع میکنید. و چون پرسوجو یک جعبه سیاه است، متابیس نمیتواند چیز زیادی درباره نتایج بداند، پس نمیتواند چیزهایی مثل breakouts، drill-down، یا نمودارهای خودکار ارائه دهد.
سازنده کوئری
در سازنده کوئری، یک پرسوجو را از بلوکهای ساختمانی مثل joins، filters، یا summaries میسازید.

اگر از سازنده کوئری استفاده کنید، با این حال، متابیس دقیقاً میداند چه اتفاقی در پرسوجوی شما میافتد - کدام جداول درگیر هستند، انواع ستون چیست، چه عملیاتی انجام میدهید و کدام ترتیب - و میتواند از آن اطلاعات برای دادن عملکرد بیشتر به شما استفاده کند. به عنوان مثال، اگر متابیس بداند که یک تجمیع در پرسوجوی شما دارید، میتواند گزینهای برای disaggregate کردن نتایج به شما بدهد - پس، برای drill down به رکوردهای فردی؛ یا، اگر متابیس ببیند که روی یک ستون تاریخ فیلتر میکنید، میتواند یک widget تقویم به شما بدهد؛ اگر متوجه شود که بر اساس یک متغیر دستهای گروهبندی میکنید، میتواند به طور خودکار یک نمودار میلهای با آن دستهها بسازد.

همه این کلیکهای دکمه در سازنده کوئری به SQL ترجمه میشوند که به پایگاه داده شما فرستاده میشود (و میتوانید SQL تولید شده را ببینید) اما داشتن دسترسی به هر عنصر پرسوجوی فردی چیزی است که بسیاری از جادوی متابیس را ممکن میکند.
اما حالا ممکن است بپرسید: اما اگر متابیس داده من را ذخیره نمیکند، چگونه میداند که یک ستون تاریخ دارم، یا چه دستههایی دارم؟
متابیس چگونه درباره داده شما میداند
متابیس از syncs برای یادگیری درباره schema پایگاه داده شما استفاده میکند: چیزهایی مثل اینکه چه جداولی در db هستند، ستونها و انواع آنها چیست، و غیره. Syncs هنوز، در سطح پایه، پرسوجوهایی هستند که متابیس میفرستد و پایگاه داده شما اجرا میکند، اما نوع خاصی از پرسوجو است: به جای برگرداندن خود داده، این پرسوجوها فراداده را برمیگردانند.
متابیس همچنین scans را اجرا میکند تا نمونههایی از مقادیر در ستونها بگیرد. این به متابیس اجازه میدهد چیزهایی مثل گزینههای dropdown در فیلترها را به شما بدهد.

قابل توجه است که متابیس فقط نمونههایی از ستونها میگیرد، ستونهای کامل را ذخیره نمیکند - آنها در پایگاه داده شما میمانند. و فقط فیلدهایی را scan میکند که مشتریان استفاده میکنند (مثلاً، مقادیر برای یک فیلد استفاده شده در یک فیلتر روی یک داشبورد). همچنین میتوانید این syncs را خاموش کنید.
چون متابیس نیاز دارد اطلاعات درباره داده شما را قبل از فرستادن یک پرسوجو به پایگاه داده شما بداند (تا بتواند یک widget تقویم برای یک ستون تاریخ به شما بدهد)، نیاز دارد این اطلاعات را جایی ذخیره کند و به طور دورهای بهروزرسانی کند. آن مکان پایگاه داده برنامه متابیس است.
پایگاه داده برنامه متابیس
پایگاه داده برنامه متابیس یک پایگاه داده (جدا از پایگاههای دادهای که متابیس را به آنها متصل میکنید) است که متابیس همه دادههای برنامه خود را در آن نگه میدارد: حسابهای مشتریان، تنظیمات، سؤالهای ذخیره شده، لاگها - و همچنین فراداده درباره پایگاههای داده متصل شما (مثل ستونها و انواع آنها).
وقتی یک پرسوجو در سازنده کوئری میسازید، متابیس میتواند اطلاعات درباره داده شما را در پایگاه داده برنامه جستجو کند، از آن اطلاعات برای دادن widgetهای فیلتر، انواع نمودار، و drill downs استفاده کند.
(اگر در متابیس کلود هستید، هرگز نیاز به فکر کردن درباره پایگاه داده برنامه ندارید - متابیس کلود آن را برای شما handle میکند. اما اگر self-hosting میکنید، نیاز دارید یک پایگاه داده جداگانه برای خدمت به عنوان یک پایگاه داده برنامه provision کنید.)
Cache کردن نتایج پرسوجو
شاید یک داشبورد وجود دارد که همه در تیم شما به طور منظم به آن نگاه میکنند، مثل یک داشبورد با معیارهای شرکت. هر بار که کسی داشبورد را باز میکند، متابیس پرسوجوها را به پایگاه داده میفرستد، پایگاه داده را وادار به اجرای آنها میکند، و نتایج را بازیابی میکند. اما اگر نتایج به طور مکرر تغییر نمیکنند - به عنوان مثال، شاید معیارهای سهماهه را نمایش میدهید که فقط هر سه ماه یک بار تغییر میکنند - نیازی نیست پایگاه داده این اعداد را هر روز دوباره محاسبه کند.
میتوانید به متابیس بگویید نتایج را cache کند در پایگاه داده برنامه خود (نه پایگاه داده متصل شما). به این ترتیب، وقتی کسی به داشبورد cache شده میرود، داشبورد سریعتر بارگذاری میشود چون پایگاه داده شما فقط نتایج از پیش محاسبه شده را به متابیس برمیگرداند.
متابیس فقط نتایج را cache میکند. پس به عنوان مثال، اگر پرسوجوی شما تعداد آیتمهای فروخته شده ماه گذشته را محاسبه میکند، متابیس فقط آن عدد را cache میکند، و نه داده درباره آیتمها. داده شما هنوز در پایگاه داده شما است.
Persist کردن مدلها به پایگاه داده شما
متابیس مدلها دارد - مجموعه دادههای مشتق شده که در داخل متابیس میسازید تا آسانتر کردن پرسیدن سؤال برای مشتریان. برای ساخت یک مدل، یک پرسوجو مینویسید (یا در SQL یا با استفاده از سازنده کوئری)، و سپس مشتریان میتوانند از آن مدل به عنوان یک منبع داده استفاده کنند گویی که یک جدول است.
چون مدلها از پرسوجوها ساخته میشوند، متابیس نیاز دارد مقداری پردازش اضافی انجام دهد هر زمان که کسی سؤالی بر اساس یک مدل میپرسد. به عنوان مثال، اگر کسی تعداد سفارشها در مدل Orders را بپرسد، پرسوجویی که به پایگاه داده فرستاده میشود پیچیدهتر از فقط SELECT COUNT(*) FROM orders است چون مدل Orders خودش با یک پرسوجو تعریف شده است.
این میتواند برای مدلهای بزرگ گران و زمانبر شود، پس برای برخی پایگاههای داده، میتوانید persist مدل را روشن کنید، که جایی است که متابیس این مدلها را در پایگاه داده شما به عنوان جداول واقعی ذخیره میکند. پس به عنوان مثال، اگر مدل Orders خود را persist کنید، سپس متابیس یک جدول واقعی orders در پایگاه داده شما ایجاد میکند (خوب، دقیقاً orders نامیده نمیشود، اما نکته را میگیرید) و هر زمان که کسی تعداد سفارشها در مدل Orders را بپرسد، پایگاه داده شما میتواند فقط آن جدول از پیش محاسبه شده را برگرداند.
مراحل بعدی
- افزودن و مدیریت پایگاه داده
- Sync و scan کردن پایگاههای داده
- پیکربندی پایگاه داده برنامه متابیس
- Cache کردن نتایج پرسوجو
- Persist مدل
[
](guide.html)[
](metabase-in-production.html)