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

**التحكم في التزامن** **(بالإنجليزية Concurrency Control)**  في علوم الحاسوب وتكنولوجيا المعلومات هو مجال يهتم بضمان إنتاج نتائج صحيحة عند تنفيذ العمليات المتزامنة في أنظمة الحاسوب، بما في ذلك برمجة الحاسوب،وأنظمة التشغيل والمعالجات المتعددة، المعالجات المتعددة، وقواعد البيانات، مع السعي لتحقيق هذه النتائج بأقصى سرعة ممكنة. تتألف أنظمة الحاسوب، سواء كانت برمجيات أو أجهزة، من وحدات أو مكونات. صُمم كل مكون ليعمل بشكل صحيح، أي ليُطابق أو يستوفي قواعد اتساق محددة. عندما تتفاعل المكونات العاملة بالتزامن، سواء عن طريق تبادل الرسائل أو مشاركة البيانات التي يتم الوصول إليها (في الذاكرة أو التخزين)، قد ينتهك أحد المكونات اتساق مكون آخر. يوفر المجال العام ل**لتحكم في التزامن** القواعد، الأساليب، منهجيات التصميم، والنظرياتاللازمة للحفاظ على اتساق المكونات المتزامنة أثناء تفاعلها، وبالتالي ضمان اتساق وصحة النظام بأكمله. يتطلب إدخال التحكم في التزامن في النظام عادةً تطبيق قيود تشغيل تؤدي إلى انخفاض في الأداء إلى حد ما. لذا، يجب تحقيق الاتساق والصحة التشغيلية بأعلى كفاءة ممكنة، دون خفض الأداء إلى مستويات غير مقبولة. قد يفرض التحكم في التزامن تعقيداً إضافياً كبيراً ونفقات علوية في خوارزمية متزامنة مقارنة بالخوارزميات التسلسلية الأبسط. على سبيل المثال، قد يؤدي الفشل في تطبيق آليات التحكم في التزامن إلى '''تلف البيانات'''، نتيجة لعمليات قراءة أو كتابة غير مكتملة (ممزقة).

## التحكم في التزامن في قواعد البيانات
تعليقات:

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

يضمن **التحكم في التزامن** في أنظمة إدارة قواعد البيانات (**DBMS**؛ على سبيل المثال، بيرنستاين وآخرون 1987، ويكوم وفوسن 2001)، والكائنات المعاملاتية الأخرى، والتطبيقات الموزعة ذات الصلة (مثل الحوسبة الشبكية والحوسبة السحابية)، تنفيذ *معاملات قواعد البيانات* بشكل متزامن دون انتهاك سلامة بيانات قواعد البيانات المعنية.

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

لقد تم توضيح النظرية الراسخة للتحكم في التزامن لأنظمة قواعد البيانات في المراجع المذكورة أعلاه، وهي '''نظرية''' **التسلسل (Serializability Theory)**، والتي تتيح تصميم وتحليل أساليب وآليات التحكم في التزامن بفعالية. تم تقديم نظرية بديلة للتحكم في التزامن في المعاملات الذرية عبر أنواع البيانات المجردة في (لينش وآخرون 1993)، ولم يتم استخدامها في هذا السياق. تُعد هذه النظرية أكثر دقة وتعقيداً ونطاقاً أوسع، وقد استُخدمت بشكل أقل في أدبيات قواعد البيانات مقارنة بالنظرية الكلاسيكية المذكورة أعلاه. لكلتا النظريتين إيجابيات وسلبيات، وتركيز ورؤية خاصة بها. وهما متكاملتان إلى حد ما، وقد يكون دمجهما مفيداً.
التحكم في التزامن وصحة البيانات لضمان **صحة البيانات**، تضمن أنظمة إدارة قواعد البيانات (**DBMS**) عادةً أن تكون جداول المعاملات المُنشأة **قابلة للتسلسل (serializable)** فقط. يمكن تخفيف هذا التسلسل بشكل مقصود بهدف تحسين الأداء، لكن ذلك لا يحدث إلا في الحالات التي لا يؤثر فيها على صحة التطبيق.

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

