MySQL HeatWave

آشنایی با MySQL HeatWave به زبان ساده

در هر شرکتی تجزیه و تحلیل داده ها مهم است زیرا توسط آن متوجه می شوید که در گذشته چه اتفاقی افتاده است تا بتوانید با استفاده از داده های موجود تصمیمات هوشمندانه بگیرید یا حتی اقدامات آینده را پیش بینی کنید. تجزیه و تحلیل حجم عظیمی از داده ها ممکن است سخت باشد و برای مدیریت OLTP و OLAP باید از بیش از یک موتور پایگاه داده استفاده کنید. در این بخش خواهیم دید که MySQL HeatWave چیست و چگونه می تواند به شما در این کار کمک کند.

MySQL HeatWave چیست؟

HeatWave یک موتور جدید برای سرویس پایگاه داده MySQL در فضای ابری است. HeatWave یک موتور پردازش پرس و جو توزیع شده، مقیاس پذیر، به اشتراک گذاشته شده، در حافظه، ستونی و طراحی شده برای اجرای سریع کوئری های تحلیلی است. طبق مستندات رسمی، این ویژگی عملکرد MySQL را تا 400 برابر برای اجرای کوئری های تجزیه و تحلیل، سرعت می بخشد. همچنین پروسه ها به هزاران هسته تقسیم می شود و 2.7 برابر سریعتر است که هزینه استفاده از آن حدود یک سوم هزینه رقبای مستقیم است.

سرویس پایگاه داده MySQL با HeatWave تنها سرویسی است که بارهای کاری OLTP و OLAP را مستقیماً از پایگاه داده MySQL اجرا می کند.

HeatWave چگونه کار می کند؟

HeatWave شامل یک گره MySQL DB System و دو یا چند گره HeatWave است. گره MySQL DB System دارای یک پلاگین HeatWave است که مسئولیت مدیریت کلاستر، بارگذاری داده ها در یک کلاستر HeatWave، زمان بندی کوئری و برگرداندن نتایج پرس و جو به سیستم MySQL DB را بر عهده دارد. گره های HeatWave داده ها را در حافظه ذخیره می کنند و کوئری های تحلیلی را پردازش می کنند. هر گره HeatWave شامل یک نمونه از HeatWave است.

تعداد گره های HeatWave به اندازه داده های شما و میزان فشرده سازی که هنگام بارگذاری داده ها در کلاستر HeatWave به دست می‌آید بستگی دارد. معماری این محصول را در تصویر زیر می بینیم.

شما می توانید

معماری MySQL HeatWave

همانطور که می بینید، کاربران مستقیماً به HeatWave دسترسی ندارند. پرس و جوهایی که پیش نیازهای خاصی را برآورده می کنند به طور خودکار از سیستم MySQL DB به کلاستر HeatWave برای پردازش سریع بارگذاری می شوند و نتایج به گره MySQL DB System و سپس به مشتری یا برنامه کاربردی MySQL که درخواست را صادر کرده است بازگردانده می شود.

نحوه استفاده از MySQL HeatWave

برای فعال کردن این ویژگی، باید به سایت مدیریت ابری Oracle و به سیستم MySQL DB موجود دسترسی داشته باشید (یا یک سیستم جدید ایجاد کنید)، و یک کلاستر Analitycs اضافه کنید. در آنجا می توانید نوع کلاستر و تعداد گره ها را مشخص کنید. برای مشخص کردن تعداد پایگاه داده لازم بر اساس حجم کاری خود می توانید از ویژگی تخمین تعداد گره استفاده کنید.

بارگذاری داده ها در یک کلاستر HeatWave نیازمند تهیه جداول در MySQL DB System و اجرای عملیات بارگذاری جدول است.

آماده سازی جداول MySQL HeatWave

آماده سازی جداول شامل تغییر تعاریف جدول برای حذف ستون های خاص، تعریف رمزگذاری ستون های رشته‌ای، اضافه کردن کلیدهای قرار دادن داده ها و تعیین HeatWave (RAPID) به عنوان موتور ثانویه برای جدول است. برای تعریف RAPID به عنوان موتور ثانویه برای جدول، گزینه جدول SECONDARY_ENGINE را در دستور CREATE TABLE یا ALTER TABLE مشخص کنید:

mysql> CREATE TABLE orders (id INT) SECONDARY_ENGINE = RAPID;
or
mysql> ALTER TABLE orders SECONDARY_ENGINE = RAPID;

