تكوين التخزين وقواعد البيانات

مكتمل

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

تكوين قواعد البيانات الخاصة بك من سير العمل

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

عندما تعمل مع Azure SQL، تحتاج إلى تطبيق مخططات قاعدة البيانات عن طريق الاتصال بخادم قاعدة البيانات وتنفيذ الأوامر باستخدام البرامج النصية لـ SQL. هذه الأوامر هي عمليات مستوى البيانات. يحتاج سير العمل الخاص بك إلى المصادقة على خادم قاعدة البيانات ثم تنفيذ البرامج النصية. يوفر GitHub Actions الإجراء azure/sql-action الذي يمكنه الاتصال بخادم قاعدة بيانات Azure SQL وتنفيذ الأوامر.

لا تحتاج بعض خدمات البيانات والتخزين الأخرى إلى التكوين باستخدام واجهة برمجة تطبيقات مستوى البيانات. على سبيل المثال، عندما تعمل مع Azure Cosmos DB، فإنك تخزن بياناتك في حاوية. يمكنك تكوين الحاويات الخاصة بك باستخدام مستوى التحكم، مباشرة من داخل ملف Bicep الخاص بك. وبالمثل، يمكنك توزيع وإدارة معظم جوانب حاويات تخزين Azure الثنائية الكبيرة داخل Bicep أيضاً. في التمرين التالي، سترى مثالاً على كيفية إنشاء حاوية الكائنات الثنائية كبيرة الحجم من Bicep.

إضافة بيانات

يتطلب العديد من الحلول بيانات مرجعية لتتم إضافتها إلى قواعد البيانات أو حسابات التخزين قبل أن تعمل. يمكن أن تكون مهام سير العمل مكانًا جيدًا لإضافة هذه البيانات. وهذا يعني أنه بعد تشغيل سير العمل، يتم تكوين بيئتك بالكامل وجاهزة للاستخدام.

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

الأسلوب الذي تستخدمه لإضافة البيانات يعتمد على الخدمة التي تستخدمها. على سبيل المثال:

  • لإضافة بيانات إلى Azure SQL Database، تحتاج إلى تنفيذ برنامج نصي، مثل تكوين مخطط.
  • عندما تحتاج إلى إدراج بيانات في Azure Cosmos DB، فأنت بحاجة إلى الوصول إلى واجهة برمجة تطبيقات مستوى البيانات الخاصة بها، والتي قد تتطلب منك كتابة بعض التعليمات البرمجية النصية المخصصة.
  • لتحميل الكائنات الثنائية كبيرة الحجم إلى حاوية كائن ثنائي كبير الحجم Azure Storage، يمكنك استخدام أدوات مختلفة من البرامج النصية لسير العمل، بما في ذلك تطبيق سطر الأوامر AzCopy أو Azure PowerShell أو Azure CLI. تتعرف كل أداة من هذه الأدوات على كيفية المصادقة على Azure Storage نيابةً عنك، وكيفية الاتصال بواجهة برمجة تطبيقات مستوى البيانات لتحميل البيانات الكبيرة.

Idempotence

واحدة من خصائص مهام سير عمل التوزيع والبنية الأساسية كرمز هو أنه يجب أن تكون قادرًا على إعادة توزيع مرارًا وتكرارًا دون أي آثار جانبية ضارة. على سبيل المثال، عند إعادة نشر ملف Bicep الذي قمت بنشره بالفعل، يقارن Azure Resource Manager الملف الذي أرسلته بالحالة الحالية لموارد Azure. إذا لم تكن هناك تغييرات، فإن Resource Manager لا يفعل أي شيء. تسمى القدرة على إعادة تنفيذ عملية بشكل متكرر idempotence. إنها ممارسة جيدة للتأكد من البرامج النصية الخاصة بك وغيرها من خطوات سير العمل غير متساوي القوى.

يعتبر Idempotence مهماً بشكل خاص عندما تتفاعل مع خدمات البيانات، لأنها تحافظ على الحالة. تخيل أنك تقوم بإدراج مستخدم عينة في جدول قاعدة بيانات من سير العمل الخاص بك. إذا لم تكن حذرًا، في كل مرة تقوم فيها بتشغيل سير العمل الخاص بك سيتم إنشاء مستخدم عينة جديدة. هذه النتيجة على الأرجح ليست ما تريده.

