سؤال

هل هناك طريقة لإجراء مجموعة من الإجراءات غير الذرية على خادم MongoDB (باستخدام برنامج تشغيل Ruby) كعمل ذري واحد؟ ما أحتاجه هو في الأساس قفل على كائن/مجموعة معينة.

هل كانت مفيدة؟

المحلول

لا توجد طريقة للقيام بذلك في برنامج تشغيل Ruby لأنه لا توجد طريقة للقيام بذلك في Mongodb. Mongo يدعم العمليات الذرية الواحدة الفردية فقط. لذلك يتم بشكل أساسي إدراج أو تحديث أو حذف مستند واحد من الناحية الذرية ، ولكن ليس العمليات عبر مستندات متعددة.

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

نصائح أخرى

نظرًا لأنه يمكنك إجراء العمليات الذرية على مستندات واحدة ، فهناك طرق لمحاكاة ما تريد. انظر هذا المقال:

http://kylebanker.com/blog/2010/06/07/mongodbinventory-transactions/

وبالنسبة لبعض المبادئ وراء الأفكار هناك ، انظر هذا:

http://www.eaipatterns.com/docs/ieee_software_design_2pc.pdf

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top