مخزن بيانات جوجل كلاود

كانت خدمة Google Cloud Datastore خدمة قواعد بيانات NoSQL مقدمة من Google Cloud Platform . وقد حلت محلها الآن خدمة Firestore التي توفر وضع "التوافق مع Datastore" لضمان استمرار تشغيل التطبيقات القديمة المبنية على Datastore بسلاسة. تُنظم واجهة برمجة تطبيقات Google Cloud Datastore البيانات في كيانات وخصائص، حيث تُصنف الكيانات إلى أنواع. يشبه هذا المفهوم الجداول في قواعد البيانات العلائقية، ولكن نظرًا لكونها قاعدة بيانات NoSQL، فهي لا تخضع لقيود المخطط . يُعرّف كل كيان في Datastore بشكل فريد بواسطة مفتاح. يمكن أن يحتوي هذا المفتاح على مُعرّف مخصص يُحدده المستخدم أو يمكن للنظام إنشاؤه تلقائيًا.

تاريخ

أُعلن عن خدمة Google Cloud Datastore في 11 أبريل 2013، كقاعدة بيانات NoSQL مُدارة بالكامل ، ومصممة لدعم تطبيقات الويب واسعة النطاق. وقد استندت هذه الخدمة إلى Datastore الأصلية المستخدمة في Google App Engine منذ عام 2008، ولكنها صُممت لتوفير ميزات مثل قابلية التوسع، والتوافر العالي، والنسخ التلقائي للبيانات عبر مراكز بيانات متعددة .

قبل إطلاق Cloud Datastore، كان مطورو Google App Engine يعملون على قاعدة بيانات مدمجة تعمل فقط مع تطبيقات App Engine. مع نمو Google Cloud Platform في السوق، رغب المطورون في قاعدة بيانات يمكنهم استخدامها خارج App Engine لدمجها مع تطبيقاتهم. كانوا بحاجة إلى مزيد من المرونة والتوافر الواسع. وقد لبّى Cloud Datastore هذه الحاجة بإضافة ميزات مثل التجزئة التلقائية والفهرسة ودعم الاتساق النهائي.

أطلقت جوجل خدمة Cloud Firestore في عام 2018 كقاعدة بيانات NoSQL جديدة، تتميز بميزات مثل التحديثات الفورية، ودعم العمل دون اتصال بالإنترنت، وسرعة تنفيذ الاستعلامات. ويُنصح المستخدمون الجدد باستخدام Firestore بدلاً من ذلك. توفر Firestore وضع "التوافق مع Datastore" الذي يسمح للمستخدمين الحاليين بمواصلة استخدام واجهة برمجة تطبيقات Datastore المألوفة وميزاتها، مع إمكانية الترقية إلى Firestore عند الحاجة للاستفادة من إمكانيات المؤسسات، والاتساق القوي، ومعاملات المستندات المتعددة المتوافقة مع معايير ACID ، ومحرك الاستعلامات المتقدم الذي يدعم عوامل التصفية المعقدة، والتجميعات، والوصلات، والاستعلامات الفرعية [ 1 ] [ 2 ] . وتواصل جوجل كلاود دعم هذه الأنظمة القديمة لضمان استمرار موثوقيتها وكفاءتها الكاملة حتى في المستقبل.

ملخص

تنظيم البيانات

تُنظَّم البيانات في Google Cloud Datastore على شكل كيانات، تُشبه السجلات الفردية. تُجمَّع هذه الكيانات في أنواع، تمامًا كما هو الحال في الجداول في قواعد البيانات التقليدية. ولكن، على عكس قواعد البيانات العلائقية، لا تلتزم الكيانات من النوع نفسه ببنية ثابتة (مثل مخطط مُحدَّد مسبقًا)، بل يمكن أن تمتلك مجموعات مختلفة من الخصائص.

الكيانات والخصائص

يمثل كل كيان مجموعة منظمة من الخصائص. الخصائص عبارة عن أزواج مفتاح-قيمة. ومن أمثلة القيم: السلاسل النصية، والأرقام، والقيم المنطقية، والطوابع الزمنية، والمصفوفات، والمواقع الجغرافية. تتيح مرونة الخصائص للمطورين تصميم هياكل بيانات معقدة دون الحاجة إلى مخطط جامد.

