وقتی آخرین بار از ما پرسیدیم "چه جهنمی؟"، ما به پلت فرم جریان داده سازگار با پروتکل __ Apache Kafka __® نگاه می کردیم.
Flink در ابتدا به عنوان یک پروژه آپاچی در دسامبر 2014 پذیرفته شد، بنابراین مدتی است که در دسترس بوده است. رشد پردازش جریانی منجر به افزایش علاقه و استفاده در چند سال اخیر شده است. Flink یک سیستم تا حدودی چالش برانگیز برای ایستادن و استفاده داخلی است که نیاز به استعداد مهندسی اختصاصی دارد. حتی
من قصد دارم از صفحه وب Apache Flink در اینجا قرض بگیرم. Apache Flink یک فریمورک و موتور پردازش توزیع شده برای محاسبات حالت بر روی جریان های داده نامحدود و محدود است. Flink برای اجرا در تمام محیطهای خوشهای رایج و انجام محاسبات با سرعت درون حافظه و در هر مقیاسی طراحی شده است. من نمی خواهم بیشتر از آنچه در وب سایت آنها است تکرار کنم، بنابراین اگر در مورد Flink مطمئن نیستید، به آن نگاهی بیندازید.
در ابتدایی ترین حالت، DeltaStream به شما قدرت Flink را بدون نیاز به مقابله با Flink می دهد. اصلا برای آزمایشم از آنها استفاده کردم
با ثبت نام، یک دوره آزمایشی 14 روزه رایگان دریافت می کنید. یک نمونه خوشه کافکا به نام «trial_store» ایجاد شده است که میتوانید به جای دادههای خود برای آزمایش از آن استفاده کنید. دمو شامل تعدادی موضوع برای بازی است. نمادهای زیر ACTIONS به شما این امکان را می دهند که یک موضوع را حذف کنید یا جزئیات و محتوای مربوط به موضوع و در آن را مشاهده کنید.
در اینجا جزئیات موضوع بازدید از صفحه برای مرجع وجود دارد که بعداً از آنها استفاده خواهیم کرد.
خوب، ما یک خوشه کافکا و موضوعاتی در آن داریم. حالا بیایید یک کار جالب انجام دهیم. همانطور که در مقدمه ذکر شد، جالبترین کاری که میتوانم انجام دهم غنیسازی و/یا فیلتر کردن دادهها در حین پرواز قبل از فرود در مقصد نهایی خود، مانند پایگاه داده/انبار/دریاچه است. برای این منظور، به Workspace می رویم.
این قسمت کمی عادت کرد. پایگاه داده و طرحواره در DeltaStream فقط پوشه های سازمانی هستند. شما می توانید تعداد 'n' پایگاه داده ایجاد کنید، و در یک پایگاه داده، می توانید تعداد 'n' طرحواره داشته باشید. طرحواره ها طرح بندی تعریفی اشیاء DeltaStream شما را که با نام های STREAM، CHANGELOG، MATERIALIZED VIEW و TABLE شناخته می شوند، نگه می دارند. یک Table به یک جدول پایگاه داده در چیزی مانند PostgreSQL مربوط می شود، و نمای Materialized راهی برای حفظ داده ها در مجموعه نتایج بدون قرار دادن آن در جایی خاص است. من قصد ندارم با هیچ یک از کسانی که در این وبلاگ هستند کاری انجام دهم. من بر روی Stream و Changelog تمرکز خواهم کرد.
من در حال ایجاد جریانی از موضوع بازدید از صفحه در خوشه کافکا در تصویر زیر هستم. من فکر می کنم آن را به عنوان تعریف جدولی از موضوع می دانم. ما نام فیلدها را اختصاص داده ایم و به آنها گفته ایم که از چه موضوعی استفاده کنند و فرمت داده چیست. ما مجبور نیستیم که خوشه trial_store را به طور کامل توجیه کنیم زیرا به عنوان پیش فرض در جعبه ترکیبی در بالا تنظیم شده است. هنگامی که این دستور اجرا شد، در TestDB.public نشان داده می شود. سپس می توانم آن را با چیزی مانند SELECT * FROM PAGEVIEWS پرس و جو کنم و شروع به دیدن داده ها در صفحه نتیجه در پایین می کنم.
در مرحله بعد، من یک تغییرات ثبت شده توسط موضوع کاربر و سفارش شده توسط UserID را اعلام می کنم. تغییرات ثبت شده شبیه به یک جریان است، اما به شما امکان می دهد رویدادهای یک موضوع را به عنوان رویدادهای UPSERT تفسیر کنید. رویدادها به یک کلید اولیه نیاز دارند. DeltaStream هر رویداد را به عنوان یک درج یا به روز رسانی برای کلید اصلی داده شده تفسیر می کند. در این مورد، تغییرات ثبت جزئیات خاصی مانند جنسیت و علایق را بر اساس کاربر منعکس می کند.
اینجا جایی است که ما شروع به تفریح می کنیم. من یک جریان جدید ایجاد خواهم کرد که جریان بازدید از صفحه را با دادههای مربوط به تغییرات user_log با استفاده از userid به عنوان مقدار کلیدی برای پیوستن، غنی میکند. این اکنون به من یک موضوع منحصر به فرد در خوشه با داده های دو موضوع مختلف می دهد. از اینجا می توانم آن را با استفاده از چیزی مانند regionid فیلتر کنم و نتایج آن پرس و جو را در یک مقصد نهایی مانند پایگاه داده، انبار یا دریاچه بنویسم. این به من این امکان را داد که قبل از فرود، دادههای حین پرواز را غنیسازی و فیلتر کنم، بنابراین تأخیر را بهبود بخشم و هزینههای محاسباتی و ذخیرهسازی را کاهش دهم.
بنابراین، دلتا استریم چیست؟ این یک راه بسیار ساده برای استفاده از Apache Flink بدون دانستن چیزی در مورد آن یا انجام مستقیم کاری با آن است. از مثال من دیدید که اتصال به آپاچی کافکا و سپس خواندن، پیوستن و فیلتر کردن داده ها چقدر ساده بود. سایر اتصالات پشتیبانی شده در حال حاضر Kinesis، PostgreSQL، Snowflake و Databricks هستند و به من گفته شده که ClickHouse و Iceberg به زودی در دسترس خواهند بود.
در نهایت، DeltaStream بدون نیاز به مقابله با Apache Flink به شما قدرت Apache Flink را می دهد و می توانید آن را با استفاده از SQL به جای جاوا انجام دهید. اگر با جریان داده سر و کار دارید یا به دنبال پیاده سازی آن هستید، این قطعا یک راه حل بسیار هوشمندانه و راحت است.
مقالات دیگر من چه هک است... را در پیوندهای زیر بررسی کنید:
**