برنامه نویسی

چگونه پلتفرم داده خود را بسازید. از فرش به عرش.

معرفی

این مقاله نتیجه ارائه ارائه شده در 28 آوریل 2023 در Salmorejo Tech است. اسلایدهای ارائه را می توانید در پیوند زیر مشاهده کنید: slideshare.

این ارائه به دنبال آن بود تا برای مخاطبانی که دانش پایه ای از فناوری دارند، ابزارهای مختلفی را که می توان برای ساخت یک پلتفرم داده استفاده کرد، توضیح داد.

ارائه با یک پیکربندی ساده آغاز می شود که تقریباً هر کسی در دنیای محاسبات می تواند آن را درک کند. این با یک راه‌اندازی پیچیده به پایان می‌رسد، جایی که بدون پرداختن به جزئیات زیاد، به مخاطب این امکان را می‌دهد تا ایده‌ای درباره ابزارهای مورد نیاز برای اجرای راه‌حل به دست آورد.

تفاوت بین دنیای عملیاتی و دنیای تحلیلی

توضیحات تصویر

دنیای عملیاتی جایی است که ما برنامه های کاربردی معمولی frontend و backend را پیدا می کنیم. در این دنیا حفظ اطلاعات تاریخی به شدت ضروری نیست. در اینجا ما بیشتر علاقه مندیم که آنچه کاربر برای انجام عملیات خود نیاز دارد ذخیره کنیم و این عملیات می تواند در طول زمان منقضی شود. علاوه بر این، در دنیای عملیاتی، ما مقادیر زیادی از اطلاعات شخصی مانند ایمیل، شماره تلفن تماس، آدرس، و غیره را ذخیره می کنیم. این به این دلیل است که ما به آنها برای تماس با کاربر نیاز داریم. مثلا برای شما سفارش بفرستند.

در دنیای تحلیلی آنچه شما می خواهید ذخیره تا حد امکان اطلاعات است. در بسیاری از موارد تاریخی. در این دنیا نیز، ذخیره اطلاعات شخصی، به عنوان مثال ایمیل، به شدت ضروری نیست. در اینجا ما نیازی به تماس با کاربر نداریم و در نتیجه نیازی به دانستن ایمیل واقعی او نداریم، اما ممکن است برایمان جالب باشد که بدانیم در طول سال ها چند ایمیل مختلف در سیستم استفاده شده است.

در این دنیای تحلیلی است که ما پلتفرم داده خود را پیاده سازی خواهیم کرد.

پلتفرم داده چیست؟

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

لینک های نسخه:

کاربران ما چه کسانی هستند؟

قبل از حرکت رو به جلو برای اجرای یک راه حل تکنولوژیکی، باید کاربرانی که از راه حل مذکور استفاده می کنند و همچنین نیازهای تجاری آنها را شناسایی کنیم.
در زیر نمونه‌ای از کاربرانی را که می‌توانیم برای یک پلتفرم داده پیدا کنیم، فهرست می‌کنیم.

مهندس داده.

توضیحات تصویر

بر طراحی، ساخت، نگهداری و مدیریت زیرساخت های داده تمرکز دارد.

  • پیاده سازی و مدیریت سیستم های ذخیره سازی داده ها (پایگاه های اطلاعاتی، ذخیره سازی ابری و غیره)

  • اطمینان از پاک بودن، سازماندهی و ساختار مناسب داده ها به گونه ای که بتوان از آنها به طور موثر استفاده کرد.

تحلیلگران داده و دانشمندان داده و مهندسان یادگیری ماشین.

توضیحات تصویر

  • دانشمند داده: از تکنیک های آماری و تجزیه و تحلیل داده ها برای استخراج اطلاعات مفید با هدف بهبود تصمیم گیری و اثربخشی یک شرکت استفاده می کند.

  • تحلیلگر داده: داده ها را جمع آوری، پردازش و تجزیه و تحلیل می کند تا به شرکت ها در تصمیم گیری آگاهانه کمک کند. وظیفه آنها ارائه اطلاعات مرتبط و قابل اجرا برای رشد و موفقیت کسب و کار است.

  • مهندس یادگیری ماشین: مدل‌های یادگیری ماشین را برای حل مشکلات پیچیده تجاری توسعه و بهینه‌سازی کنید. وظیفه شما ساختن سیستم هایی است که می توانند یاد بگیرند و با قرار گرفتن در معرض داده های بیشتری بهبود یابند.