Loading Data در HeatWave

بارگیری جدول در یک کلاستر HeatWave نیاز به اجرای عملیات ALTER TABLE با کلمه کلیدی SECONDARY_LOAD دارد.

mysql> ALTER TABLE orders SECONDARY_LOAD;

هنگامی که جدول بارگذاری می شود، داده ها به صورت افقی برش داده می شوند و بین گره های HeatWave توزیع می شوند. پس از بارگیری جدول، تغییرات داده های جدول در گره MySQL DB System به طور خودکار به گره های HeatWave منتشر می شود.

مثال MySQL HeatWave

در مثال زیر از جدول ترتیب استفاده می کنیم:

mysql> SHOW CREATE TABLE ordersG
*************************** 1. row ***************************
       Table: orders
Create Table: CREATE TABLE `orders` (
  `O_ORDERKEY` int NOT NULL,
  `O_CUSTKEY` int NOT NULL,
  `O_ORDERSTATUS` char(1) COLLATE utf8mb4_bin NOT NULL,
  `O_TOTALPRICE` decimal(15,2) NOT NULL,
  `O_ORDERDATE` date NOT NULL,
  `O_ORDERPRIORITY` char(15) COLLATE utf8mb4_bin NOT NULL,
  `O_CLERK` char(15) COLLATE utf8mb4_bin NOT NULL,
  `O_SHIPPRIORITY` int NOT NULL,
  `O_COMMENT` varchar(79) COLLATE utf8mb4_bin NOT NULL,
  PRIMARY KEY (`O_ORDERKEY`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin

می توانید ستون هایی را که نمی خواهید در HeatWave بارگیری کنید، حذف کنید:

mysql> ALTER TABLE orders MODIFY `O_COMMENT` varchar(79) NOT NULL NOT SECONDARY;

سپس RAPID را به عنوان SECONDARY_ENGINE برای جدول تعریف کنید:

mysql> ALTER TABLE orders SECONDARY_ENGINE RAPID;

مطمئن شوید که پارامتر SECONDARY_ENGINE در تعریف جدول اضافه شده است:

ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin SECONDARY_ENGINE=RAPID

و در نهایت جدول را در HeatWave بارگذاری کنید:

mysql> ALTER TABLE orders SECONDARY_LOAD;

می توانید از EXPLAIN برای اطمینان از عملکرد صحیح MySQL HeatWave استفاده کنید.

HeatWave Execution

mysql> SELECT O_ORDERPRIORITY, COUNT(*) AS ORDER_COUNT FROM orders 
       WHERE O_ORDERDATE >= DATE '1994-03-01' GROUP BY O_ORDERPRIORITY 
       ORDER BY O_ORDERPRIORITY;
+-----------------+-------------+
| O_ORDERPRIORITY | ORDER_COUNT |
+-----------------+-------------+
| 1-URGENT        |     2017573 |
| 2-HIGH          |     2015859 |
| 3-MEDIUM        |     2013174 |
| 4-NOT SPECIFIED |     2014476 |
| 5-LOW           |     2013674 |
+-----------------+-------------+
5 rows in set (0.04 sec)

اجرای Normal

mysql> SELECT O_ORDERPRIORITY, COUNT(*) AS ORDER_COUNT FROM orders 
       WHERE O_ORDERDATE >= DATE '1994-03-01' GROUP BY O_ORDERPRIORITY 
       ORDER BY O_ORDERPRIORITY;
+-----------------+-------------+
| O_ORDERPRIORITY | ORDER_COUNT |
+-----------------+-------------+
| 1-URGENT        |     2017573 |
| 2-HIGH          |     2015859 |
| 3-MEDIUM        |     2013174 |
| 4-NOT SPECIFIED |     2014476 |
| 5-LOW           |     2013674 |
+-----------------+-------------+
5 rows in set (8.91 sec)

نتیجه

این موتور را می توان هم برای برنامه های OLTP و هم برای Analytics استفاده کرد. این 100٪ با پایگاه داده داخلی سازگار است، بنابراین می توانید بارهای کاری OLTP خود را در محل نگه دارید و بارهای کاری تجزیه و تحلیل خود را بدون تغییر در برنامه خود به HeatWave بارگذاری کنید، یا حتی از آن به طور مستقیم در Oracle Cloud جهت بهبود عملکرد MySQL برای Analytics استفاده کنید.

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *