# محرك تطبيقات جوجل

محرك تطبيقات جوجل (بالإنجليزية: Google App Engine)‏ هي عبارة عن برنامج لتطوير واستضافة تطبيقات الويب في مراكز بيانات إدارة قوقل. أطلقت لأول مرة في إصدار بيتا في نيسان / أبريل 2008.
محرك تطبيقات جوجل هو سحابة الحوسبة والتكنولوجيا. انها تفعّل التطبيقات عبرالخوادم ومراكز البيانات. سحابة أخرى للمنصات المرتكزة تشمل العروض مثل الأمازون خدمات الإنترنت وخدمات مايكروسوفت أزور.
محرك تطبيقات جوجل مجانية تصل إلى مستوى معين من الموارد المستخدمة. تفرض رسوم إضافية للتخزين وعرض النطاق الترددي، أودوائر وحدة المعالجة المركزية المطلوبة من قبل التطبيق.

## لغات وأنظمة البرمجة الداعمة

حاليا، لغات البرمجة الداعمة هي جافا (Java) وبايثون (Python)، وبالتبعية، جي في ام (JVM)و لغات أخرى مثل جروفي (Groovy)وجي روبي (JRuby)و سكالا (Scala) وسلوجوري (Clojure). بنية شبكة بايثون (Python) التي تعمل على محرك التطبيقات تشمل Django, CherryPy, Pylons, web2py، بالإضافة إلى نظام الشبكة المكتوب لقوقل ومختلف التصاميم الأخرى الخاصة للبرنامج الذي برز منذ الانطلاق. وقالت جوجل انها تخطط لدعم المزيد من اللغات في المستقبل، وأن محرك التطبيقات قد كتب ليكون لغة مستقلة. يمكن لأي نظام بايثون (Python)التي تدعم WSGI باستخدام CGI (Common Gateway Interface) يمكن استخدامها لإنشاء تطبيق، والنظام يمكن تحميله بالتطبيق المتطور. المكتبات الخارجية مكتوبة في بايتثون (Python) نقية كما يمكن تحميلها.

## الاختلافات عن التطبيقات الأخرى المضافة

بالمقارنة مع الخدمات الأخرى التي تستضيف خدمات مثل أمازون إي سي 2، محرك تطبيقات توفر المزيد من البنية التحتية لتجعل من السهل كتابة تطبيقات متدرجة، ولكن يمكن فقط تشغيل عدد محدود من التطبيقات المصممة لتلك البنية التحتية.
محرك تطبيقات البنية التحتية يزيل الكثير من نظام الإدارة وتحديات التنمية في بناء التطبيقات للقياس على نطاق المئات من الطلبات في الثانية وما بعدها جوجل يمسك بالشفرات المنتشرة، ويرصدها، ويبدأ تطبيق الحالات حسب الضرورة.
في حين أن الخدمات الأخرى التي تسمح للمستخدمين تثبيت وتكوين تقريباً أي برامج متوافقة، محرك التطبيقات يتطلب مطورين يستخدمون Python أو أي لغة JVM (مثل جافا، Groovy، JRuby، سكالا) كلغات برمجة، ومجموعة محدودة من واجهات برمجة التطبيقات. واجهات برمجة التطبيقات الحالية تسمح تخزين واسترجاع البيانات BigTable من قاعدة البيانات الغير مرتبطة؛ وعمل طلبات بروتوكول انتقال النّصّ المتشعّب (HTTP)؛ وإرسال بريد إلكتروني؛ ومعالجة الصور، والتخزين المؤقت. معظم تطبيقات الويب الحالية لا يمكن أن تعمل على محرك تطبيقات دون تعديل، لأنها تتطلب قاعدة بيانات مرتبطة.
كل يوم، وكل دقيقة نظام الحصص يحصر عرض النطاق الترددي واستخدام وحدة المعالجة المركزية، وعدد طلبات الخدمة، وعدد الطلبات المتزامنة، وتدعو إلى واجهات برمجة التطبيقات المتعددة، ويتم إنهاء طلبات فردية إذا كانت تستغرق أكثر من 30 ثانية أو تعود أكثر من 10 ميغابايت للبيانات.

## الاختلافات بين SQL وGQL