راه حل ساده

اکنون که می دانیم مشتریان ما چه کسانی هستند، می توانیم شروع به ارائه راه حل کنیم. همانطور که در مقدمه پیش بینی شده بود، از ساده ترین به پیچیده ترین مدل می رویم.

توضیحات تصویر

در این راه حل، دنیای عملیاتی و دنیای تحلیلی یک پایگاه داده مشترک دارند.

توجه داشته باشیم که همه کاربران ما یک سیستم مشترک دارند. پلت فرم داده از همان پایگاه داده بقیه سیستم عملیاتی به عنوان یک سیستم ذخیره سازی استفاده خواهد کرد.

برای مشاغل کوچک و متوسط، این می تواند یک راه حل مصالحه باشد، جایی که نمی خواهید پیچیدگی اضافه کردن سیستم های ذخیره سازی خاص را برای دنیای تجزیه و تحلیل اضافه کنید.

پلت فرم داده نیازی به ارائه سیستم ذخیره سازی خاصی نخواهد داشت.

  • مزایا: سیستم ساده تر برای نگهداری.

  • معایب: اقدامات انجام شده در دنیای تحلیلی (به عنوان مثال، به دست آوردن داده ها در داشبورد) می تواند بر عملیاتی مانند خرید یک محصول از قسمت ظاهری تأثیر بگذارد زیرا سیستم ذخیره سازی مشترک است.

ابزارهایی که باید تهیه کنیم

توضیحات تصویر

پایگاه داده

  • postgresql، mysql، oracle، و غیره و غیره
  • شماتیک ها
  • تخته ها
  • مدیریت مجوزها

برنامه های کاربردی

  • آنها جداول را از پایگاه داده می خوانند، یک تبدیل انجام می دهند و نتایج را در جداول دیگر می نویسند.
  • ETL، استخراج، تبدیل، بارگذاری

داشبوردها

  • نمودارهایی که داده های مورد علاقه را نشان می دهد

فراگیری ماشین

نمونه ای از برنامه هایی که می توانیم استفاده کنیم

حکومت

تعریف و بکارگیری قوانین خاص برای استانداردسازی نام جداول، پایگاه‌های اطلاعاتی، فرآیندها و غیره از اهمیت بالایی برخوردار خواهد بود.

همچنین ایجاد قوانینی برای استفاده از ابزارهای ارائه شده توسط پلتفرم داده مهم خواهد بود. به یاد داشته باشیم که در نهایت، پشت فناوری، افرادی هستند.

ما باید از استفاده نادرست از چنین فناوری هایی که حکمرانی برای آن ضروری است جلوگیری کنیم.

راه حل میانی.

توضیحات تصویر

در این راه حل می بینیم که دنیای عملیاتی اکنون بسیار پیچیده تر شده است.

این راه حل زمانی ضروری است که بخواهیم از تأثیر فرآیندهای دنیای تحلیلی بر دنیای عملیاتی جلوگیری کنیم. علاوه بر این، دنیای عملیاتی از سیستم های مختلفی تشکیل شده است. ما می خواهیم تمام داده های تحلیلی خود را در یک مکان داشته باشیم تا بتوانیم به راحتی آن ها را تحلیل و تبدیل کنیم.

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

  • مزایا: اقدامات انجام شده در دنیای تحلیلی بر عملیاتی تأثیر نمی گذارد زیرا سیستم ذخیره سازی مشترک نیست. تمام داده های تحلیلی در یک مکان جمع آوری شده است.
  • معایب: پیچیدگی و هزینه بیشتر.

ابزارهایی که باید تهیه کنیم