### معاملات قاعدة البيانات وقواعد ACID
تطور مفهوم **معاملة قاعدة البيانات** (أو **المعاملة الذرية**) لضمان سلوك موثوق لأنظمة قواعد البيانات في بيئة مليئة بالأخطاء، حيث يمكن أن تحدث الأعطال في أي وقت، ولتمكين التعافي منها إلى حالة متسقة لقاعدة البيانات.

تُعرّف معاملة قاعدة البيانات بأنها **وحدة عمل**، وعادةً ما تتضمن عدداً من العمليات التي تُجرى عبر قاعدة البيانات (مثل قراءة كائن بيانات، الكتابة، أو الحصول على قفل). تُعد المعاملة تجريداً مدعوماً في قواعد البيانات وأنظمة أخرى. كل معاملة لها حدود محددة جيداً من حيث تنفيذات البرامج/الأكواد التي تندرج تحتها، ويحددها مبرمج المعاملة عبر أوامر خاصة.

تخضع كل معاملة قاعدة بيانات للقواعد التالية، التي يضمنها نظام إدارة قواعد البيانات نفسه للمعاملات التي يُشغلها:

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

لقد توسع مفهوم **المعاملة الذرية (Atomic Transaction)** على مر السنين ليشمل ما يُعرف الآن **بالمعاملات التجارية** **(Business Transactions)**، التي تنفذ فعلياً أنواعاً من سير العمل (workflows) وليست بالضرورة ذرية بطبيعتها. ومع ذلك، فإن مثل هذه المعاملات المحسنة عادةً ما تستخدم المعاملات الذرية كمكونات أساسية لها.

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

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

تحتاج غالبية أنظمة المعاملات عالية الأداء إلى تشغيل المعاملات بشكل متزامن لتلبية متطلبات أدائها. بالتالي، بدون وجود آليات **التحكم في التزامن (Concurrency Control)**، لا تستطيع هذه الأنظمة تقديم نتائج صحيحة أو الحفاظ على اتساق قواعد بياناتها.

### آليات التحكم في التزامن

#### فئات
الفئات الرئيسية لآليات التحكم في التزامن هي:

* **متفائل** - السماح للمعاملات بالمضي قدمًا دون حظر أي من عملياتها (القراءة والكتابة) ("... وكن متفائلًا بشأن استيفاء القواعد...")، والتحقق فقط من انتهاكات قواعد النزاهة المطلوبة (على سبيل المثال، إمكانية التسلسل وإمكانية الاسترداد ) عند كل التزام بالمعاملة. إذا تم اكتشاف انتهاكات عند تنفيذ المعاملة، فسيتم إلغاء المعاملة وإعادة تشغيلها. يعد هذا النهج فعالاً للغاية عندما يتم إلغاء عدد قليل من المعاملات.
* **متشائم** - قم بحظر عملية معاملة، إذا كان من الممكن أن تتسبب في انتهاك القواعد (على سبيل المثال، إمكانية التسلسل وإمكانية الاسترداد)، حتى يختفي احتمال الانتهاك. عادةً ما تؤدي عمليات الحظر إلى تقليل الأداء.
* **متفائل جزئيا** - يستجيب بشكل متشائم أو متفائل اعتمادا على نوع الانتهاك ومدى سرعة اكتشافه.

توفر الفئات المختلفة أداءً مختلفًا، أي معدلات مختلفة لاستكمال المعاملات المتوسطة ( *الإنتاجية* )، اعتمادًا على مزيج أنواع المعاملات، ومستوى الحوسبة للتوازي، فيجب اختيار الفئة والطريقة لتوفير أعلى أداء.