مخزن محرك تطبيقات جوجل له SQL يدعى "GQL". يختار جمل في GQL يمكن أن يؤديها على طاولة واحدة فقط. GQL عمدا لاتدعم التعابير المرتبطة، لأنها تبدو غير فعالة عندما تمتد الأسئلة على أكثر من آلة واحدة. بدلا من ذلك، واحدة إلى العديد والعديد إلى العديد من العلاقات يمكن انجازها باستخدام. ReferenceProperty. هذا النهج المشترك لا يتدخل في الطريقة التي تجعل القرص يفشل دون أن يفشل النظام.
عبارة اختيار التعابير يمكن ان تؤدي العمليات>، =، <، <= على عمود واحد فقط. لذلك، نختار فقط جمل بسيطة حيث يمكن بناؤها. التحول من قاعدة بيانات مرتبطة لمخزن البيانات يتطلب تحولا نموذجيا للمطورين عند تمثيل البيانات الخاصة بهم.
محرك التطبيقات يجعل الحد الأعلى من الصفوف يعود من كونها 1000 صف في كل طلب مخزن بيانات. هذا العائق لا يؤثر على تطبيقات الويب المكتوبة لتكون مقروءة من قبل البشر، طالما ترتيب فرز النتائج التي يمكن ان يسبق إحصاءها بشكل مناسب، كتلك التي لا تحصر عادة كعدد من آلاف الأوامر على صفحة واحدة (قد يكون لديهم الترحيل وآليات التخزين المؤقت في مكان واحد). إذا كان تطبيق يحتاج إلى أكثر من 1000 أمر لكل عملية، فإنه يمكن استخدام جانبه الصامت من البرامج الإلكترونية أو صفحة أجاكس (Ajax) لتنفيذ عملية على عدد غير محدود من الصفوف من خلال إصدار الاستعلامات بالتتابع، على الأقل بطريقة محدودة، لأن طباعة النتائج لمجموعة من الأسئلة تكلف وقتاً بطول الوقت لمجموعة النتائج التي يمكن ان تستغرق نفس الأسئلة في الوقت الضائع.
بخلاف قاعدة البيانات المرتبطة فإن مخزن البيانات API (واجهة برمجة التطبيقات) (Application Programming Interface) ليس مرتبطاً ب (لغة الاستعلام) SQL.

## القيود

* المطورين يملكون الوصول لقراءة نظام الملفات على محرك التطبيقات.
* محرك التطبيق يمكن أن ينفذ التعليمات البرمجية المسماة من طلبات بروتوكول انتقال النّصّ المتشعّب (HTTP) (باستثناء مهام خلفيات الجداول).
* يمكن للمستخدمين تحميل وحدات (بايثون) التعسفي، ولكن فقط إذا كان خالصا،pure-Python; سي وبايركس وحدات غير مدعومة.
* محرك التطبيقات تحدد أعلى صفوف عائدة من كونها تأخذ 1000 صف في الطلب الواحد من مخزن البيانات.
* تطبيقات جافا يمكن استخدامها فقط لمجموعة (The JRE Class White List)من الطبقات المأخوذة طبعة JRE القياسية.
* تطبيقات جافا لا يمكن ان تنشئ مواضيع جديدة.
* لا يدعم 'المجالات' المجردة (بدون الشبكة العالمية) مثل http://example.com، نظرا لاستخدام سجلات نظام أسماء النطاقات من أجل موازنة تحميل. (الحل المقترح هو استخدام نظام أسماء النطاقات لتوفير التوجيه المتشعب لفرعي، على سبيل المثال "www.example.com".)
* مخزن البيانات لا يمكن استخدام مرشحات غير مماثلة على أكثر من خاصية واحدة لكل استعلام.

## التطابق

مطوري التطبيقات يقلقون من التطبيقات التي لن تنقل من محرك التطبيقات مع التعديلات.
هيكل Django الويب والتطبيقات الجارية فيها يمكن أن تستخدم في محرك التطبيقات مع التعديل.
التطبيقات المتقدمة لإطارتطبيقات شبكة Grail يمكن تعديلها ونشرها لمحرك التطبيقات بمجهود قليل جداً باستخدام محرك تطبيقات المساعد.

## تحميل البيانات

الإصدار SDK 1.2.2 يضيف دعما لتحميل الجزء الأكبر من البيانات. مشاريع مفتوحة المصدر gaebar، approcket، وgawsh كما تسمح للمستخدمين لتحميل البيانات والنسخ الاحتياطي في محرك التطبيقات.

## معدلات الحصص

محرك التطبيقات يحدد حصص لاستخدام تطبيقات مجانية. الإتساع لهذه الحصص يمكن أن يطلب، ومؤلفي التطبيقات يمكن أن يدفعون من أجل مصادر إضافية.

### حدود صعبة

| الحصص | الحد |
| تطبيقات لكل تطوير | 10 |
| وقت لكل طلب | 30 ثانية |
| ملف لكل تطبيق | 3.000 |
| حجم استجابة HTTP | 10 ميغابايت |
| حجم مادة مخزن البيانات | 1 ميغابايت |
| حجم رمز التطبيق | 150 ميغابايت |