عند تطبيق المخططات على Azure SQL Database، يمكنك استخدام حزمة بيانات، تسمى أيضاً ملف DACPAC، لتوزيع مخططك. يبني سير العمل الخاص بك ملف DACPAC من التعليمات البرمجية المصدر وإنشاء عنصر سير عمل، تمامًا كما هو الحال مع أحد التطبيقات. بعد ذلك، توزع مهمة التوزيع في سير العمل ملف DACPAC إلى قاعدة البيانات:

Diagram showing a workflow uploading and then referring to an artifact named 'database'.

عندما يتم توزيع ملف DACPAC، فإنه يتصرف بطريقة غير فعالة من خلال مقارنة الحالة المستهدفة لقاعدة البيانات الخاصة بك بالحالة المحددة في الحزمة. في كثير من الحالات، هذا يعني أنك لست بحاجة إلى كتابة نصوص تتبع كيان العاطفة، لأن الأداة تتعامل معها نيابة عنك. تعمل بعض الأدوات الخاصة بـ Azure Cosmos DB وAzure Storage بشكل صحيح أيضاً.

ولكن عند إنشاء بيانات نموذجية في Azure SQL Database، أو خدمة تخزين أخرى لا تعمل تلقائياً بطريقة غير فعالة، فمن الجيد كتابة البرنامج النصي بحيث ينشئ البيانات فقط إذا لم يكن موجوداً بالفعل.

من المهم أيضا مراعاة ما إذا كنت قد تحتاج إلى التراجع عن عمليات التوزيع، مثل إعادة تشغيل إصدار أقدم من سير عمل التوزيع. يمكن أن يصبح التراجع عن التغييرات على بياناتك معقدا، لذا فكر بعناية في كيفية عمل الحل الخاص بك إذا كنت بحاجة إلى السماح بالإعادة إلى الحالة السابقة.

أمن الشبكة

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

  • لا يمكن الوصول إلى خادم قاعدة البيانات هذا إلا من قائمة محددة من عناوين IP.
  • يمكن الوصول إلى حساب التخزين هذا فقط من الموارد التي تم توزيعها داخل شبكة ظاهرية محددة.

قيود الشبكة شائعة مع قواعد البيانات، لأنه قد يبدو أنه لا توجد حاجة لأي شيء على الإنترنت للاتصال بخادم قاعدة بيانات.

ومع ذلك، يمكن أن تؤدي قيود الشبكة أيضًا إلى صعوبة عمل مهام سير عمل التوزيع مع مستويات بيانات الموارد أيضًا. عند استخدام مشغّل مستضاف على GitHub، فلن يكون من السهل معرفة عنوان IP الخاص به مسبقًا، وقد يتم تعيينه من مجموعة كبيرة من عناوين IP. بالإضافة إلى ذلك، لا يمكن توصيل المشغّلين المستضافين على GitHub بالشبكات الظاهرية الخاصة بك.

يمكن لبعض الإجراءات التي تساعدك على تنفيذ عمليات مستوى البيانات حل هذه المشكلات. على سبيل المثال، azure/sql-action الإجراء:

Diagram illustrating the firewall update process.

عند استخدام الإجراء azure/sql-action للعمل مع خادم أو قاعدة بيانات منطقية Azure SQL، فإنه يستخدم هُويَّة حمل العمل للاتصال بمستوى التحكم لخادم Azure SQL المنطقي. يقوم بتحديث جدار الحماية للسماح للمشغّل بالوصول إلى الخادم من عنوان IP الخاص به . بعد ذلك، يمكنه إرسال ملف DACPAC أو البرنامج النصي بنجاح للتنفيذ . يقوم الإجراء تلقائيًا بإزالة قاعدة جدار الحماية عند الانتهاء.

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

سير عمل التوزيع الخاص بك

في التمرين التالي، ستقوم بتحديث سير عمل التوزيع الخاص بك لإضافة وظائف جديدة لبناء مكونات قاعدة بيانات موقع الويب الخاص بك وتوزيع قاعدة البيانات وإضافة بيانات أولية:

Diagram showing the revised workflow, including a new database build job, a database deployment job, and data seeding jobs in the test environment.