يؤدي **الحظر المتبادل** بين معاملتين أو أكثر (حيث تقوم كل منهما بحظر الأخرى) إلى حالة '''طريق مسدود''' **(Deadlock)**، تتوقف فيها المعاملات المعنية ولا تتمكن من الوصول إلى الاكتمال. معظم آليات التحكم في التزامن غير المتفائلة (التي تستخدم الحظر) عرضة للوقوع في طريق مسدود. تُحل هذه الحالة عادةً عن طريق **الإجهاض المتعمد** لمعاملة متوقفة (مما يحرر المعاملات الأخرى في هذا الطريق المسدود)، ثم إعادة تشغيلها وتنفيذها على الفور. عادةً ما تكون احتمالية حدوث طريق مسدود منخفضة.

تُسبب آليات الحظر، والجمود (deadlock)، والإجهاض (abortion) تدهورًا في الأداء، مما يؤدي إلى مفاضلات بين الفئات المختلفة للتحكم في التزامن.

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

# القفل (على سبيل المثال، **القفل ثنائي الطور** - 2PL) - التحكم في الوصول إلى البيانات عن طريق الأقفال المخصصة للبيانات. قد يتم حظر الوصول إلى معاملة إلى عنصر بيانات (كائن قاعدة بيانات) مقفل بواسطة معاملة أخرى (اعتمادًا على نوع القفل ونوع عملية الوصول) حتى تحرير القفل.
# **التحقق من الرسم البياني للتسلسل** (يُسمى أيضًا التحقق من الرسم البياني للتسلسل، أو التعارض، أو الأسبقية) - التحقق من الدورات في الرسم البياني للجدول وكسرها عن طريق الإجهاض.
# **ترتيب الطابع الزمني** (TO) - تعيين الطوابع الزمنية للمعاملات، والتحكم في الوصول إلى البيانات أو التحقق منه حسب ترتيب الطابع الزمني.

تشمل الأنواع الرئيسية الأخرى للتحكم في التزامن، المستخدمة بالاقتران مع الأساليب المذكورة آنفاً، ما يلي::

* **التحكم في التزامن متعدد الإصدارات** (MVCC) - زيادة التزامن والأداء من خلال إنشاء إصدار جديد من كائن قاعدة البيانات في كل مرة يتم فيها كتابة الكائن، والسماح بعمليات قراءة المعاملات لعدة إصدارات ذات صلة أخيرة (لكل كائن) اعتمادًا على طريقة الجدولة.
* **التحكم في تزامن الفهرس** - مزامنة عمليات الوصول إلى الفهارس ، بدلاً من بيانات المستخدم. توفر الأساليب المتخصصة مكاسب كبيرة في الأداء.
* **نموذج مساحة العمل الخاصة** ( **التحديث المؤجل** ) - تحتفظ كل معاملة بمساحة عمل خاصة للبيانات التي يتم الوصول إليها، وتصبح بياناتها المتغيرة مرئية خارج المعاملة فقط عند التزامها (على سبيل المثال، Weikum و Vossen 2001 ). يوفر هذا النموذج سلوكًا مختلفًا للتحكم في التزامن مع فوائد في العديد من الحالات.

يُعد **' **(Strict Strong Two-Phase Locking - SS2PL)**، المعروف أيضاً باسم "الجدولة الصارمة" أو "2PL الصارم"، النوع الأكثر شيوعاً من آليات التحكم في التزامن في أنظمة قواعد البيانات منذ ظهورها في سبعينيات القرن العشرين. يُعتبر هذا الأسلوب حالة خاصة (أو متغير) من  **(Two-Phase Locking - 2PL)**، وهو ذو طبيعة **متشائمة (Pessimistic)**.

على الرغم من اسمه الطويل لأسباب تاريخية، فإن فكرة آلية <code>SS2PL</code> بسيطة: "لا يتم تحرير جميع الأقفال التي طبقتها المعاملة إلا بعد انتهائها". يُشير <code>SS2PL</code> (أو **الصرامة Rigorousness**) أيضاً إلى مجموعة الجداول التي يمكن أن تُولدها هذه الآلية، مما يعني أن جداول <code>SS2PL</code> (أو الصرامة) تحمل هذه الخاصية.