مفاتيح الكيانات

يتم تعريف كل كيان في Datastore بشكل فريد بواسطة مفتاح . يتضمن المفتاح ما يلي:

  • معرّف المشروع (معرّف مشروع Google Cloud)،
  • مساحة اسم اختيارية (تُستخدم لتعدد المستأجرين)،
  • نوع (يحدد نوع الكيان) ،
  • واسم أو رقم تعريف يميز الكيان ضمن نوعه.

يمكن تجميع الكيانات اختيارياً في مجموعات كيانات للسماح بتحديثات المعاملات التي تشمل كيانات متعددة.

أنواع البيانات

تدعم واجهة برمجة تطبيقات مخزن البيانات مجموعة من أنواع بيانات الخصائص كما هو موضح أدناه:

  • خيط
  • عدد صحيح
  • يطفو
  • منطقي
  • الطابع الزمني
  • مصفوفة (قائمة)
  • الكيان المضمن
  • نقطة جغرافية (إحداثيات جغرافية)
  • البيانات الثنائية (Blob)

تتيح هذه المجموعة المتنوعة نمذجة البيانات المهيكلة وشبه المهيكلة في أنواع بيانات مختلفة.

GQL

لغة استعلام Google Cloud Datastore (GQL) هي لغة استعلام شبيهة بلغة SQL، وهي مصممة للتفاعل مع Google Cloud Datastore. تتيح GQL للمستخدمين الاستعلام عن خدمة Datastore باستخدام عبارات مشابهة لـ SQL، ولكنها مصممة خصيصًا لتتوافق مع طبيعة NoSQL لهذه المنصة. توفر GQL طرقًا لتصفية كيانات Datastore وترتيبها وإجراء عمليات عليها دون الحاجة إلى كتابة استعلامات معقدة في واجهات برمجة تطبيقات Datastore الأساسية.

على عكس لغة SQL، فإن لغة GQL محدودة من حيث أنواع عمليات الربط [ 3 ] والعلاقات التي يمكنها التعامل معها. ومع ذلك، فهي تدعم الاستعلامات باستخدام الخصائص، بما في ذلك المساواة وعدم المساواة، بالإضافة إلى استعلامات النطاق. يمكن للمستخدمين استخدام GQL للاستعلام عن الكيانات بناءً على شروط متعددة. وهذا ما يجعل GQL مناسبة لمجموعة واسعة من حالات الاستخدام، مثل استرجاع بيانات المستخدمين، وقوائم المنتجات، وحتى تحديث قاعدة البيانات.

يدعم GQL أيضًا استعلامات الأصل، مما يتيح للمستخدمين الحصول على الكيانات المرتبطة بناءً على موقعها في التسلسل الهرمي. يُعدّ هذا ضروريًا للغاية للتطبيقات التي تتطلب إدارة بيانات هرمية، مثل أنظمة إدارة المحتوى أو نماذج البيانات التي تتضمن علاقات أب-ابن. مع أن GQL يُسهّل عملية الاستعلام، إلا أنه يعمل ضمن قيود نموذج الاتساق النهائي لـ Datastore.

مثال على استعلام GQL:

استعلم عن جميع البيانات من جدول المهام حيث الحالة = 'مكتملة' والأولوية = 'عالية'، ورتبها حسب تاريخ الإنشاء تنازليًا .

سيسترجع هذا الاستعلام جميع كيانات المهام التي تحمل حالة "مكتملة" وأولوية "عالية". كما سيرتبها حسب الطابع الزمني لإنشائها بترتيب تنازلي.

على الرغم من أن لغة استعلام جوجل (GQL) توفر واجهة سهلة الاستخدام للاستعلام عن Google Cloud Datastore، إلا أنه عند التعامل مع استعلامات وعمليات ربط أكثر تعقيدًا، نحتاج إلى استخدام واجهات برمجة التطبيقات الأصلية لـ Datastore، مثل واجهة برمجة تطبيقات Google Cloud Datastore. توفر هذه الواجهة مرونة وتحكمًا أكبر للمطورين. [ 4 ] على سبيل المثال، لا يمكننا تنفيذ عملية الربط التالية:

