عارف خندان
عارف خندان
خواندن ۴ دقیقه·۴ سال پیش

سریالایز کردن داده ها در بیگ دیتا

حتما با وبسایت هایی مواجه شدید که نتایج و موارد رو به صورت pagination به شما نمایش میده

به این معنی که موارد رو صفحه بندی میکنه و بعد مشاهده چند مورد میتونید بزنید صفحه بعدی و بقیه رو مشاهده کنید.

Pagination
Pagination

اوکی! حالا تصور کنید یک داشبورد بیگ دیتایی دارید که وقتی به بک اند بیگ دیتایی خودش درخواست میزنه, چند ترابایت دیتا دریافت میکنه تا برای شما Visualize کنی, خروجی خلاصه اکسل بده, یا اصلا به صورت paginate نشونتون بده.

واضح و مبرهنه ( مبرهن خیلی کلاس داره }: ) که این حجم دیتا یهویی با یه درخواست GET تقدیم داشبورد شما نمیشه, اینجاست که ابزار های باحال serialization یا به قول بریتانیایی ها serialisation (شبیه اما واتسون در فیلم دیو و لبر بخونیدش) وارد کار میشن, وظیفه این رفقا اینه که داده های بزرگتر رو به فرمتی تبدیل کنن که بشه تیکه تیکه در شبکه انتقالشون داد یا اصلا خورد خورد در حافظه ذخیره شون کرد (که مثلا به آرامی پردازش بشه, دایجست بشه, یا هر کار دیگه ای), و البته معمولا اینترفیس خوبی هم برای ذخیره, انتقال, و بازیابی و به هم چسبوندشون فراهم میکنن. ( اگه به افسانه های کهن علاقه مند باشید اینجا باید بگم که در واقع seth اوزیریس رو سریالایز کرد, و همسر اوزیریس, ایس ایس, تیکه هاشو جمع آوری کرد و اون رو deserialization کرد. _منبع جهت مطالعه: https://myth.tarikhema.org/article-1259/قتل-اوزيريس _ ).

نکته جالب اینجاست که لزومی نداره حتما داده رو در مقصد, دقیقا مثل قبل دیسریالایز کنید, یه وقتایی این امکان فراهم هست که مثلا دیتای XML سریالایز کنید و در مقصد دیتا رو در قالب Json سرهم کنید. (راستشو بخواید اوزیریس هم بعد دیسریالایز شدن دیگه اون اوزیریس قبلی نبود و کلی ایس ایس از این قضیه شاکی شد ;) ).

با بزرگتر شدن داده ها و حرکت نرم افزار ها به سمت تعامل با بیگ دیتا, ابزار های زیادی تولید شده و زبان های برنامه نویسی زیادی برای سازگاری با این ها کلاس ها و ماژول هایی ارائه دادن (مثل java.io.Serializable در جاوا), اینجا ما به ویژگی های چند تا از خوبای این قضیه نگاهی میندازیم, اوکی؟

Apache AVRO

آورو, اسم و لوگوی خودش رو از یه کارخونه قدیمی انگلیسی گرفته که از این هواپیماهای ملخ دار جنگنده میساخته و الان دیگه اون کارخونه منحل شده.

Apache Thrift

آپاچی ثریفت در اصل واسه فیسبوک بوده و برای امور خودش ابداعش کرده, که بعد ها به بنیاد آپاچی سپرده شده.

Protobuf

پروتوباف یا Protocol Buffers هم محصول گوگله که تقریبا در تمام ارتباطات بین ماشین ها در گوگل ازش استفاده میشه!

حالا ویژگی این ابزار ها چیه؟

  • این ابزار ها , برای اینکه کار برنامه نویس رو راحت کنن, نه تنها API مناسب برای سریالایز کردن دیتا رو فراهم کردن, بلکه ابزار Code Generator هم در اختیارمون گذاشتن و ما میتونیم با یک زبان واسط (Interface description language), کار های دیتایی خودمون مثل مشخص کردن فیلد ها به همراه نوع اون ها, اجباری, یا اختیاری بودنشون, یا حتی کوئری های ساده (شبیه به stored procedures) رو تعریف کنیم, و اون ابزار یه کد آماده به هر زبانی که دلمون میخاد بهمون میده و میتونیم به عنوان یه کلاس یا ماژول بزاریمش کنار کدمون تا اون بخش کار رو هندل کنه.
  • علاوه بر این ویژگی versioning هم اهمیت زیادی داره, که اگه فیلد های شما تغییر کرد بتونید به شیوه ای مدیریت شده و راحت, تغییرات رو در سرویس اعمال کنید و هر دیتایی یا هر دیتا سورسی با ورژن خودش هندل بشه.
  • ویژگی جذاب دیگه size optimization یا در واقع نوعی فشرده سازی هستش که اکثر این ابزار ها به صورت build in دارنش تا در بهینه سازی پهنای باند و فضای ذخیره سازی به شما کمک کنن, معمولا وقتی از ابزار های سریالیزیشن استفاده میکنید لازم نیست خودتون نگران موضوع فشرده سازی باشید.
  • پشتیبانی از Map Reduce هم ویژگی مهمیه چون اکثر کارهای بیگ دیتا با مپ ریدوس انجام میشه, مثلا Apache Avro برای اینکه خیال شما رو راحت کنه کلاس org.apache.avro.mapred رو برای جاوا ارائه داده که راحت میتونید فایل های آورو رو تحویل جاب های Map Reduce کنید.
  • پشتیبانی از پروتکل های مختلف و شیوه های مختلف انتقال هم باعث میشه شما زمان کمتری رو صرف کد نویسی اعصاب خورد کن سوکت های شبکه کنید. اینجا Apache Thrift خیلی خوش درخشیده و پروتکل هایی از جمله TBinaryProtocol, TCompactProtocol, TJSONProtocol, TSimpleJSONProtocol رو پشتیبانی میکنه, چندین متد Transport داره که بسته به بستر انتقال و نیاز شما میتونید تغییر بدید و حتی چند نوع سرور مولتی ترد خودش ایجاد میکنه که دیتا رو ارسال و دریافت کنه , یعنی شما فقط بهش میگید چطوری ارسال کنه و دیگه بقیش با خودشه و کلاینت و سرور و براتون ایجاد میکنه.

امیدوارم این توضیح کوتاه شما رو با این بخش مهم بیگ دیتا کمی آشنا کرده باشه

ماسک بزنید و مراقب خودشون باشید.





big datadata serializationبیگ دیتا
دوآپس بیگ دیتا و کلود, دانشجوی علوم شناختی.
شاید از این پست‌ها خوشتان بیاید