=== الأهداف الرئيسية لآليات التحكم في التزامن ===
تحتاج آليات **التحكم في التزامن** في المقام الأول إلى العمل بشكل صحيح، أي الحفاظ على قواعد سلامة كل معاملة (فيما يتعلق بالتزامن؛ قواعد سلامة التطبيق المحددة تقع خارج هذا النطاق) أثناء تشغيل المعاملات بشكل متزامن. هذا يضمن سلامة نظام المعاملات بأكمله.بالإضافة إلى ذلك، هناك حاجة متزايدة لعمل هذه الآليات بفعالية بينما تُوزع المعاملات عبر<nowiki/>[[عملية (حوسبة)|العمليات]] [[حاسوب|وأجهزة الكمبيوتر]] [[شبكة حاسوب|وشبكات الكمبيوتر]] من المواضيع الأخرى التي قد تؤثر على التحكم في التزامن هي [[استعادة الملفات المحذوفة|**الاسترداد**]]**(Recovery)** [[إعادة نسخ|والتكرار]]**(Replication)**.

==== صحة ====

===== قابلية التسلسل =====
بهدف ضمان الدقة، يُعد الهدف الرئيسي المشترك لمعظم آليات **التحكم في التزامن** هو إنشاء جداول تتمتع بخاصية **إمكانية التسلسل (Serializability)**. بدون هذه الخاصية، قد تحدث ظواهر غير مرغوبة، مثل اختفاء الأموال من الحسابات أو ظهورها من العدم.

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