استعلم عن جميع البيانات من جدول العملاء (Customer) واربطه بجدول الطلبات (Order) بناءً على تطابق معرف العميل (customer_id ) في جدول العملاء مع معرف العميل في جدول الطلبات (Order) .

يمكننا تطبيق منطق مشابه للكود أدناه. وهي عملية تتكون أساسًا من خطوتين. أولًا، نستخدم واجهة برمجة تطبيقات Datastore لجلب بيانات العميل باستخدام معرّفه. ثم، نستخدم معرّف العميل هذا لإنشاء استعلام آخر لاسترداد الطلبات ذات الصلة.

من google.cloud استورد datastoreالعميل = مخزن البيانات . العميل ()# الخطوة 1 customerkey = client.key ( " Customer " , " C123456" ) customer = client.get ( customerkey )# الخطوة 2 استعلام = العميل.استعلام ( النوع = "طلب" ) استعلام.إضافة_فلتر ( "معرف_العميل" , " = " , " C123456 " ) الطلبات = قائمة ( استعلام.جلب ( ) )

أفضل الممارسات للمطورين

قيود الاستعلام

لا يدعم Datastore عمليات الربط أو الاستعلامات الفرعية أو التجميع كما هو الحال في قواعد البيانات العلائقية، مثل MS SQL وMySQL. ولهذا السبب، غالبًا ما يتطلب تصميم التطبيقات إلغاء التطبيع . وهي عملية تخزين البيانات ذات الصلة معًا ضمن كيان واحد أو استخدام مجموعات الكيانات للحفاظ على العلاقات الهرمية. يجب أن تتطابق عوامل تصفية الاستعلام مع الفهارس الموجودة، وقد تتطلب بعض تركيبات عمليات عدم المساواة والفرز فهارس مخصصة. يدعم Firestore، خليفة Datastore ، واجهة برمجة تطبيقات متقدمة لخط أنابيب الاستعلام [ 1 ] والتي تدعم عمليات التجميع والربط والاستعلامات الفرعية [ 2 ] .

دعم اللغة وواجهة برمجة التطبيقات

تتألف واجهات برمجة تطبيقات Google Cloud Datastore من واجهة RESTful وواجهة gRPC. [ 5 ] يُعدّ هذا مفيدًا للغاية للمطورين الذين يحتاجون إلى تصميم تطبيقات موزعة. توفر واجهات برمجة التطبيقات هذه وصولًا مباشرًا إلى ميزات Datastore، مثل المعاملات والاستعلامات وإدارة الكيانات. بُنيت مكتبات العميل على هذه الواجهات، وتُخفي التفاصيل المعقدة. كما تُسهّل استخدام لغات برمجة مختلفة، مثل Python وJava وGo وNode.js وC#، من خلال معالجة أمور مثل إدارة الاتصالات وإعادة المحاولات والتسلسل. [ 6 ] تم تحسين واجهة برمجة تطبيقات Datastore أيضًا لتوفير وصول عالي الإنتاجية ومنخفض زمن الاستجابة. تدعم هذه الواجهة أيضًا عمليات الدفعات، واستعلامات السلف، والقراءات المتسقة بقوة داخل مجموعات الكيانات. بفضل هذه الميزات، يستطيع المطورون بناء تطبيقات قابلة للتوسع دون الحاجة إلى إدارة بنية تحتية معقدة لقواعد البيانات بأنفسهم.

المفاضلات في نمذجة البيانات

صُممت خدمة Google Cloud Datastore لتسهيل التوسع وتبسيط العمليات، ولكن هذا يأتي مصحوبًا ببعض التنازلات الحتمية، خاصةً فيما يتعلق بميزات مثل عمليات الربط والمعاملات التي تتضمن صفوفًا متعددة. ولتحقيق قابلية توسع عالية، تتطلب Datastore من المطورين إلغاء تطبيع بياناتهم وتصميم مخططاتهم بناءً على أنماط القراءة، بدلًا من التركيز على التطبيع. يساعد هذا النهج في تقليل التعقيد وتحسين الأداء، خاصةً عند العمل على تطبيقات كثيفة القراءة. لذا، عند تصميم قاعدة البيانات، يجب على المطورين تخطيط نماذج بياناتهم بافتراض أن Cloud Datastore لا تدعم عمليات الربط. أما بالنسبة للعمليات الأكثر تعقيدًا، مثل التجميع أو البحث في النصوص الكاملة، فغالبًا ما يحتاج المطورون إلى دمج Datastore مع خدمات أخرى مثل GCP BigQuery للتحليلات أو Elasticsearch لإمكانيات البحث. وهذا يعني أن المطورين بحاجة إلى تصميم نظام يربط أدوات متعددة لتحقيق أهدافهم. مع ذلك، يمكن للتطبيقات الجديدة استخدام Firestore الذي يوفر إمكانيات بحث مدمجة في النصوص الكاملة [ 2 ] .