### حصص مجانية

مؤلفي التطبيقات الذين يجعلون فواتير الدفع من أجل وحدة المعالجة المركزية فقط، عرض النطاق الترددي، والتخزين، ورسائل البريد الإلكتروني المستخدمة في الزائد عن الحصص المجانية. الحدود التي بجانبها * هي زيادة الطلب على مؤلفي التطبيقات الذين يأخذون الفواتير، حتى لو كانت تطبيقاتهم لا تستخدم أبدا ما يكفي من المصادر لاستهداف الشحن. الحصص المجانية تناقصت يوم 25 مايو 2009، وتناقصت من جديد يوم 22 يونيو، 2009.
| الحصص | الحد |
| رسائل البريد الإلكتروني في اليوم | 2.000 |
| في النطاق الترددي في اليوم | 1,000 ميغابايت |
| خارج النطاق الترددي في اليوم | 1,000 ميغابايت |
| وحدة المعالجة المركزية في اليوم | 6.5 ساعات في اليوم الواحد |
| طلب HTTP في اليوم | 1,300,000 * |
| مخزن البيانات API طلب في اليوم | * 10,000,000 |
| البيانات المخزنة | 1 غيغابايت |
| URLFetch API طلب في اليوم | 657.084 * |

## المنافسة

تنافس الخدمة مع خدمات شبكةالأمازون، وهي مجموعة من خدمات التطبيقات التيتجعل المواقع على شبكة الإنترنت تستضيف الملفات وتنفيذ التعليمات البرمجية على خوادم الأمازون. كثير من فنيي المحللين قد تنبأو بانظمام قوقل في هذا المجال لعدة سنوات. «غوغل يدرك أخيرا أنها بحاجة إلى منصة على شبكة الإنترنت،» Techdirt publisher Mike Masnick wrote. «فمن الأسهل لتطوير ونشر التطبيقات شبكة يمكن التعامل معها، وحلول أكثر ابتكارا وإبداعا هو ما سنبدأ برؤيته.»
منافسين آخرين يحتوون برامج خدمات مايكروسوفت أزور وهيروكو.

## مراجع

* ↑ "Python 2.7 release notes". اطلع عليه بتاريخ 2020-12-18.
* ↑ "App Engine standard environment Python - Release notes". اطلع عليه بتاريخ 2020-12-18.
* ↑ Python Runtime Environment - Python — Google Cloud Platform نسخة محفوظة 12 مارس 2012 على موقع واي باك مشين.
* ↑ What Is Google App Engine? - App Engine — Google Cloud Platform نسخة محفوظة 14 مارس 2012 على موقع واي باك مشين.
* ↑ webapp Overview - Python — Google Cloud Platform نسخة محفوظة 15 مارس 2012 على موقع واي باك مشين.
* ↑ "Python Runtime Environment - Google App Engine". 10 نوفمبر 2009. مؤرشف من الأصل في 2012-03-12. اطلع عليه بتاريخ 2009-11-10.
* ↑ http://www.youtube.com/watch؟v=oG6Ac7d-Nx8
* ↑ Modeling Entity Relationships - App Engine — Google Cloud Platform نسخة محفوظة 25 فبراير 2012 على موقع واي باك مشين.
* ↑ Google App Engine Datastore Gotchas | aleatory نسخة محفوظة 01 ديسمبر 2016 على موقع واي باك مشين.
* ↑ # Downloading_Data_from_App_Engine نسخة محفوظة 12 مارس 2012 على موقع واي باك مشين.
* ↑ aral/gaebar · GitHub نسخة محفوظة 29 يوليو 2017 على موقع واي باك مشين.
* ↑ approcket - Live synchronization between AppEngine and MySQL - Google Project Hosting نسخة محفوظة 23 يناير 2016 على موقع واي باك مشين.
* ↑ gawsh - Google Apps Web Service Helpers - Google Project Hosting نسخة محفوظة 23 يناير 2016 على موقع واي باك مشين.
* ↑ شركة غوغل التغيرات المرتقبة في الحصص الحرة، بالرجوع إليه في 26 فبراير 2009 نسخة محفوظة 14 مارس 2012 على موقع واي باك مشين.
* ↑ غوغل، يونيو بالرجوع إليه في 17، 2009 نسخة محفوظة 14 مارس 2012 على موقع واي باك مشين.
* ↑ "Google Finally Realizes It Needs To Be The Web Platform". 7 أبريل 2008. مؤرشف من الأصل في 2018-03-13. اطلع عليه بتاريخ 2008-04-12.

## وصلات خارجية

* الموقع الرسمي
* بوابة برمجيات
* بوابة جوجل
* بوابة علم الحاسوب