بهرغم مزایای بسیار زیادی که بزرگدادهها برای ما به همراه داشتهاند و باعث پیشرفت بسیاری از کسب و کارها شدهاند، اما واقعیت این است که دردسرهای بسیاری برای طراحان و توسعهدهندگان به همراه داشتهاند. بسیاری از توسعهدهندگان بر این باورند که زبانهای برنامهنویسی سنتی این پتانسیل را ندارند تا برای غلبه بر پیچیدگیها و حجم بالای دادهها مورد استفاده قرار گیرند و بر همین اساس ما به زبانهای ویژهای نیاز داریم که برای این منظور طراحی شدهاند. دانشمندان علم داده و طراحان برای غلبه بر این چالش گزینههای متعددی پیش رو دارند که از جمله این گزینهها میتوان به سکوهای توسعه گرافیکمحور، زبانهای مشتق شده از خانواده سی همچون سی پلاس پلاس، جاوا و درنهایت زبان R اشاره کرد.
در 25 سال گذشته زبان برنامهنویسی R موفق شده است محبوبیت خود را نزد توسعهدهندگان حفظ کند. اما هیچگاه به اندازه زبانهای دیگری همچون زبان سی یا اسلاف آن موفق نشد بهشکل گسترده به نیازهای توسعهدهندگان پاسخ دهد. اما به نظر میرسد اوضاع بهآرامی در حال تغییر است. این زبان در بعضی از زمینهها بهبود پیدا کرده است و همین موضوع زبان R را به ایدهآلترین گزینه برای کار با بزرگ دادهها تبدیل کرده است. به طوری که اکنون زمان آن فرا رسیده است تا بهشکل جدیتری از زبان R استفاده کنیم.
اولیور براچت یکی از وبلاگنویسان R در پستی که مخاطب آن متخصصان و توسعهدهندگان هستند، به توصیف مزایا و قابلیتهای زبان R پرداخته است. او در پست خود با اشاره به نقطه نظرهای توسعهدهندگان بزرگ نوشته است که زبان R بهمنظور مدیریت و غلبه بر چالش بزرگ دادهها ایدهآلترین زبان است، به طوری که بدون هیچگونه مشکلی قادر است با این حجم عظیم از دادهها کار کند. همچنین، به این نکته توجه داشته باشید که تسلط بر زبان R و بهویژه بزرگ دادهها مزیتهای بسیاری به همراه دارد. گزارشهایی که بهتازگی منتشر شدهاند نشان میدهند که صنایع بزرگ اکنون بهدنبال استخدام افرادی هستند که در زمینه مدیریت بزرگ دادهها متبحر هستند(شکل 1). جان وایفلز متخصص علم دادهها در سخنرانی خود در جریان برگزاری کنفرانس UseR پیشنهاد داد، دادهها را بر اساس اندازه و حجم آنها به سه گروه طبقهبندی کنیم. گروه اول مجموعه دادههایی هستند که تا یک میلیون رکورد دادهای را شامل میشوند و بدون هیچگونه مشکلی از سوی زبان R پردازش میشوند. گروه دوم مجموعه دادههایی هستند که بالغ بر یک میلیون تا یک میلیارد رکورد دادهای میشوند که باز هم از طریق زبان R میتوان آنها را پردازش کرد، اما برای این منظور به تلاش بیشتر و تکنیکهای خاصی نیاز است. گروه سوم مجموعه دادههایی هستند که فراتر از یک میلیارد رکورد دادهای هستند که دیگر با زبان استاندارد R نمیتوان آنها را پردازش کرد و برای این منظور باید از الگوریتمهای تحلیلگری همچون MapRedurce استفاده کرد. این الگوریتمها را میتوان در زبان R پیادهسازی و طراحی کرد و در ادامه از طریق رابطهایی همچون هادوپ و نمونههای مشابه برای پردازش آنها استفاده کرد.
دانشمندان علم دادهها و توسعهدهندگان از چه زیرساختهایی برای پردازش بزرگ دادهها استفاده میکنند؟
همان گونه که در مقدمه این مقاله به آن اشاره داشتیم، طراحان و توسعهدهندگان بهمنظور پردازش دادهها گزینههای مختلفی در اختیار دارند که در این میان تعدادی از آنها در زمینه مدیریت بزرگ دادهها موفقتر از نمونههای مشابه ظاهر شدهاند. در این قسمت، به تعدادی از این گزینههای موفق و محدودیتهایی که دارند نگاهی خواهیم داشت.
زیرساختهای توسعه مبتنی بر رابط کاربری
زیرساختها و محیطهای توسعه یکپارچه متعددی برای تولید و توسعه نرمافزارها وجود دارند که همگی آنها بر مبنای یک رابط کاربری عمل میکنند. طیف گستردهای از زیرساختها از یک محیط کاربرپسند استفاده میکنند، اما در زمینه ارائه قابلیتهایی بهمنظور پردازش بزرگدادهها با کاستیهایی روبهرو هستند. با توجه به آنکه در آینده نه چندان دور بزرگ دادهها در اولویت قرار خواهند گرفت، این چنین سکوهایی محبوبیت خود را بهآرامی از دست خواهند داد؛ به همین دلیل، ضروری است طراحان و برنامهنویسان به زبانهای برنامهنویسی قدیمی کاملاً مسلط باشند.
زبان سی در چه بخشهایی قادر است به متخصصان علم دادهها کمک کند و در چه بخشهایی با محدودیت روبهرو است؟
زبان سی اولین بار در سال 1978 به دنیای برنامهنویسی وارد شد و در ادامه زبانهای بسیاری از آن مشتق شدند. سی بهعنوان پایه زبانهای شاخصی همچون سی پلاس پلاس، جاوا، پیتون و دیگر زبانهای برنامهنویسی شیگرا شناخته میشود. در حالی که زبانهایی که پس از سی متولد شدند، قابلیتهای قدرتمندی در زمینه شیگرایی ارائه میکنند، با وجود این در بعضی از بخشها با کاستیهایی روبهرو هستند. به طور مثال، این زبانها قادر نیستند همچون زبان R محاورههای مربوط به بزرگ دادهها را مدیریت کنند. زبان سی متدها و قابلیتهای قدرتمندی برای مدیریت محاورههای مرتبط با دادهها در اختیار دارد که از آن جمله میتوان به موارد زیر اشاره کرد.
مزایای زبان سی در زمان کار با بزرگ دادهها
• سی یک محیط ایدهآل بهمنظور پردازش دادههای حساس است.
• اکوسیستمهایی همچون جاوا به هادوپ شباهت دارند.
• زبان سی پلاس پلاس این توانایی را دارد تا برای پردازش دادههای راداری مورد استفاده قرار گیرد.
• این زبانها برای توسعهدهندگانی که نیاز دارند چند گیگابایت داده را مدیریت کنند ایدهآل هستند؛ با این حال، به اندازه کافی قوی نیستند تا بزرگ دادهها را مدیریت کنند.
معایب بهکارگیری زبانهای مشتق شده از سی
سی پلاس پلاس در بعضی از پروژههای مرتبط با بزرگ دادهها میتواند مورد استفاده قرار گیرد، اما برنامهنویسان باید به اندازه کافی مهارت داشته باشند تا اشارهگرها را بهدرستی ارجاع دهند؛ در غیر این صورت، با خطایی همچون سرریز بافر یا یک استثنای تعریف نشده روبهرو میشوند.
بسیاری از برنامهنویسان در زمینه کار با اشارهگرها مهارت ندارند و همین موضوع باعث میشود تا ساخت پروژههای مرتبط با بزرگ دادهها با زبانی همچون سی پلاس پلاس زمان زیادی را هدر دهند.
همان گونه که مشاهده کردید، زمان بیش از اندازه طولانی برای ساخت پروژهها و مهمتر از آن پیچیدگیهایی که ممکن است به وجود آید، طراحان را به فکر انداخته است تا بهدنبال جایگزینی برای حل مشکلات این چنینی باشند. حال که با قابلیتها و محدودیتهای زبانهای یاد شده آشنا شدید، اکنون زمان آن رسیده است که به بررسی این موضوع بپردازیم که اساساً چرا زبان R گزینه ایدهآلی برای کار با بزرگ دادهها است. گزارشی که سال گذشته میلادی سایت اسپکتروم منتشر کرد نشان داد بهترتیب زبان R و پیتون اصلیترین گزینهها برای مدیریت بزرگ دادهها به شمار میروند. (شکل 2)
اگر به دنبال پردازش بزرگ دادهها هستید، وقت خود را روی یادگیری R سرمایهگذاری کنید
زبان برنامهنویسی R اولین مرتبه در سال 1993 به دنیای برنامهنویسی وارد شد. این زبان برنامهنویسی در 20 سال گذشته بهشکل محدودی از سوی توسعهدهندگان مورد استفاده قرار میگرفت، اما در چند سال اخیر بهواسطه تواناییش در پردازش بزرگ دادهها یک بار دیگر مورد توجه توسعهدهندگان قرار گرفته است. شرکتهای نرمافزاری و توسعهدهندگان از چند سال پیش بهشکل گستردهای از این زبان بهمنظور جمعآوری بزرگ دادهها و رایانش توزیع شده استفاده کردهاند. همین موضوع باعث شده است تا امروزه شاهد عرضه کتابخانههای گستردهای از این زبان باشیم که در زیرساختهای بزرگ رایانش توزیع شده مورد استفاده قرار میگیرند. جالب آنکه تعدادی از این کتابخانهها را میتوان روی سامانههای کوچکتر و حتی کامپیوترهای شخصی مورد استفاده قرار داد.
مارتین هلر ویراستار سایت اینفوورلد دلایل متعددی را برای انتخاب زبان R بهعنوان ایدهآلترین راهکار مدیریت بزرگ دادهها برشمرده است. او در بخشی از مقاله خود آورده است: «بستهها و توابعی از زبان R وجود دارند که قادرند دادهها را از هر منبع معقول و مناسبی بارگذاری کنند و تنها محدود به فایلهای CSV نیستند. فراتر از کاراکترهای متمایزکنندهای همچون کاما که از طریق تابع read.tabe() مورد استفاده قرار میگیرند، توسعهدهندگان این توانایی را دارند تا جداول دادهای را کپی کرده و انتقال داده، فایلهای اکسل را خوانده، اکسل را به R متصل کرده، دادههای متعلق به SAS و SPSS را فراخوانی کرده، به بانکهای اطلاعاتی دسترسی داشته، به سرویسهای ارائه شده از سوی Saleforce متصل شده و به رابطهای RESTful دسترسی داشته باشند. در واقع، شما برای وارد کردن دادهها نیاز ندارید ترکیب نحوی هریک از سرویسها و نرمافزارهایی که به آنها اشاره شد را یاد بگیرید. بهواسطه آنکه ابزارTools RStudio منوی ویژهای بهنام Import Database برای وارد کردن دادهها در اختیارتان قرار میدهد. این منو به توسعهدهندگان کمک میکند با نگاه کردن به دادهها از درون یک فایل متنی یا نشانی اینترنتی و تنظیم گزینه مناسب تبدیل از طریق منوی کشویی که این ابزار در اختیارشان قرار میگیرد، دستورات تعاملی خود را بهشکل درستی ایجا کنند.»
بارگذاری دادهها از منابع چندگانه
پیش از آنکه بزرگ دادهها به یکی از جریانهای بزرگ دنیای ما تبدیل شوند، اکثر برنامههای معروف دادههای مورد نیاز خود را تنها از یک منبع دریافت میکردند، اما امروزه دیگر این گونه نیست. بزرگ دادهها همراه با ظهور فناوری نامآشنایی بهنام اینترنت اشیا به دنیای ما وارد شدند. امروزه اکثر پروژههای کوچک و بزرگ برای انجام کارهای خود به دادههایی که از منابع چندگانه به دست میآیند وابسته است. برنامههای بازاریابی یک نمونه کلاسیک در این زمینه به شمار میروند. این گونه برنامهها اطلاعات مرتبط با مشتریان را از بانک اطلاعاتی خود، شبکههای اجتماعی و از دستگاههایی که مشتریان مورد استفاده قرار میدهند به دست میآورند. به همین دلیل است که شما به زبان برنامهنویسی ویژهای نیاز دارید که بتواند محاورههای مربوط را بهمنظور جمعآوری دادهها از منابع مختلف به دست آورد و آنها را پردازش کند. (شکل 3)
توان وفقپذیری و سازگاری برنامهنویسی
یادگیری هر ترکیب نحوی جدید زمانبر است. متأسفانه زبانهای برنامهنویسی همهمنظوره بهگونهای طراحی شدهاند که باید نکات مربوط به آنها با دقت بیشتری یاد گرفته شوند. تمرکز زیاد روی جزئیات بهویژه در زمان کار با بزرگ دادهها اهمیت پیدا میکند. اما زبان برنامهنویسی R در این زمینه یک استثنا به شمار میرود. بهواسطه آنکه اگر بر دستورات پایه تسلط پیدا کنید، قادر خواهید بود از کتابخانههای مرتبط با این زبان بهمنظور پردازش بزرگ دادهها بدون هیچ مشکل خاصی استفاده کنید.
سازگاری با زبانهای دیگر
یکی از نکات مثبتی که در ارتباط با زبان برنامهنویسی R وجود دارد این است که به شما اجازه میدهد زبان R را همراه با زبانهای مرتبط دیگری با این زبان همچون سی پلاس پلاس مورد استفاده قرار دهید.
توانایی استخراج از زیرساختهای ابری
اگر توسعهدهندگان ترکیب نحوی dplyr در زبان R را فراگیرند، قادر خواهند بود از این ترکیب نحوی بهمنظور اجرای محاورههای بزرگ دادهها روی زیرساختهای مختلف ابری همچون Google BigQuery و Amazon Redshift استفاده کنند.
شرکتهای هاستینگ سازگاری بیشتری با R پیدا کردهاند
به احتمال بسیار زیاد زبان R در آینده نزدیک به زبان استاندارد بزرگ دادهها تبدیل خواهد شد. به همین دلیل، شرکتهای هاستینگ از هماکنون بهدنبال آن هستند تا پشتیبانی بهتر و دقیقتری از این زبان به عمل آورند. در این بین، تعدادی از شرکتهای بزرگ هاستینگ به این فکر افتادهاند تا راه حلهای جدیدی را برای کمک به برنامهنویسان R ابداع کنند. Host.AG از جمله هاستینگهای بزرگی است که برای تحلیل تهدیدات سایبری از بزرگ دادهها استفاده میکند. این شرکت با اتکا بر بزرگ دادهها برای شناسایی حملات منع سرویس انکار شده و استقرار از بهترین راه حلهای ممکن استفاده میکند.
VPS.AG یکی دیگر از این شرکتهای بزرگ به این حقیقت مهم اشراف پیدا کرده است که بسیاری از مشتریان این شرکت به بزرگ دادهها وابستهاند، اما بهلحاظ بودجه با محدودیتهای بسیاری مواجه هستند. به همین دلیل، این شرکت سرویسهای میزبانی مقرون به صرفهای را در اختیار مشتریان خود قرار میدهد. مشتریانی که بهدنبال آن هستند دهها گیگابایت اطلاعات را ذخیرهسازی کنند. شرکت هاستینگ TrueHoster نیز از بزرگ دادهها برای ارائه سرویسهای پیشرفته در قالب طرحهای مختلف استفاده میکند. دیگر ارائهدهندگان سرویسهای هاست نیز بهدنبال افزایش سازگاری زیرساختهای خود با زبان R هستند.
آیا زبان R آینده بزرگ دادهها را رقم خواهد زد؟
بزرگ دادهها به اشکال مختلفی در حال تغییر زندگی ما هستند. با وجود این، تعداد محدودی از مردم در این باره صحبت میکنند که بزرگ دادهها چگونه زندگی برنامهنویسان را دستخوش تغییر خواهند ساخت. واقعیت این است که توسعهدهندگان همواره بهدنبال بهترین و قدرتمندترین راه حلها هستند. برنامهنویسان بهخوبی دریافتهاند که زبان R در مقایسه با دیگر زبانهای برنامهنویسی ویژگیهای بیشتری در ارتباط با تعامل با بزرگ دادهها در اختیارشان قرار میدهد. زبان R در شرایطی این ویژگیها را در اختیار برنامهنویسان قرار میدهد که زبانهای دیگر به این ویژگیها توجهی نداشتهاند. همین موضوع باعث شده است تا بحث به رسمیت شناختن زبان R در ارتباط با پردازش بزرگ دادهها بهعنوان یک راه حل استاندارد مطرح شود.