مقارنة مع قواعد البيانات الأخرى

مقارنة بين مخزن البيانات السحابي و MongoDB

يُعد كل من Cloud Datastore و MongoDB قواعد بيانات مستندات NoSQL، إلا أنهما يختلفان في بنيتهما وقدراتهما. يفرض Cloud Datastore نموذج مستندات أكثر تنظيمًا مع مجموعات الكيانات، ويُعطي الأولوية لقابلية التوسع والبساطة على حساب ميزات الاستعلام المتقدمة. بينما يوفر MongoDB نموذج مستندات مرنًا ( BSON )، وهو عبارة عن مسار تجميع قوي، ولكنه يتمتع بقدرات ربط محدودة. [ 7 ] يرتبط Cloud Datastore ارتباطًا وثيقًا بمنصة Google Cloud Platform (GCP)، بينما يمكن استضافة MongoDB ذاتيًا أو استخدامها كخدمة مُدارة عبر MongoDB Atlas [ 8 ] على منصات سحابية مختلفة. يوفر Firestore ، خليفة Google Cloud Datastore، واجهة برمجة تطبيقات متوافقة مع MongoDB [ 9 ] لتمكين عمليات نقل البيانات بسلاسة.

مخزن البيانات السحابي مقابل قواعد البيانات العلائقية

تتبع قواعد البيانات العلائقية مثل MySQL و PostgreSQL مخططًا مُنظّمًا يدعم عمليات الربط المعقدة ومعاملات ACID الكاملة. تُعد هذه القواعد مثاليةً لإنشاء تطبيقات تتطلب اتساقًا قويًا ومنطقًا علائقيًا متينًا. في المقابل، يتبع Cloud Datastore نهج NoSQL غير مُنظّم وبدون مخطط، حيث تُبنى البيانات حول أنماط الوصول لتحسين أداء القراءة على نطاق واسع. تُعد أنظمة إدارة قواعد البيانات العلائقية التقليدية أفضل للأنظمة المعاملاتية [ 10 ] والاستعلامات المعقدة، بينما يُعد Cloud Datastore أكثر فعالية للتطبيقات واسعة النطاق التي تحتاج إلى توافر عالٍ وقابلية توسع أفقية. بالنسبة للتطبيقات التي تتطلب إمكانيات استعلام معقدة، يُوصى بشدة باستخدام واجهات برمجة تطبيقات Firestore .

مقارنة بين مخزن البيانات السحابي و Redis

Redis هي قاعدة بيانات NoSQL تعتمد على مخزن قيم مفتاحية في الذاكرة، مصممة للوصول السريع للغاية. تُعد خيارًا مثاليًا للتخزين المؤقت، وأنظمة النشر/الاشتراك ، والتحليلات الآنية. تُعطي Redis الأولوية للسرعة على حساب المتانة، [ 11 ] ولكن تتوفر أيضًا خيارات التخزين الدائم. [ 12 ] أما Cloud Datastore فهي قاعدة بيانات وثائقية دائمة تعتمد على القرص، وتتميز بالاستعلامات المهيكلة. كما أنها مُحسّنة لتخزين البيانات واسترجاعها على المدى الطويل. تُعد Redis مثالية للعمليات السريعة والعابرة، بينما تُعد Cloud Datastore أنسب لبيانات التطبيقات المهيكلة وطويلة الأمد التي تتطلب إدارة التوسع والفهرسة. غالبًا ما تُستخدم Redis بالتزامن مع قاعدة بيانات مثل Cloud Datastore، وليس كبديل لها.

انظر أيضاً

مراجع