قاعدة بيانات كوزموس
Azure Cosmos DB هي خدمة قواعد بيانات متعددة النماذج موزعة عالميًا، تُقدمها مايكروسوفت . صُممت لتوفير توافر عالٍ، وقابلية للتوسع، ووصول سريع للبيانات للتطبيقات الحديثة. على عكس قواعد البيانات العلائقية التقليدية، تُعد Cosmos DB قاعدة بيانات NoSQL (أي "ليست SQL فقط"، وليست "خالية من SQL") وقاعدة بيانات متجهة، [ 1 ] مما يعني أنها قادرة على التعامل مع أنواع البيانات غير المهيكلة، وشبه المهيكلة، والمهيكلة، والمتجهة. [ 2 ]
نموذج البيانات
يخزن Cosmos DB داخليًا "العناصر" في "حاويات"، [ 3 ] حيث يختلف عرض هذين المفهومين باختلاف واجهة برمجة التطبيقات المستخدمة (على سبيل المثال، ستكون "مستندات" في "مجموعات" عند استخدام واجهة برمجة التطبيقات المتوافقة مع MongoDB). تُجمّع الحاويات في "قواعد بيانات"، وهي مماثلة لمساحات الأسماء الموجودة فوق الحاويات. الحاويات مستقلة عن المخطط، مما يعني أنه لا يتم فرض أي مخطط عند إضافة العناصر.
بشكل افتراضي، يتم فهرسة كل حقل في كل عنصر تلقائيًا، مما يوفر أداءً جيدًا بشكل عام دون الحاجة إلى ضبط أنماط استعلام محددة. يمكن تعديل هذه الإعدادات الافتراضية من خلال تحديد سياسة فهرسة تُحدد نوع الفهرس ودقته المطلوبة لكل حقل. يوفر Cosmos DB نوعين من الفهارس:
- نطاق، نطاق داعم ، واستعلامات ORDER BY
- يدعم الاستعلامات المكانية من النقاط والمضلعات وسلاسل الخطوط المشفرة في أجزاء GeoJSON القياسية.
يمكن للحاويات أيضًا فرض قيود على المفاتيح الفريدة لضمان سلامة البيانات. [ 4 ]
يُتيح كل حاوية Cosmos DB موجزًا للتغييرات، يمكن للعملاء الاشتراك فيه لتلقي إشعارات بإضافة عناصر جديدة أو تحديثها في الحاوية. [ 5 ] اعتبارًا من 7 يونيو 2021 ، لا يُتيح موجز التغييرات حاليًا إمكانية حذف العناصر. يحتفظ Cosmos DB بالتغييرات، مما يُتيح طلب التغييرات من أي نقطة زمنية منذ إنشاء الحاوية.
يمكن تحديد " مدة البقاء " (TTL) على مستوى الحاوية لتمكين Cosmos DB من حذف العناصر تلقائيًا بعد فترة زمنية محددة بالثواني. يبدأ هذا العد التنازلي بعد آخر تحديث للعنصر. ويمكن أيضًا، عند الحاجة، تعديل مدة البقاء على مستوى العنصر نفسه.
واجهات برمجة التطبيقات متعددة النماذج
يتم عرض نموذج البيانات الداخلي الموصوف في القسم السابق من خلال:
- واجهة برمجة تطبيقات SQL خاصة.
- خمس واجهات برمجة تطبيقات توافق مختلفة، تعرض نقاط نهاية متوافقة جزئيًا مع بروتوكولات الاتصال السلكي لـ MongoDB و Gremlin و Cassandra و Azure Table Storage و etcd ؛ تتيح واجهات برمجة تطبيقات التوافق هذه لأي تطبيق متوافق الاتصال بـ Cosmos DB واستخدامه من خلال برامج التشغيل القياسية أو SDKs، مع الاستفادة أيضًا من الميزات الأساسية لـ Cosmos DB مثل التقسيم والتوزيع العالمي.
| واجهة برمجة التطبيقات (API) | رسم الخرائط الداخلية | حالة التوافق والملاحظات | |
|---|---|---|---|
| حاويات | أغراض | ||
| MongoDB | المجموعات | وثائق | متوافق مع بروتوكول الاتصال السلكي الإصدار 6 وخادم الإصدار 3.6 من MongoDB. [ 6 ] |
| شبح | الرسوم البيانية | العقد والحواف | متوافق مع الإصدار 3.2 من مواصفات Gremlin. |
| أباتشي كاساندرا | طاولة | صف | متوافق مع الإصدار 4 من بروتوكول الاتصال الخاص بلغة استعلام كاساندرا (CQL). |
| تخزين جداول Azure | طاولة | غرض | |
| etcd | مفتاح | قيمة | متوافق مع الإصدار 3 من etcd. [ 7 ] |
واجهة برمجة تطبيقات SQL
تتيح واجهة برمجة تطبيقات SQL للعملاء إنشاء الحاويات والعناصر وتحديثها وحذفها. ويمكن الاستعلام عن العناصر باستخدام لغة SQL للقراءة فقط، وهي متوافقة مع JSON . [ 8 ] وبما أن Cosmos DB يتضمن محرك JavaScript ، فإن واجهة برمجة تطبيقات SQL تُمكّن أيضًا ما يلي:
- الإجراءات المخزنة . هي دوال تجمع مجموعة معقدة من العمليات والمنطق في معاملة متوافقة مع خصائص ACID . وهي معزولة عن التغييرات التي تُجرى أثناء تنفيذها، إما أن تنجح جميع عمليات الكتابة أو تفشل جميعها، مما يُبقي قاعدة البيانات في حالة متسقة. تُنفذ الإجراءات المخزنة في قسم واحد، لذا يجب على المُستدعي توفير مفتاح القسم عند استدعاء مجموعة مُقسّمة. يمكن استخدام الإجراءات المخزنة لتعويض نقص بعض الوظائف. على سبيل المثال، يُعوَّض نقص إمكانية التجميع بتنفيذ مكعب OLAP كإجراء مخزن في مشروع documentdb-lumenize مفتوح المصدر [ 9 ] .
- المُشغِّلات . هي دوال تُنفَّذ قبل أو بعد عمليات مُحدَّدة (مثل إدراج مستند على سبيل المثال) والتي يُمكنها إما تغيير العملية أو إلغاؤها. لا تُنفَّذ المُشغِّلات إلا عند الطلب.
- الدوال المعرفة من قبل المستخدم (UDF) . دوال يمكن استدعاؤها من لغة استعلام SQL وتوسيعها، مما يعوض عن محدودية ميزات SQL.
يتم عرض واجهة برمجة تطبيقات SQL كواجهة برمجة تطبيقات REST ، والتي يتم تنفيذها في العديد من مجموعات تطوير البرامج ( SDKs ) المدعومة رسميًا من قبل Microsoft والمتاحة لـ .NET Framework و .NET و Node.js ( JavaScript ) و Java و Python .
التقسيم
أضافت Cosmos DB ميزة التقسيم التلقائي في عام 2016 مع إطلاق الحاويات المقسمة. في الخلفية، تمتد الحاويات المقسمة على عدة أقسام فعلية، حيث يتم توزيع البيانات باستخدام مفتاح تقسيم يُحدده العميل. وتُحدد Cosmos DB تلقائيًا عدد الأقسام التي سيتم توزيع البيانات عليها بناءً على حجم البيانات واحتياجات الإنتاجية. عند إضافة أقسام أو إزالتها، تتم العملية دون أي توقف، مما يضمن بقاء البيانات متاحة أثناء إعادة توزيعها على الأقسام الجديدة أو المتبقية.
قبل توفر الحاويات المُقسّمة، كان من الشائع كتابة تعليمات برمجية مخصصة لتقسيم البيانات، وقد دعمت بعض حزم تطوير البرامج (SDKs) الخاصة بـ Cosmos DB صراحةً العديد من مخططات التقسيم المختلفة. لا يزال هذا الوضع متاحًا، ولكن يُنصح به فقط عندما لا تتجاوز متطلبات التخزين والإنتاجية سعة حاوية واحدة، أو عندما لا تلبي إمكانية التقسيم المدمجة احتياجات التطبيق.
معدل نقل بيانات قابل للتعديل
يمكن للمطورين تحديد معدل النقل المطلوب ليتناسب مع الحمل المتوقع للتطبيق. يحجز Cosmos DB موارد (ذاكرة، وحدة معالجة مركزية، وعمليات إدخال/إخراج في الثانية) لضمان معدل النقل المطلوب مع الحفاظ على زمن استجابة الطلب أقل من 10 مللي ثانية لكل من عمليات القراءة والكتابة عند النسبة المئوية 99. يُحدد معدل النقل بوحدات الطلب (RUs) في الثانية. تكلفة قراءة عنصر بحجم 1 كيلوبايت هي وحدة طلب واحدة (أو وحدة طلب واحدة). تستهلك عمليات التحديد بواسطة "id" عددًا أقل من وحدات الطلب مقارنةً بعمليات الحذف والتحديث والإدراج لنفس المستند. يمكن أن تستهلك الاستعلامات الكبيرة (مثل عمليات التجميع كالعدّ) وتنفيذ الإجراءات المخزنة مئات إلى آلاف وحدات الطلب اعتمادًا على مدى تعقيد العمليات المطلوبة. [ 11 ] الحد الأدنى للفوترة هو بالساعة.
يمكن تخصيص معدل النقل إما على مستوى الحاوية أو على مستوى قاعدة البيانات. عند التخصيص على مستوى قاعدة البيانات، يُشارك معدل النقل بين جميع الحاويات داخل تلك القاعدة، مع إمكانية تخصيص معدل نقل مُحدد لبعض الحاويات. أما معدل النقل المُخصص لحاوية Azure Cosmos فهو محجوز لها حصريًا. [ 12 ] الحد الأقصى الافتراضي لوحدات الطلب (RUs) التي يمكن تخصيصها لكل قاعدة بيانات ولكل حاوية هو مليون وحدة طلب، ولكن يمكن للعملاء زيادة هذا الحد عن طريق التواصل مع خدمة دعم العملاء.
كمثال على حساب التكلفة، باستخدام مثيل منطقة واحد، يتطلب عدّ مليون سجل، كل منها بحجم 1 كيلو بايت، في 5 ثوانٍ، مليون وحدة طلب.0.008 دولار/ ساعة ، وهو ما يعادل 800 دولار . منطقتان تضاعفان التكلفة.
التوزيع العالمي
يمكن تهيئة قواعد بيانات Cosmos DB لتكون متاحة في أي من مناطق Microsoft Azure (54 منطقة اعتبارًا من ديسمبر 2018)، مما يتيح لمطوري التطبيقات وضع بياناتهم بالقرب من مستخدميهم. [ 13 ] تُنسخ بيانات كل حاوية بشفافية عبر جميع المناطق المُهيأة. تتم إضافة المناطق أو إزالتها دون أي توقف أو تأثير على الأداء. بفضل واجهة برمجة تطبيقات Cosmos DB متعددة التوجيه، لا يلزم تحديث التطبيقات أو إعادة نشرها عند إضافة المناطق أو إزالتها، حيث يقوم Cosmos DB تلقائيًا بتوجيه طلباتها إلى المناطق المتاحة والأقرب إلى موقعها.
مستويات الاتساق
يمكن ضبط اتساق البيانات في Cosmos DB، مما يسمح لمطوري التطبيقات بالاختيار من بين خمسة مستويات مختلفة: [ 14 ]
- لا يضمن موقع Eventual أي عملية طلب، وإنما يضمن فقط أن النسخ المتماثلة ستتقارب في نهاية المطاف.
- يُضيف البادئة المتسقة ضمانات الترتيب إلى جانب الترتيب النهائي
- يتم تحديد نطاق الجلسة لاتصال عميل واحد، وهي تضمن بشكل أساسي اتساق قراءة كتاباتك الخاصة لكل عميل؛ وهو مستوى الاتساق الافتراضي [ 15 ]
- تعمل خاصية التقادم المحدود على تعزيز البادئة المتسقة من خلال ضمان عدم تأخر عمليات القراءة عن عدد معين من إصدارات العنصر أو عن فترة زمنية محددة.
- يضمن الاتساق القوي (أو القابلية للتسلسل ) أن يقرأ العملاء دائمًا أحدث كتابات ملتزمة عالميًا
يُحدد مستوى الاتساق المطلوب على مستوى الحساب، ولكن يمكن تجاوزه لكل طلب على حدة باستخدام رأس HTTP محدد أو الميزة المقابلة التي توفرها حزم تطوير البرامج (SDKs). وقد تم تحديد جميع مستويات الاتساق الخمسة والتحقق منها باستخدام لغة مواصفات TLA+ ، مع إتاحة نموذج TLA+ كمصدر مفتوح على GitHub. [ 16 ]
متعدد الرئيسيين
يعتمد نموذج التوزيع الأصلي لـ Cosmos DB على منطقة كتابة واحدة، بينما تعمل جميع المناطق الأخرى كنسخ متماثلة للقراءة فقط. في مارس 2018، أعلنت مايكروسوفت عن ميزة جديدة متعددة المصادر لـ Azure Cosmos DB، تسمح لعدة مناطق بالعمل كنسخ متماثلة للكتابة. وقد حسّنت هذه الميزة بشكل ملحوظ نموذج منطقة الكتابة الواحدة الأصلي، حيث كانت المناطق الأخرى للقراءة فقط. مع ميزة تعدد المصادر، قد تؤدي عمليات الكتابة المتزامنة من مناطق مختلفة إلى تعارضات محتملة، يمكن حلها إما باستخدام سياسة "آخر كتابة هي الفائزة" (LWW) الافتراضية أو آلية مخصصة لحل التعارضات، مثل دالة JavaScript. تعتمد سياسة LWW على الطوابع الزمنية لتحديد عملية الكتابة الفائزة، بينما يُمكّن الخيار المخصص المطورين من معالجة التعارضات من خلال قاعدة مُعرّفة من قِبل التطبيق. [ 17 ]
متجر التحاليل
تُعدّ هذه الميزة، التي أُعلن عنها في مايو 2020 [ 18 ] ، مخزن أعمدة معزولًا تمامًا لتمكين التحليلات واسعة النطاق على البيانات التشغيلية في Azure Cosmos DB، دون أي تأثير على أحمال العمل الخاصة بالمعاملات. تعالج هذه الميزة تحديات التعقيد وزمن الاستجابة التي تحدث مع مسارات ETL التقليدية ، والتي تتطلب وجود مستودع بيانات مُحسَّن لتنفيذ المعالجة التحليلية عبر الإنترنت ، وذلك من خلال مزامنة البيانات التشغيلية تلقائيًا في مخزن أعمدة منفصل مناسب لإجراء استعلامات تحليلية واسعة النطاق بطريقة مُحسَّنة، مما يؤدي إلى تحسين زمن استجابة هذه الاستعلامات.
باستخدام Microsoft Azure Synapse Link [ 19 ] لـ Cosmos DB، يُمكن إنشاء حلول معالجة هجينة للمعاملات/التحليلات بدون ETL ، وذلك من خلال الربط المباشر بمخزن التحليلات في Azure Cosmos DB من Synapse Analytics. يُمكّن هذا من تشغيل تحليلات واسعة النطاق شبه فورية مباشرةً على البيانات التشغيلية.
حالات استخدام واقعية
تستخدم مايكروسوفت Cosmos DB في العديد من تطبيقاتها الخاصة، [ 20 ] بما في ذلك Microsoft Office و Skype و Active Directory و Xbox و MSN .
يتكامل Cosmos DB مع خدمات Azure الأخرى، مثل Azure App Services وAzure Traffic Manager، لإنشاء تطبيق أكثر مرونة. [ 21 ]
محلل أداء Cosmos DB
تكشف أداة تحسين تكلفة الحوسبة السحابية Cosmos DB Profiler عن استعلامات البيانات غير الفعالة في التفاعلات بين التطبيق وقاعدة بيانات Cosmos DB الخاصة به. وتنبه الأداة المستخدمين إلى هدر الأداء والإنفاق المفرط على الحوسبة السحابية، كما تقدم توصيات لحل هذه المشكلات من خلال عزل وتحليل الكود وتوجيه المستخدمين إلى الموقع الدقيق. [ 22 ]
القيود
- لغة SQL محدودة. تقتصر عمليات التجميع على دوال COUNT وSUM وMIN وMAX وAVG، ولا تدعم GROUP BY أو وظائف التجميع الأخرى الموجودة في أنظمة قواعد البيانات. مع ذلك، يمكن استخدام الإجراءات المخزنة لتنفيذ إمكانية التجميع داخل قاعدة البيانات. [ 23 ]
- لا يمكن إجراء عمليات الربط بين الجداول باستخدام لغة SQL.
- يدعم Cosmos DB أنواع بيانات JSON فقط. والأهم من ذلك، أنه لا يدعم بيانات التاريخ والوقت، مما يستلزم تخزينها باستخدام أنواع البيانات المتاحة. على سبيل المثال، يمكن تخزينها كسلسلة نصية ISO-8601 أو عدد صحيح epoch. أما MongoDB ، وهي قاعدة البيانات التي يُقارن بها Cosmos DB غالبًا، فقد وسّعت JSON في مواصفات تسلسل BSON الثنائي لتشمل بيانات التاريخ والوقت، بالإضافة إلى أنواع الأرقام التقليدية، والتعبيرات النمطية، وUndefined.
مراجع
- ↑ "قاعدة بيانات المتجهات" . learn.microsoft.com . تم الاطلاع عليه بتاريخ 30 مارس 2024 .
- ↑ كومار، تشاندان (7 مارس 2023). "قواعد بيانات Azure Cosmos DB وNoSQL" . skillzcafe . مؤرشف من الأصل بتاريخ 31 مايو 2023. تم الاطلاع عليه بتاريخ 11 أبريل 2023 .
- ↑ "العمل مع قواعد بيانات Azure Cosmos DB والحاويات والعناصر" . docs.microsoft.com . تم الاطلاع عليه بتاريخ 13 ديسمبر 2018 .
- ↑ "المفاتيح الفريدة في Azure Cosmos DB" . مدونة ديبران . 3 يوليو 2018. تاريخ الاطلاع: 13 ديسمبر 2018 .
- ↑ "العمل مع دعم موجز التغييرات في Azure Cosmos DB" . docs.microsoft.com . تم الاطلاع عليه بتاريخ 2021-07-03 .
- ↑ "يدعم Azure Cosmos DB API الآن MongoDB الإصدار 3.6" . azure.microsoft.com . تم الاطلاع عليه بتاريخ 11 فبراير 2020 .
- ↑ "مقدمة إلى واجهة برمجة تطبيقات Azure Cosmos DB etcd" . docs.microsoft.com . تم الاطلاع عليه بتاريخ 10 يونيو 2020 .
- ↑ "بنية لغة SQL في Azure Cosmos DB" . docs.microsoft.com . تم الاطلاع عليه بتاريخ 13 ديسمبر 2018 .
- ↑ ماكيرون، لاري. "الإعلان عن documentdb-lumenize" . blog.lumenize.com . مؤرشف من الأصل بتاريخ 20 ديسمبر 2016. تم الاطلاع عليه بتاريخ 11 ديسمبر 2016 .
- ↑ "استخدام Azure DocumentDB و ASP.NET Core لتحقيق أداء فائق في قواعد بيانات NoSQL" . auth0.com .
- ↑ "الإنتاجية المخصصة: وحدات الطلب في Azure Cosmos DB" . docs.microsoft.com . تم الاطلاع عليه بتاريخ 21-07-2019 .
- ↑ "توفير معدل نقل البيانات على الحاويات وقواعد البيانات" . docs.microsoft.com . تم الاطلاع عليه بتاريخ 21-07-2019 .
- ↑ "كيفية توزيع البيانات عالميًا باستخدام Azure Cosmos DB" . docs.microsoft.com . تم الاطلاع عليه بتاريخ 22 أغسطس 2017 .
- ↑ "التعمق في مستويات الاتساق المختلفة لقاعدة بيانات Azure Cosmos DB" . www.c-sharpcorner.com . تاريخ الاسترجاع: 13 ديسمبر 2018 .
- ↑ "مستويات اتساق البيانات القابلة للتعديل في Azure Cosmos DB" . docs.microsoft.com . مايكروسوفت . تم الاطلاع عليه بتاريخ 22 أغسطس 2017 .
- ↑ GitHub - Azure/azure-cosmos-tla: مواصفات Azure Cosmos TLA+ ، مايكروسوفت أزور، 9 ديسمبر 2018 ، تاريخ الاطلاع: 13 ديسمبر 2018
- ↑ "دعم Cosmos DB Multi-Master متاح الآن بشكل عام | تحديثات Azure | Microsoft Azure" .
- ↑ "مايكروسوفت تعلن عن خيار جديد لنموذج التسعير لخدمة Azure Cosmos DB وميزات إضافية" . www.infoq.com . تاريخ الاطلاع: 20 يونيو 2020 .
- ↑ "نظرة فاحصة على Azure Synapse Link" . ZDNet . تم الاطلاع عليه بتاريخ 15 أبريل 2017 .
- ↑ "الفهرسة المستقلة عن المخطط باستخدام Azure DocumentDB" (PDF) .
- ↑ بيتشمان، كريس (28 يونيو 2017). "بناء تطبيقات مرنة عالميًا باستخدام خدمة تطبيقات Azure وقاعدة بيانات Cosmos DB" . Build5Nines.com . Opsgility . تم الاطلاع عليه في 30 يناير 2018 .
- ↑ "Cosmos DB Profiler" . hibernatingrhinos.com . Hibernating Rhinos . تم الاطلاع عليه بتاريخ 20 مايو 2020 .
- ↑ "إضافة دعم التجميع حسب للدوال التجميعية" . feedback.azure.com . تم الاطلاع عليه بتاريخ 31-03-2019 .
روابط خارجية
- قواعد البيانات الموجهة نحو المستندات
- خدمات مايكروسوفت السحابية
- NoSQL
- مخازن البيانات الموزعة