تُعتبر إمكانية التسلسل أعلى مستوى من العزل بين معاملات قاعدة البيانات، وهي المعيار الرئيسي لصحة المعاملات المتزامنة. في بعض الحالات، يُسمح بأشكال مخففة ومخترقة من التسلسل لتحسين الأداء (مثل آلية عزل **Snapshot Isolation** الشهيرة) أو لتلبية متطلبات التوفر في الأنظمة الموزعة بشكل كبير (انظر **'). ومع ذلك، يتم ذلك فقط إذا لم تُنتهك صحة التطبيق جراء هذا التخفيف؛ فعلى سبيل المثال، لا يُسمح بأي تخفيف للمعاملات المالية، حيث يمكن أن تختفي الأموال أو تظهر من العدم نتيجة لذلك.

تحقق جميع آليات التحكم في التزامن المطبقة تقريباً خاصية **إمكانية التسلسل (Serializability)** من خلال توفير **' **(Conflict Serializability)**. تُعد الأخيرة حالة خاصة وواسعة من إمكانية التسلسل؛ إذ إنها تغطي وتمكّن معظم الجداول القابلة للتسلسل ولا تفرض قيوداً إضافية كبيرة تُسبب التأخير، مما يسمح بتنفيذها بكفاءة.

===== إمكانية الاسترداد =====

: انظر ''إمكانية الاسترداد'' في ''إمكانية التسلسل''

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

على عكس إمكانية التسلسل (Serializability)، لا يمكن المساس بإمكانية الاسترداد أو تخفيفها تحت أي ظرف، لأن أي تخفيف يؤدي إلى انتهاك سريع لسلامة قاعدة البيانات عند الإجهاض. توفر الطرق الرئيسية المذكورة سابقاً آليات التسلسل. ومع ذلك، لا يوفر أي منها في شكله العام إمكانية الاسترداد تلقائياً، وتتطلب دعماً خاصاً وتحسينات آلية لضمانها. تُعد الصرامة (''Strictness'') حالة خاصة شائعة الاستخدام لإمكانية الاسترداد، حيث تسمح باسترداد قاعدة البيانات بكفاءة من الفشل (لكنها تستبعد التنفيذات المتفائلة).

==== توزيع ====
مع التطور التكنولوجي السريع في مجال الحوسبة، أصبح الفارق بين **الحوسبة المحلية (Local Computing)** و**الحوسبة الموزعة (Distributed Computing)** عبر [[شبكة حاسوب|الشبكات]] أو ناقلات البيانات ذات زمن الوصول المنخفض غير واضح. بالتالي، أصبح الاستخدام الفعال للتقنيات المحلية في هذه البيئات الموزعة أمراً شائعاً، كما هو الحال في **مجموعات الحواسيب (Computer Clusters)** و**المعالجات متعددة النوى (Multi-core Processors)**.

ومع ذلك، تمتلك التقنيات المحلية حدودها وتعتمد على عمليات متعددة (أو خيوط) مدعومة بمعالجات متعددة (أو متعددة النوى) لتحقيق التوسع. غالباً ما يؤدي هذا إلى تحويل المعاملات إلى **معاملات موزعة (Distributed Transactions)** إذا احتاجت هذه المعاملات إلى الامتداد عبر عمليات متعددة. في هذه الحالات، لا تستطيع معظم تقنيات التحكم في التزامن المحلية تحقيق النجاح المطلوب بفعالية.

===== استعادة =====
جميع الأنظمة معرضة للفشل، وبالتالي فإن التعامل مع ''[[استعادة الملفات المحذوفة|التعافي]]'' منه أمر لا بد منه. قد تؤثر خصائص الجداول الناتجة عن آلية التحكم في التزامن على فعالية وكفاءة عملية الاسترداد. على سبيل المثال، تُعد خاصية **الصرامة (Strictness)** (المذكورة في قسم إمكانية الاسترداد) مرغوبة غالباً لتحقيق استرداد فعال.

===== التكرار =====
لتحقيق **توفر عالٍ** (High Availability)، غالباً ما يتم **تكرار كائنات قاعدة البيانات** (Replication of Database Objects). يجب أن تظل تحديثات النسخ المتماثلة لنفس كائن قاعدة البيانات متزامنة. قد يؤثر هذا على الطريقة التي يتم بها التحكم في التزامن (على سبيل المثال، Gray et al. 1996).

== التحكم في التزامن في أنظمة التشغيل ==
تحتاج **أنظمة التشغيل متعددة المهام (Multi-tasking Operating Systems)**، وخاصة [[نظام تشغيل في الزمن الحقيقي|**أنظمة التشغيل في الوقت الفعلي**]] **(Real-time Operating Systems)**، إلى إيهام المستخدم بأن جميع المهام التي تعمل عليها تتنفذ في نفس الوقت. هذا الوهم ضروري حتى لو كانت مهمة واحدة أو عدد قليل فقط من المهام تتنفذ فعلياً في أي لحظة زمنية معينة، وذلك بسبب قيود الأجهزة التي يعمل عليها نظام التشغيل.

يُعد تعدد المهام أمراً بسيطاً نسبياً عندما تكون جميع المهام مستقلة عن بعضها البعض. ولكن، عندما تحاول عدة مهام استخدام نفس المورد، أو عندما تسعى المهام إلى مشاركة المعلومات، قد يؤدي ذلك إلى الارتباك وعدم الاتساق. تتمثل مهمة [[حوسبة متزامنة|**الحوسبة المتزامنة**]] **(Concurrent Computing)** في حل هذه المشكلة.

تشمل بعض الحلول استخدام "أقفال" مشابهة لتلك المستخدمة في قواعد البيانات، لكنها قد تتسبب في مشاكل خاصة بها مثل **الجمود (Deadlock)**. من الحلول الأخرى المتبعة **الخوارزميات غير الحظرية (Non-blocking Algorithms)** وقراءة النسخ والتحديث **متطابقة (Read-Copy-Update - RCU)'''.

## انظر أيضا

* قفل
* استبعاد التشارك
* تومئة

## مراجع

تصنيف:نظم إدارة قواعد البيانات
تصنيف:نظام معالجة المعاملات
تصنيف:قواعد بيانات
تصنيف:إدارة البيانات
تصنيف:صفحات بترجمات غير مراجعة