توضیحات تصویر

در این راه حل، ابزارهای ارائه شده مانند راه حل ساده است، اما اکنون نوع جدیدی از پایگاه داده، انبار داده و برنامه هایی داریم که به ما امکان مصرف اطلاعات سیستم های عملیاتی را می دهد. بقیه ابزارها همان ابزارهایی هستند که در راه حل قبلی توضیح داده شد.

انبار داده چیست؟

  • این یک پایگاه داده متمرکز است که بسیاری از منابع داده را ادغام می کند.
  • این اجازه می دهد تا سیستم های عملیاتی را از سیستم های تحلیلی جدا کنید.
  • پرس و جوهای راه اندازی شده از سیستم تحلیلی بر سیستم عملیاتی تأثیر نمی گذارد.
  • این اجازه می دهد تا اطلاعات را دوباره سازماندهی کنید تا به راحتی قابل تجزیه و تحلیل باشد.
  • این یک مدل داده واحد را ارائه می دهد.
  • این اجازه می دهد تا تاریخچه ای از اطلاعات را حفظ کنید که اپراتور، چون به آن نیاز ندارد، می تواند آن را حذف کند.
  • این به شما امکان می دهد چندین منبع داده را در یک مکان واحد ادغام کنید.

توضیحات تصویر

  • مدل سازی خاص، طرح ستاره.
  • متشکل از جداول واقعیت و ابعاد.
  • جدول حقایق: توالی رویدادها، تعداد بالای رکوردها.
  • جدول ابعاد: شرح حقایق، سوابق کم و بسیاری از ویژگی ها.
  • بهینه سازی پرس و جوها را در حالت خواندن اجازه می دهد.
  • این امکان پرس‌وجوهای ساده‌تر را فراهم می‌کند، بدون نیاز به JOIN‌های متعدد، همانطور که ممکن است در یک مدل رابطه نهادی عادی اتفاق بیفتد.
  • مجوزها از طریق GRANT ها روی جداول.

AWS Redshift چیست؟

توضیحات تصویر

این یک راه حل انبار داده است که توسط خدمات وب آمازون پیاده سازی شده است. بدون هیچ تلاشی، در فضای ابری، می توانیم سرور خود را ایجاد کنیم.

اسکرین شات بالا رابط گرافیکی برای ایجاد و پیکربندی AWS Redshift را نشان می دهد.

¡مراقب باشید! هرگز از رابط گرافیکی برای ساخت و نگهداری زیرساخت ابری خود استفاده نکنید. همیشه از زیرساخت به عنوان کد استفاده کنید. با این کار زیرساخت‌های خود را می‌توانید تکرار، خودکار و به راحتی توسط هر کسی در تیم یا سازمان خود نگهداری کنید. برای این کار راه حل های مختلفی مانند CloudFormation، CDK، Terraform و بسیاری دیگر وجود دارد.

در زیر یک نمونه کد Terraform را مستند می کنیم که به شما امکان می دهد به راحتی یک خوشه AWS Redshift بدون سرور ایجاد کنید.

  1 resource "aws_redshiftserverless_workgroup" "serverless" {
  2   workgroup_name       = var.name
  3   namespace_name       = aws_redshiftserverless_namespace.serverless.id
  4   base_capacity        = var.base_capacity
  5   security_group_ids   = var.security_group_ids
  6   subnet_ids           = var.subnet_ids
  7   enhanced_vpc_routing = true
  8   publicly_accessible  = var.publicly_accessible
  9   tags                 = var.tags
 10 }
 11 
 12 resource "aws_redshiftserverless_namespace" "serverless" {
 13   namespace_name       = var.name
 14   admin_username       = var.admin_username
 15   admin_user_password  = var.admin_user_password
 16   db_name              = var.db_name
 17   iam_roles            = var.iam_roles
 18   default_iam_role_arn = var.default_iam_role_arn
 19   tags                 = var.tags
 20 
 21   # https://github.com/hashicorp/terraform-provider-aws/issues/26624
 22   lifecycle {
 23     ignore_changes = [
 24       iam_roles
 25     ]
 26   }
 27 }
 28 
 29 resource "aws_route53_record" "serverless" {
 30   for_each = toset(var.route53_record_zone_ids)
 31   zone_id  = each.value
 32   name     = "redshift-${var.route53_record_name}"
 33   type     = "CNAME"
 34   ttl      = 30
 35   records  = aws_redshiftserverless_workgroup.serverless.endpoint.*.address
 36 }
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

