ما هي ضمانات ACID على Azure Databricks؟

يستخدم Azure Databricks Delta Lake افتراضيا لجميع القراءات والكتابة والبناء على ضمانات ACID التي يوفرها بروتوكول مصدر مفتوح Delta Lake. ACID يرمز إلى الذرية والاتساق والعزل والمتانة.

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

في حين أن العديد من تقنيات معالجة البيانات وتخزينها تصف وجود معاملات ACID، تختلف الضمانات المحددة حسب النظام، وقد تختلف المعاملات على Azure Databricks عن الأنظمة الأخرى التي عملت معها.

إشعار

تصف هذه الصفحة ضمانات للجداول المدعومة من Delta Lake. قد لا توفر تنسيقات البيانات الأخرى والأنظمة المتكاملة ضمانات للمعاملات للقراءة والكتابة.

تستخدم جميع عمليات الكتابة في Azure Databricks إلى تخزين الكائنات السحابية عمليات تثبيت المعاملات، والتي تنشئ ملفات بيانات التعريف بدءا من _started_<id> ملفات البيانات وإلى _committed_<id> جانبها. لا تحتاج إلى التفاعل مع هذه الملفات، حيث يقوم Azure Databricks بشكل روتيني بتنظيف ملفات بيانات التعريف التي لا معنى لها.

كيف يتم تحديد نطاق المعاملات على Azure Databricks؟

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

بشكل افتراضي، يوفر Azure Databricks عزل اللقطة على عمليات القراءة والعزل القابل للكتابة والتسلسل على عمليات الكتابة. يوفر العزل القابل للتسلسل للكتابة ضمانات أقوى من عزل اللقطة، ولكنه يطبق هذا العزل الأقوى فقط للكتابات.

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

لا تحتوي BEGIN/END Azure Databricks على بنيات تسمح بتجميع عمليات متعددة معا كمعاملة واحدة. التطبيقات التي تعدل جداول متعددة تلتزم بالمعاملات في كل جدول بطريقة تسلسلية. يمكنك دمج عمليات الإدراج والتحديثات والحذف مقابل جدول في معاملة كتابة واحدة باستخدام MERGE INTO.

كيف تنفذ Azure Databricks آلية الذرية؟

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

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

كيف ينفذ Azure Databricks المتانة؟

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

كيف ينفذ Azure Databricks التناسق؟

يستخدم Delta Lake التحكم المتفائل في التزامن لتوفير ضمانات المعاملات بين عمليات الكتابة. في إطار هذه الآلية، تعمل عمليات الكتابة على ثلاث مراحل:

  1. اقرأ: يقرأ (إذا لزم الأمر) أحدث إصدار متوفر من الجدول لتحديد الملفات التي يجب تعديلها (أي إعادة كتابتها).
    • لا تقرأ عمليات الكتابة الملحقة فقط حالة الجدول الحالية قبل الكتابة. يستفيد التحقق من صحة المخطط من بيانات التعريف من سجل المعاملات.
  2. الكتابة: يكتب ملفات البيانات إلى الدليل المستخدم لتعريف الجدول.
  3. التحقق من الصحة والتثبيت:
    • يتحقق ما إذا كانت التغييرات المقترحة تتعارض مع أي تغييرات أخرى قد تكون تم تنفيذها بشكل متزامن منذ اللقطة التي تمت قراءتها.
    • إذا لم تكن هناك تعارضات، يتم تثبيت جميع التغييرات المرحلية كنسخة مطابقة جديدة تم إصدارها، وتنجح عملية الكتابة.
    • إذا كانت هناك تعارضات، تفشل عملية الكتابة مع استثناء تعديل متزامن. يمنع هذا الفشل تلف البيانات.

يفترض التزامن المتفائل أن معظم المعاملات المتزامنة على بياناتك قد لا تتعارض مع بعضها البعض، ولكن يمكن أن تحدث تعارضات. راجع مستويات العزل وتعارضات الكتابة على Azure Databricks.

كيف ينفذ Azure Databricks العزل؟

يستخدم Azure Databricks عزلا قابلا للتسلسل للكتابة بشكل افتراضي لجميع عمليات كتابة الجدول وتحديثاته. يتم استخدام عزل اللقطة لجميع قراءات الجدول.

تعمل قابلية الكتابة التسلسلية والتحكم المتفائل في التزامن معا لتوفير معدل نقل عال للكتابات. تتوفر دائما الحالة الصالحة الحالية للجدول، ويمكن بدء الكتابة مقابل جدول في أي وقت. القراءات المتزامنة محدودة فقط من خلال معدل نقل metastore وموارد السحابة.

راجع مستويات العزل وتعارضات الكتابة على Azure Databricks.

هل يدعم Delta Lake المعاملات متعددة الجداول؟

لا يدعم Delta Lake المعاملات متعددة الجداول. يدعم Delta Lake المعاملات على مستوى الجدول .

علاقات المفتاح الأساسي والمفتاح الخارجي على Azure Databricks إعلامية ولا يتم فرضها. راجع تعريف علاقات المفتاح الأساسي والمفتاح الخارجي.

ماذا يعني أن Delta Lake يدعم عمليات الكتابة متعددة المجموعات؟

يمنع Delta Lake تلف البيانات عندما تكتب مجموعات متعددة إلى نفس الجدول بشكل متزامن. يمكن أن تتعارض بعض عمليات الكتابة أثناء التنفيذ المتزامن، ولكن لا تتلف الجدول. راجع مستويات العزل وتعارضات الكتابة على Azure Databricks.

هل يمكنني تعديل جدول Delta من مساحات عمل مختلفة؟

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