ما المقصود بـ Presto أو PrestoDB؟
Presto (أو PrestoDB) هو محرك استعلامات SQL موزع مفتوح المصدر، مصمم بالأساس لإجراء الاستعلامات التحليلية السريعة على البيانات من أي حجم. وهو يدعم كلاً من المصادر غير العلائقية (مثل Hadoop Distributed File System (HDFS)، وAmazon S3، وCassandra، وMongoDB، وHBase)، ومصادر البيانات العلائقية (مثل MySQL، وPostgreSQL، وAmazon Redshift، وMicrosoft SQL Server، وTeradata).
يستطيع Presto الاستعلام عن البيانات وهي في مكانها بدون الحاجة إلى نقلها إلى نظام تحليلات منفصل. يجري تنفيذ الاستعلام بالتوازي عبر هيكلة خالصة مستندة إلى الذاكرة، مع إرجاع معظم النتائج في ثوانٍ. ستجده مستخدَمًا لدى العديد من الشركات المعروفة مثل Facebook وAirbnb وNetflix وAtlassian وNasdaq.
ما تاريخ Presto؟
بدأ Presto كمشروع في Facebook لتشغيل استعلامات تحليلية تفاعلية مقابل مستودع بيانات يبلغ حجمه 300 بيتابايت مصمم بمجموعات كبيرة مستندة إلى Hadoop/HDFS. قبل إنشاء Presto، استخدم Facebook نظام Apache Hive، الذي أُنشئ ونُشر في عام 2008، للإتيان بالمعرفة ببنية SQL إلى منظومة Hadoop. كان لنظام Hive تأثير كبير في منظومة Hadoop بتبسيط وظائف Java MapReduce المعقدة إلى استعلامات شبيهة باستعلامات SQL، مع القدرة على تنفيذ المهام على نطاق واسع. ومع ذلك، فلم يكن محسَّنًا لتوفير الأداء السريع المطلوب في الاستعلامات التفاعلية.
في عام 2012، أنشأت مجموعة Facebook Data Infrastructure النظام Presto، وهو نظام للاستعلامات التفاعلية يمكن أن يعمل بسرعة على نطاق بيانات بأحجام من البيتابايت. وطُرح على مستوى الشركة في ربيع عام 2013. في نوفمبر 2013، جعلت Facebook النظام Presto مفتوح المصدر بموجب ترخيص برنامج Apache، وأتاحت تنزيله للجميع على Github. اليوم، أصبح Presto خيارًا شائعًا لإجراء استعلامات تفاعلية على Hadoop، ولديه الكثير من المساهمات من Facebook والمؤسسات الأخرى. يستخدم أكثر من ألف موظف في Facebook طريقة تنفيذ Presto، ويشغِّلون أكثر من 30 ألف استعلام، ويعالجون بيانات بمقدار بيتابايت واحد يوميًا.
كيف يعمل Presto؟
Presto هو نظام موزَّع يعمل على Hadoop، ويستخدم هيكلة مشابهة لأنظمة إدارة قواعد بيانات المعالجة المتوازية الضخمة (MPP) التقليدية. وهو يحتوي على عقدة منسِّق واحدة تعمل بالتزامن مع عُقد عامل متعددة. يرسل المستخدمون استعلام SQL الخاص بهم إلى المنسِّق الذي يستخدم محركًا مخصصًا للاستعلامات والتنفيذ من أجل تحليل خطة استعلام موزَّعة وتخطيطها وجدولتها عبر عُقد العامل. لقد صُمم هذا النظام لدعم دلالات ANSI SQL القياسية، بما في ذلك الاستعلامات المعقدة، والتجميعات، والصلات، والصلات الخارجية اليمنى/اليسرى، والاستعلامات الفرعية، ووظائف النوافذ، والأعداد المميزة، والنسب المئوية التقريبية.
بعد تجميع الاستعلام، يعالج Presto الطلب في مراحل متعددة عبر عُقد العامل. تتم جميع عمليات المعالجة في الذاكرة، وتسلك مسارات عبر الشبكة بين المراحل؛ وذلك لتجنب أي عبء غير ضروري لعمليات الإدخال/الإخراج. تسمح إضافة المزيد من عُقد العامل بتعزيز المعالجة المتوازية وتسريع المعالجة في حد ذاتها.
لجعل Presto قابلاً للتوسع إلى أي مصدر بيانات، صُمم بخاصية تجريد التخزين لتسهيل إنشاء موصلات قابلة للتوصيل. وبفضل ذلك، لدى نظام Presto العديد من الموصلات، بما في ذلك المصادر غير العلائقية (مثل Hadoop Distributed File System (HDFS)، وAmazon S3، وCassandra، وMongoDB، وHBase)، ومصادر البيانات العلائقية (مثل MySQL، وPostgreSQL، وAmazon Redshift، وMicrosoft SQL Server، وTeradata). ويُستعلم عن البيانات في مكان تخزينها بدون الحاجة إلى نقلها إلى نظام تحليلات منفصل.
ما الاختلافات بين Presto وHadoop؟
Presto هو محرك استعلامات SQL مفتوح المصدر وموزَّع مصمم للاستعلامات السريعة والتفاعلية حول البيانات في HDFS وغيرها. وهذا على عكس Hadoop/HDFS، فإنه لا يحتوي على نظام تخزين خاص به. وبالتالي، فإن Presto مكمل لـ Hadoop، حيث تعتمد المؤسسات كليهما لحل تحديات أعمال أوسع. يمكن تثبيت Presto مع أي طريقة تنفيذ لـ Hadoop، ويُضمَّن في حزمة في توزيع Hadoop على Amazon EMR.
مَن يستخدم Presto؟
يُستخدم Presto في الإنتاج على نطاق واسع للغاية في العديد من المؤسسات المعروفة. ستجده مستخدَمًا في Facebook، وAirbnb، وNetflix، وAtlassian، وNasdaq، وغيرها الكثير. يستخدم أكثر من ألف موظف في Facebook طريقة تنفيذ Presto، ويشغِّلون أكثر من 30 ألف استعلام، ويعالجون بيانات بمقدار بيتابايت واحد يوميًا. في المتوسط، تشغِّل Netflix حوالي 3500 استعلام يوميًا على مجموعات Presto الخاصة بها. أنشأت Airbnb أداة تنفيذ الاستعلامات المستندة إلى الويب Airpal وجعلتها مفتوحة المصدر، وهي تعمل على الهيكلة الخاصة بالنظام Presto. يمكن العثور على مجتمع Presto الأوسع في هذا المنتدى وعلى صفحة Presto على Facebook.
كيف يمكنك نشر Presto في السحابة؟
يُعد Presto عبء عمل مثاليًا في السحابة؛ لأن السحابة توفر الأداء وقابلية التوسع والموثوقية والتوافر ووفورات حجم هائلة. يمكنك تشغيل مجموعة Presto في بضع دقائق. لا داعي للقلق بشأن توفير العقدة أو إعداد المجموعة أو تكوين Presto أو ضبط المجموعة.
كيف يمكن لـ AWS إعداد طريقة تنفيذ Presto في السحابة؟
تُعد Amazon EMR وAmazon Athena أفضل خدمتين لنشر Presto في السحابة؛ لأنهما تتكاملان مع Presto وتختبران دقته بالنيابة عنك وفقًا لنطاق AWS وبساطتها وفعاليتها من حيث التكلفة. باستخدام Amazon EMR، يمكنك تشغيل مجموعات Presto في دقائق بدون الحاجة إلى توفير العقدة أو إعداد المجموعة أو تكوين Presto أو ضبط المجموعة. تتيح لك EMR توفير واحد أو مئات أو آلاف من مثيلات الحوسبة في دقائق. تتيح لك Amazon Athena نشر Presto باستخدام منصة AWS Serverless، بدون الحاجة إلى إعداد أو إدارة أو ضبط أي خوادم أو آلات افتراضية أو مجموعات. ما عليك سوى الإشارة إلى بياناتك في Amazon S3، وتحديد المخطط، والبدء في الاستعلام باستخدام محرر الاستعلام المدمج، أو باستخدام أدوات ذكاء الأعمال (BI) الحالية. تعالج Athena استعلاماتك تلقائيًا بالتوازي، وتوسِّع نطاق الموارد ديناميكيًا لسرعة تشغيل الاستعلامات. وليس عليك أن تدفع إلا مقابل الاستعلامات التي تشغلها.