راه حل پیشرفته

توضیحات تصویر

دو عنصر جدید در این راه حل ظاهر می شود: Data Lake یا Lakehouse و منابع داده از نوع JSON، AVRO، XML یا هر نوع API.

ما این راه حل را زمانی اجرا خواهیم کرد که مجبور باشیم مقادیر زیادی از داده های بدون ساختار مانند رویدادهای ایجاد شده توسط اینترنت اشیا را ذخیره کنیم.

  • مزایا: ما می توانیم داده های بدون ساختار را در مقادیر زیاد ذخیره کنیم.
  • معایب: پیچیدگی و هزینه بیشتر.

ابزارهایی که باید تهیه کنیم

توضیحات تصویر

در این راهکار ابزارهایی که قرار است ارائه شود مانند راه حل میانی است، اما اکنون نیاز به پیاده سازی Data Lake یا Lakehouse اضافه شده است.

در مورد ما، و چون از ابزارهای ارائه شده توسط AWS در فضای ابری استفاده می کنیم، Lakehouse با استفاده از AWS S3 پیاده سازی می شود.

دریاچه داده یا لیک هاوس چیست؟

  • این یک سیستم ذخیره سازی داده عظیم و ارزان است.
  • برای ذخیره مقادیر زیادی از اطلاعات در قالب اصلی خود، بدون نیاز به ساختار داده‌ها به روشی خاص (JSON، XML، گزارش‌ها و غیره) استفاده می‌شود.
  • داده ها می توانند از منابع مختلف، پایگاه داده ها، حسگرها، رکوردهای ماشین، API ها و غیره به دست آیند.
  • این اجازه می دهد تا سیستم های عملیاتی را از سیستم های تحلیلی جدا کنید.
  • از سیستم های توزیع شده مانند AWS S3 آمازون یا HDFS (سیستم فایل Hadoop) استفاده می شود.

Data Lake یا Lakehouse که در AWS S3 پیاده سازی شده است چیست؟

توضیحات تصویر

  • در Adevinta، در AWS S3 (در Amazon Cloud) پیاده سازی شده است.
  • می توان آن را به عنوان یک سیستم فایل با پوشه ها مشاهده کرد
  • اما فایل سیستم نیست!
  • به فایل ها اشیاء می گویند.
  • ما می توانیم از طریق سیستم فایل Hadoop، Apache Spark و غیره و غیره از آن استفاده کنیم.
  • مجوزها از طریق IAM Roles.

چگونه می توانیم از Data Lake یا Lakehouse استفاده کنیم؟

توضیحات تصویر

برای استفاده از آن اپلیکیشن هایی مانند آپاچی اسپارک وجود دارد. اسکرین شات بالا یک نوت بوک را نشان می دهد که کد Apache Spark را اجرا می کند که یک فایل gzip شده را می خواند و اطلاعات موجود در آن را نمایش می دهد.

نتیجه.

در این مقاله راه حل های مختلفی برای ساختن یک پلتفرم داده ارائه کرده ایم. از ساده ترین تا پیچیده ترین. راه‌حل‌های دیگری نیز ممکن است، اما همه آن‌ها بخش‌های بسیار مشابهی با مواردی که در اینجا مورد بحث قرار گرفته‌اند، خواهند داشت.

اکنون تنها چیزی که باقی می‌ماند این است که شما نیز پلتفرم داده خود را در شرکت خود راه‌اندازی کنید و به ارتقا یا بهبود شغلی که شایسته آن هستید دست یابید.

نوشته های مشابه

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

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

دکمه بازگشت به بالا