اے این ایس آئی ایس کیو ایل تنہائی کی سطح کی ایک تنقید

Critique Ansi Sql Isolation Levels



اے این ایس آئی ایس کیو ایل تنہائی کی سطح کی ایک تنقید
اے این ایس آئی ایس کیو ایل تنہائی کی سطح پر تنقید

خلاصہ: اے این ایس آئی ایس کیو ایل - 92 [ایم ایس ، اے این ایس آئی] مظاہر (رجحانات ، پڑھنے کے وقت کے مظاہر) کی بنیاد پر تنہائی کی سطح کی وضاحت کرتا ہے: گندا پڑھتا ہے ، ناقابل تلافی پڑھنے والا پڑھتا ہے ، اور پریت پڑھتا ہے۔ اس مضمون سے پتہ چلتا ہے کہ یہ مظاہر اور اے این ایس آئی ایس کیو ایل تعریفیں بہت سی مشہور تنہائی سطحوں کی صحیح طور پر خصوصیات نہیں کرتی ہیں ، جن میں مختلف تنہائی سطح کے معیاروں کے لئے تالا عمل درآمد شامل ہیں۔ یہ مقالہ اس رجحان کی وضاحت میں ابہام کی تحقیقات کرتا ہے اور مزید باقاعدہ تفصیل کی تجویز پیش کرتا ہے ، اس میں ایک نیا واقعہ پیش کیا گیا ہے جو تنہائی کی قسم کی بہتر خصوصیات رکھتا ہے۔ آخر میں ، اسنیپ شاٹ تنہائی نامی ایک اہم ملٹی ورژن الگ تھلگ قسم کی تعریف کی گئی ہے۔



1. تعارف



مختلف تنہائی کی سطحوں پر ہم وقتی لین دین چلانے سے پروگرامرز کو درستگی کو یقینی بناتے ہوئے ہم آہنگی اور تروپنپٹ وزن کرنے کی اجازت ملتی ہے۔ کم تنہائی کی سطح سے لین دین کی اتفاق میں اضافہ ہوتا ہے ، جس سے لین دین کے لئے غیر واضح یا ڈیٹا بیس کی غلط ریاست پر عمل پیرا ہونا ممکن ہوجاتا ہے۔ حیرت کی بات یہ ہے کہ ، جو لین دین کم تنہائی کی سطح پر چلتا ہے (غیر اعلانیہ پڑھیں یا فرسودہ ڈیٹا پڑھیں) [جی ایل پی ٹی] بیک وقت عمل میں لایا جاسکتا ہے جب کچھ ٹرانزیکشن اعلی تنہائی کی سطح پر پائے جاتے ہیں (مکمل طور پر سیریلائز)۔ یقینا، ، کم تنہائی کی سطح پر چلنے والے لین دین سے غلط ڈیٹا تیار ہوسکتا ہے۔ پروگرامر کو لازمی طور پر بعد میں ہونے والے لین دین کو اعلی تنہائی کی سطح پر چلنے والے ان غلط اعداد و شمار تک رسائی حاصل کرنے اور اس طرح کی غلطیوں کو پھیلانے سے روکنا چاہئے۔



اے این ایس آئی / آئی ایس او ایس کیو ایل - 92 تصریح [ایم ایس ، اے این ایس آئی] چار تنہائی کی سطح کی وضاحت کرتی ہے: (1) غیر پڑھے ہوئے پڑھیں (پڑھیں غیر متوقع) ، (2) پڑھیں کمٹ (پڑھیں) ، (3) تکرار قابل پڑھیں (دوبارہ پڑھیں) ، (4) ) سیریلاز ایبل (سیرئ ایبلبل)۔

یہ سطحیں کلاسک سیریلائزیشن کی تعریف اور تین ممنوعہ مضافات کا استعمال کرتے ہوئے بیان کی گئیں ، جن میں نامزد رجحانات شامل ہیں: گندا پڑھتا ہے ، ناقابل تلافی پڑھتا ہے ، اور پریت پڑھتا ہے۔ اے این ایس آئی کی تصریح میں مظاہر کے تصور کی واضح طور پر تعریف نہیں کی گئی ہے ، لیکن تصریح میں کہا گیا ہے کہ رجحان ایک آپریشنل سبقت ہے جس کے نتیجے میں عدم استحکام (شاید سیریزائبل نہیں) رویے پیدا ہوسکتے ہیں۔ جب اے این ایس آئی فینومینا کو شامل کرنے کی تجویز پیش کریں تو ، ہم ان بے ضابطگیوں کا حوالہ دیں گے۔ جیسا کہ بعد میں دکھایا گیا ہے ، بے ضابطگیوں اور رجحان کے مابین تکنیکی فرق موجود ہے ، لیکن عام تفہیم کے ل this یہ امتیاز اہم نہیں ہے۔

اے این ایس آئی کی تنہائی کی سطح لاک شیڈولرز کے طرز عمل سے متعلق ہے۔ کچھ لاک شیڈیولر کسی لین دین کو اس کی لاک درخواست کے دائرہ کار اور مدت کو تبدیل کرنے کی اجازت دیتے ہیں ، اس طرح دو مرحلے کے خالص تالے سے انحراف کرتے ہیں۔ یہ خیال [GLPT] نے متعارف کرایا تھا ، جو تسلسل کی ڈگری کو تین زاویوں میں واضح کرتا ہے: تالے ، ڈیٹا فلو گراف اور استثناء۔ مظاہر (یا استثناء) کے ذریعہ تنہائی کی سطح کی وضاحت SQL معیارات کی اجازت کے لئے ڈیزائن کیا گیا ہے جو تالوں کی بنا پر نافذ نہیں ہوتے ہیں۔



اس مضمون میں مظاہر کے طریقہ کار کی کچھ کوتاہیوں کو بیان کیا گیا ہے جو تنہائی کی سطح کی وضاحت کرتی ہیں۔ اے این ایس آئی کے تینوں مظاہر مبہم ہیں ، اور یہاں تک کہ انتہائی معمولی تشریحات میں بھی ، عملدرآمد کی تاریخ میں پائے جانے والے کچھ غیر معمولی طرز عمل کو خارج نہیں کیا جاتا ہے۔ اس سے کچھ متضاد نتائج برآمد ہوتے ہیں۔ خاص طور پر ، تالا پر مبنی تنہائی کی سطح مساوی اے این ایس آئی مظاہر سے مختلف خصوصیات ہیں۔ تجارتی ڈیٹا بیس سسٹم عام طور پر تنہائی کی سطح کو حاصل کرنے کے لئے تالے استعمال کرتے ہیں ، لہذا صورتحال عجیب ہے۔ اس کے علاوہ ، اے این ایس آئی مظاہر تجارتی نظاموں میں بہت سی قسم کی مشہور تنہائی کی سطح کے سلوک کو ممتاز نہیں کرسکتا۔ یہ مقالہ دوسرے مظاہروں کو پیش کرتا ہے جو ان تنہائی کی سطح کی خصوصیات ہیں۔

سیکشن 2 تنہائی کی سطح کی بنیادی اصطلاحات متعارف کراتا ہے اور اے این ایس آئی ایس کیو ایل اور لاک تنہائی کی سطح کی وضاحت کرتا ہے۔

سیکشن 3 میں اے این ایس آئی کی تنہائی کی سطح کی کچھ کوتاہیوں کی روشنی ڈالی گئی ہے اور ایک نیا مظہر پیش کیا گیا ہے۔ دیگر مشہور تنہائی سطحوں کی بھی تعریف کی گئی ہے۔ یہ تعریفیں ANSI SQL تنہائی کی سطح اور 1977 [GLPT] میں مستقل مزاجی کی ڈگری کا نقشہ بناتی ہیں۔ ان میں کرسر اسٹیبلٹی اور ریپیٹ ایبل ریڈنگ [DAT] بھی شامل ہے جیسا کہ کرس ڈیٹ نے بیان کیا ہے۔ متحد فریم ورک کے اندر تنہائی کی سطح پر تبادلہ خیال کرنا آزاد اصطلاحات کی غلط فہمی کو کم کرسکتا ہے۔

سیکشن 4 ایک ملٹی ورزنز کنکرنسی کنٹرول میکانزم متعارف کراتا ہے جسے اسنیپ شاٹ تنہائی کہا جاتا ہے جو اے این ایس آئی ایس کیو ایل مظاہر کے استعمال سے گریز کرتا ہے لیکن اس کو سیریلائز نہیں کیا جاسکتا ہے۔ اسنیپ شاٹ تنہائی خود دلچسپ ہے کیونکہ یہ پڑھنے کے مرتکب اور بار بار قابل مطالعہ کے درمیان تنہائی کی سطح مہیا کرتا ہے۔ ایک نیا طریقہ کار ہے (جس میں اس کانفرنس دستاویز کے لمبے ورژن میں فراہم کیا گیا ہے) جس میں کثیر ورژن والے اعداد و شمار کی تنہائی کی سطح کو کلاسیکی سنگل ورژن لاک کرنے کی سیریلائزیبلٹی تھیوری سے تعی .ن کیا گیا ہے۔

سیکشن 5 میں سیکشن 3 اور 4 میں متعارف کروائی گئی تنہائی کی سطحوں میں فرق کرنے کے لئے کچھ نئی مستثنیات کی کھوج کی گئی ہے۔ یہاں پیش کردہ توسیع شدہ اے این ایس آئی ایس کیو ایل کے مظاہر میں اسنیپ شاٹ تنہائی اور کرسر کے استحکام کو نمایاں کرنے کی اہلیت کا فقدان ہے۔

سیکشن 6 ایک خلاصہ اور نتائج پیش کرتا ہے۔

2. تنہائی کی تعریف

2.1 سیریلائزیشن کا تصور

لین دین اور تالے کے تصورات ادب [BHG، PAP، PON، GR] میں اچھی طرح سے واضح ہیں۔ اگلے کچھ پیراگراف ان مضامین میں استعمال ہونے والی اصطلاحات کا جائزہ لیں گے۔

ٹرانزیکشن آپریشن کا ایک گروپ ہوتا ہے جو ایک ڈیٹا بیس کو ایک ریاست سے دوسری ریاست میں منتقل کرنے کے لئے گروپس کو جوڑتا ہے۔ تاریخ کا مطلب یہ ہے کہ لین دین کے سیٹ کے ل transactions انٹلی ویوڈ ایگزیکیوشن کو اس کے آپریشن کے حکم کے بعد ترتیب دیا جاتا ہے ، جہاں آپریشنز کا مطلب کسی خاص ڈیٹا آئٹم کو پڑھنے اور تحریر (جیسے ، اضافے ، تازہ کاری اور حذف کرنا) ہوتا ہے۔ . اگر تاریخ میں ایک ہی ڈیٹا آئٹم کے لئے دو آپریشن مختلف ٹرانزیکشنز کے ذریعہ سرانجام دیئے جاتے ہیں ، اور کم از کم ایک کارروائی اس شے پر لکھی جاتی ہے ، تو پھر کہا جاتا ہے کہ یہ دونوں کارروائییں متضاد ہیں (مترجم کی نوٹ: ڈیٹا سے متعلقہ سمجھا جاسکتا ہے) . [ای جی ایل ٹی] کے بعد ، یہ تعریف 'ڈیٹا آئٹم' کے معنی کی ایک وسیع تر ترجمانی کرتی ہے: یہ ٹیبل کی قطار ، کسی صفحے پر جگہ ، پوری ٹیبل ، یا مواصلاتی آبجیکٹ (جیسے قطار میں موجود پیغام) ہوسکتی ہے۔ ). متضاد کاروائیاں ڈیٹا آئٹموں کے ایک سیٹ پر بھی ہوسکتی ہیں جو کسی پیشوکی تالے کے ذریعہ محفوظ ہیں یا کسی ڈیٹا آئٹم پر۔

ایک خاص تاریخ متعدد لین دین کے مابین ٹائم محور کے ڈیٹا فلو انحصار کا گراف تیار کرسکتی ہے۔ تاریخ میں پیش کردہ کسی لین دین کی کارروائی کو ایک نقطہ کے طور پر پیش کیا جاتا ہے۔ اگر تاریخ میں ٹرانزیکشن T1 کے آپریشن اوپی 2 میں ٹرانزیکشن T2 کے آپریشن آپٹ 2 سے تنازعہ ہوتا ہے تو ، انحصار گراف میں ایج بن جاتا ہے۔ (مترجم کا نوٹ: اس کا مطلب یہ ہے کہ ، آپریشن نقطہ ہے ، تنازعہ ایک کنارے کی حیثیت رکھتا ہے ، اور انحصار کا گراف تعمیر ہوتا ہے)۔ اگر دو ہسٹری مساوی ہیں تو ، پھر تاریخ میں پیش کردہ لین دین اور انحصار گراف ایک جیسے ہیں۔ تاریخ سیرائزیبل ہے ، اس کا مطلب یہ ہے کہ تاریخ کو سیریل ہسٹری کے ساتھ مساوی کیا جاسکتا ہے - یعنی ، اس کا انحصار گراف (متعدد لین دین کے درمیان وقت پر مبنی ڈیٹا فلو گراف) اور ترتیب وار تار۔ متعدد لین دین کو انجام دینے والی قطار کی تاریخ کا انحصار گراف ایک ہی ہے۔

2.2 ANSI SQL تنہائی کی سطح

اے این ایس آئی ایس کیو ایل تنہائی ڈیزائنرز ایک ایسی تعریف کی تلاش میں ہیں جو صرف لاک پر مبنی نہیں بلکہ بہت ساری مختلف رفاقتوں کی اجازت دیتا ہے۔ وہ درج ذیل تین مظاہروں کا استعمال کرتے ہوئے تنہائی کی تعریف کرتے ہیں۔

P1 (گندا پڑھنا) : ٹرانزیکشن T1 ڈیٹا آئٹم میں ترمیم کرتا ہے۔ ایک اور ٹرانزیکشن T2 اعداد و شمار کے آئٹم کو پڑھتا ہے اس سے پہلے کہ T1 کمٹ یا رول بیک کریں۔ اگر T1 پھر رول بیک کرتا ہے تو ، T2 غیر منقولہ ڈیٹا آئٹم کو پڑھتا ہے۔

P2 (ناقابل تلافی پڑھنے یا مبہم پڑھیں) : ٹرانزیکشن T1 ڈیٹا آئٹم کو پڑھتا ہے۔ ایک اور ٹرانزیکشن T2 ڈیٹا آئٹم میں ترمیم یا حذف کرتا ہے اور اسے پیش کرتا ہے۔ اگر ٹی 1 ڈیٹا آئٹم کو دوبارہ پڑھنے کی کوشش کرتا ہے تو ، اس میں ترمیم شدہ قدر نظر آئے گی یا پتہ چل جائے گا کہ ڈیٹا آئٹم کو حذف کردیا گیا ہے۔

P3 (پریت) : ٹرانزیکشن T1 میں اعداد و شمار کے آئٹموں کا ایک مجموعہ پڑھا جاتا ہے جو کچھ کو پورا کرتا ہے۔ ٹرانزیکشن T2 پھر ڈیٹا آئٹم تیار کرتا ہے جو T1 کو مطمئن کرتا ہے اور پیش کرتا ہے۔ اگر T1 پھر اسی کو استعمال کرتے ہوئے پڑھنے کو دہراتا ہے تو ، اس سے پہلے گروپ کے مقابلے میں ایک مختلف گروپ ڈیٹا آئٹم مل جائے گا۔

ان میں سے کوئی بھی مظاہر سیرت کی تاریخ میں نہیں ہوگا۔ کیونکہ سیریلائزیشن تھیوریم کے ذریعے ، وہ سیریلائزیشن کی تاریخ [EGLT ، BHG تھیوریئم 3.6 ، G R سیکشن 7.5.8.2 ، PON تھیوریئم 9.4.2] میں واقع نہیں ہوسکتے ہیں۔

شارٹ ہینڈ اشارے کے ذریعہ پڑھائی ، تحریر ، عہد اور اسقاط پر مشتمل ایک تاریخ کی نمائندگی کی جاسکتی ہے: 'w1 [x]' ڈیٹا آئٹم ایکس پر لین دین 1 کی تحریر کی نمائندگی کرتا ہے (ڈیٹا آئٹم 'ترمیم شدہ' ہے) ، اور 'r2 [x]' اشارہ کرتا ہے کہ ٹرانزیکشن 2 ایکس پڑھتا ہے۔ ٹرانزیکشن 1 پیش گوئی شدہ پی کے پڑھنے اور تحریر کو مطمئن کرتا ہے۔ ریکارڈوں کا ایک مجموعہ بالترتیب r1 [P] اور w1 [P] کے ذریعہ پیش کیا جاتا ہے۔ ٹرانزیکشن 1 کی کمٹ اور رول بیک کو بالترتیب 'c1' اور 'a1' کے نام سے تعبیر کیا گیا ہے۔

مندرجہ ذیل کی اجازت نہ دینے کے طور پر فینومینا P1 کا دوبارہ بیان کیا جاسکتا ہے:

(2.1) w1 [x]۔ . . r2 [x]۔ . . (کسی بھی ترتیب میں a1 اور c2)

پی 1 کے الفاظ الفاظ مبہم ہیں (مترجم کا نوٹ: دوسرے مرتکب ٹرانزیکشن کے لئے الفاظ الفاظ پہلے اسقاط ٹرانزیکشن کے لکھے ہوئے ڈیٹا کو پڑھتے ہیں)۔ در حقیقت ، اس پر زور نہیں دیتا ہے کہ ٹی 1 کو معطل کرنا ضروری ہے اس سے یہ صرف اس بات کی نشاندہی ہوتی ہے کہ اگر ایسا ہوتا ہے تو ، تضادات پیدا ہوسکتی ہیں۔ کچھ لوگ جنہوں نے P1 وضاحت پڑھی ہے ان کی وضاحت اس طرح کی گئی ہے:

(2.2) w1 [x] ... r2 [x] ... ((c1 یا a1) اور (c2 یا a2 کسی بھی ترتیب میں)

P1 کا (2.2) مختلف شکل T1 کو تاریخ میں ڈیٹا آئٹم x میں ترمیم کرنے کی اجازت نہیں دیتا ہے ، اور پھر T2 T1 کے ارتکاب یا اسقاط سے قبل ڈیٹا آئٹم کی کارروائیوں کا تسلسل پڑھتا ہے۔ یہ T1 اسقاط حمل یا T2 جمع کرنے پر زور نہیں دیتا ہے۔

ڈیفینیشن (2.2) P1 کے لئے (2.1) کے مقابلے میں زیادہ نرم ہے کیونکہ یہ چاروں ممکنہ لین دین T1 اور T2 کے لئے وعدے کے خاتمے کی ترتیب پر پابندی عائد کرتا ہے ، جبکہ (2.1) صرف چار میں سے دو ممنوع ہے۔ (1) کے معنی کے طور پر (2.2) کی وضاحت کریں ، جو مستقبل میں غیر معمولی حالات پر عمل درآمد کے حکم کو روکتے ہیں۔ ہم (2.2) کو P1 کی ایک ڈھیلی تشریح اور (2.1) کو P1 کی سخت تشریح کہتے ہیں۔ تشریح (2.2) اس مظاہر کی وضاحت کرتی ہے جو مظاہر کا باعث بن سکتی ہے ، جبکہ (2.1) اصل بے ضابطگی کی وضاحت کرتی ہے۔ بالترتیب P1 اور A1 کے طور پر اظہار کیا گیا۔ لہذا:

پی 1 : w1 [x] ... r2 [x] ... ((c1 یا a1) اور (c2 یا a2) کسی بھی ترتیب میں)

A1 : w1 [x] ... r2 [x] ... (کسی بھی ترتیب میں a1 اور c2)

اسی طرح ، مظاہر P2 اور P3 کی بھی سخت اور ڈھیلا تشریحات ہیں ، P2 اور P3 کی نرمی سے ترجمانی کی جاتی ہے ، اور A2 اور A3 کی سخت وضاحت کی جاتی ہے (مترجم کا نوٹ: P غیر معمولی پڑھنے کے مظاہر کی آپریشنل ترتیب کی نشاندہی کرتا ہے ، اور A ایک ایسی کارروائی کی نشاندہی کرتا ہے جس سے اعداد و شمار میں تضاد پیدا ہوتا ہے۔ ترتیب):

پی 2 : r1 [x] ... w2 [x] ... ((c1 یا a1) اور (c2 یا a2 کسی بھی ترتیب میں)

A2 : r1 [x] ... w2 [x] ... c2 ... r1 [x] ... c1

پی 3 : r1 [P] ... w2 [y میں P] ... ((c1 یا a1) اور (c2 یا a2) کوئی بھی آرڈر)

A3 : r1 [P] ... w2 [y میں P] ... c2 ... r1 [P] ... c1

سیکشن 3 میں ان متبادل تصورات کا مزید تجزیہ کیا گیا ہے جنہیں تیار کیا گیا ہے اور اس سے رجحان کی ڈھیل وضاحت کی ضرورت پیش آتی ہے۔ نوٹ کریں کہ اے این ایس آئی ایس کیو ایل پی 3 کے انگریزی اصطلاحات صرف پیش گوئیوں (دائرہ کار) میں داخل کرنے سے منع کرتا ہے ، لیکن پی 3 اوپر ٹیپلوں کی کسی بھی تحریری (داخل ، تازہ کاری ، حذف) پر مکمل طور پر پابندی عائد کرتا ہے جو پیش گوئی کو مطمئن کرنے والے ٹیپل سیٹ کو پڑھنے کے بعد پیش کش کو پورا کرتا ہے۔

اس مضمون میں بعد میں کثیرالقدر تاریخ کے تصور (ایم وی ہسٹری برائے مختصر ، ملاحظہ کریں [BHG] ، باب 5) پر تبادلہ خیال کیا گیا ہے۔ ابھی تفصیل سے بیان کرنے کی ضرورت نہیں ، ایک ہی وقت میں ملٹی ورژن سسٹم میں ڈیٹا آئٹمز کے متعدد ورژن موجود ہوسکتے ہیں۔ کسی بھی پڑھنے کی کارروائی کو واضح طور پر واضح کرنا ہوگا کہ کون سا ورژن پڑھنا ہے۔ معیاری لاک شیڈولر کی بنیاد پر ملٹی ورژن سسٹم اور سنگل ورژن سسٹم (ایس وی ہسٹری) کے ساتھ اے این ایس آئی کی تنہائی کی سطح کی تعریفوں کو جوڑنے کی کوشش کی گئی ہے۔ اس کے باوجود ، P1 ، P2 ، اور P3 مظاہر کے الفاظ الفاظ ایک ہی ورژن کی تاریخ تک ہی محدود ہیں۔ ہم ان کی وضاحت اگلے حصے میں کرتے ہیں۔

اے این ایس آئی ایس کیو ایل نے جدول 1 میں میٹرکس کے ذریعے تنہائی کے چار درجات کی وضاحت کی ہے۔ ہر تنہائی کی سطح ایک ایسے مظاہر کی خصوصیت ہے جس سے لین دین میں حرام (ڈھیلے یا سختی سے ترجمانی) کی جاتی ہے۔ تاہم ، اے این ایس آئی ایس کیو ایل کی تصریح قطعی طور پر ان مظاہر کی بنیاد پر الگ تھلگ تنہائی کی سطح کی وضاحت نہیں کرتی ہے۔ 'اے این ایس آئی' میں 28.QL28 'ایس کیو ایل ٹرانزیکشن' میں کہا گیا ہے کہ سیریلائج ایبل تنہائی کی سطح کو 'اتفاق رائے سے مکمل طور پر سیریلائز قابل عملدرآمد' فراہم کرنا چاہئے۔ اس اضافی حالت کے مقابلے میں ، اس جدول سے ایک عام غلط فہمی پیدا ہوتی ہے کہ تین واقعات کو سیرائلائز ہونے کی اجازت نہیں ہے۔ جدول 1 میں ان تینوں مظاہر کی تاریخ کو غیر معمولی سیرئزیبل کہلانے کی اجازت نہیں ہے۔ (مترجم کی نوٹ: غیرمعمولی سیریلائزیشن کا مطلب حرام مستثنیات (یا مظاہر) پر مبنی سیریلائزیشن ہے ، نہیں 'اصلیت' کو سیریلائز کیا جاسکتا ہے)۔

چونکہ تاریخ میں ڈھیلی تشریح سخت تشریح سے کہیں زیادہ ہے ، اور تنہائی کی سطح کی وضاحت اس رجحان سے ہوتی ہے کہ وہ تجربہ کرنے سے منع کرتے ہیں۔ سیکشن 3 میں ڈھیلے وضاحتوں سے متعلق ہماری بحث کا مطلب یہ ہے کہ ہم زیادہ پابند تنہائی کی سطحوں پر تبادلہ خیال کرنا چاہتے ہیں (مزید تاریخ پر پابندی ہوگی)۔ تاہم ، دفعہ 3 سے پتہ چلتا ہے کہ پی 1 ، پی 2 اور پی 3 کی ڈھیل ترجمانی کے باوجود بھی ، یہ مظاہر ممنوع ہے اور حقیقی سیریلائزیشن کی کوئی ضمانت نہیں ہے۔ P3 کو اے این ایس آئی میں ہٹانا اور صرف 4.28 استعمال کرکے اے این ایس آئی سیریلائزیشن کی وضاحت کرنا آسان ہے۔ براہ کرم نوٹ کریں کہ ٹیبل 1 حتمی نتیجہ نہیں ہے اس کی جگہ ٹیبل 3 لے جائے گی۔

2.3 لاک

زیادہ تر ایس کیو ایل مصنوعات لاک پر مبنی تنہائی کا استعمال کرتی ہیں۔ لہذا ، کچھ پریشانیوں کے باوجود ، ANSI SQL تنہائی کی سطح کو لاک پہلو سے نمایاں کرنا موثر ہے۔

پڑھنے / تحریر کے مطابق جو ٹرانزیکشن لاک بیس شیڈولنگ کے تحت انجام دیتا ہے وہ ڈیٹا آئٹم یا ڈیٹا آئٹمز کے سیٹ پر پڑھنے (شیئر) اور لکھنے (خصوصی) لاک کی درخواست کرتا ہے۔ اس معاملے میں جہاں دو مختلف لین دین کے تحت تالے ایک ہی ڈیٹا آئٹم کے مساوی ہوتے ہیں ، تنازعات اس وقت پیدا ہوتے ہیں جب ان میں سے کم از کم ایک تحریری تالا ہو۔

ایک پڑھا ہوا (یا تحریری) پیشکش لاک (اعداد و شمار کے آئٹموں کے دیئے گئے سیٹ کے تحت) جس کا اطلاق مطمئن ہوتا ہے۔ یہ ایک لامحدود سیٹ ہوسکتا ہے کیونکہ اس میں ڈیٹا موجود ہے جو ڈیٹا بیس میں موجود ہے اور تمام پریت اعداد و شمار والے آئٹمز جو اس وقت ڈیٹا بیس میں موجود نہیں ہیں (اگر وہ داخل کردیئے گئے ہیں ، یا مطمئن کرنے کیلئے موجودہ ڈیٹا آئٹم کو اپ ڈیٹ کیا گیا ہے)۔ ایس کیو ایل اصطلاحات میں ، ایک پیشکیلا لاک ان تمام ڈیٹا آئٹمز کا احاطہ کرتا ہے جو پیش گوئی کو مطمئن کرتے ہیں اور وہ تمام ڈیٹا آئٹمز جو انسٹرٹ ، اپ ڈیٹ ، یا حذف کے بعد پیش گوئی کو پورا کرتے ہیں۔ اگر مختلف لین دین کے دو پیش گو تالے تحریری تالے ہیں اور دونوں تالے ایک ہی (ممکنہ طور پر پریت) کے ڈیٹا آئٹم کا احاطہ کرتے ہیں تو ، دو پیش کش تالے میں تصادم ہوتا ہے۔ ڈیٹا آئٹم لاک (ریکارڈ لاک) ایک پیشکیلا لاک ہوتا ہے جس میں ایک پریٹیکٹ ایک خاص ریکارڈ کی وضاحت کرتا ہے۔

کسی ٹرانزیکشن میں اچھی طرح سے تحریریں (پڑھیں) ہوتی ہیں جن میں ہر ڈیٹا آئٹم کی ضرورت ہوتی ہے یا ڈیٹا آئٹم کو لکھنے سے پہلے (لکھنے پڑھنے پر تالے کی درخواست کرنے کی پیش گوئی کی جاتی ہے) یا ڈیٹا آئٹم سیٹ کی وضاحت کی جاتی ہے (مترجم کی نوٹ: یہ کہنا ہے ، جب پڑھنے (تحریری) ، مخصوص اعداد و شمار کے سیٹ پر ایک اور صرف ایک پڑھنے (لکھنا) لاک ہے۔ لین دین اچھی طرح سے تشکیل پایا جاتا ہے ، اس لئے ضروری ہے کہ لین دین کو پڑھنے لکھنے کی اچھی شکلیں ہوں۔ دو فیز لکھتے (پڑھیں) کے ساتھ لین دین میں اس بات کی ضرورت ہوتی ہے کہ لکھنے (پڑھیں) لاک جاری ہونے کے بعد ڈیٹا آئٹم پر کوئی نیا لکھنا (پڑھیں) تالے مرتب نہیں کیے جاتے ہیں۔ ٹرانزیکشن دو مراحل کی حیثیت رکھتا ہے ، اس لئے ٹرانزیکشن کی ضرورت ہوتی ہے کہ وہ کچھ تالے جاری کرنے کے بعد کسی نئے تالے (پڑھیں یا لکھیں لکھیں) کی درخواست نہ کریں۔

لمبے تالے کے ل the تالے کا ارتکاب یا اسقاط حمل کرنا ہوتا ہے۔ ورنہ ، یہ ایک مختصر تالا ہے۔ دراصل ، آپریشن مکمل ہونے کے فورا بعد شارٹ لاکس جاری کردیئے جاتے ہیں۔

اگر ایک ٹرانزیکشن میں ایک لاک ہوتا ہے اور دوسرا لین دین متضاد لاک کی درخواست کرتا ہے تو ، جب تک پچھلے ٹرانزیکشن کا متضاد لاک جاری نہیں ہوتا تب تک نئی لاک کی درخواست منظور نہیں کی جاتی ہے۔

سیریلائزیشن کا بنیادی نظریہ اچھی طرح سے تشکیل پانے والے دو فیز لاکنگ کی ایک اچھی شکل ہے جو سیریلائزیشن کی ضمانت دیتا ہے۔ دو مرحلے کے تالے کی ہر تاریخ کچھ سیریل ہسٹری کے مترادف ہے۔ اس کے برعکس ، اگر لین دین اچھی شکل یا دو مراحل نہیں ہے ، تو (انحطاط کے معاملے کے علاوہ) غیر سیرائزیبل پھانسی کی ایک تاریخ [EGLT] واقع ہوسکتی ہے۔ [GLPT] کاغذ چار ڈگری مستقل مزاجی کی وضاحت کرتا ہے ، تالے ، انحصار اور استثنا پر مبنی نمائندگیوں کے مساوات کو واضح کرنے کی کوشش کرتا ہے۔ استثناء کی تعریف (تعریف 1 دیکھیں) بہت مبہم ہے۔ مصنف پر اپنی تعریف کے لئے تنقید کا سلسلہ جاری ہے (یہ بھی [GR] دیکھیں)۔ تاریخ کی محض ریاضی کی زیادہ تعریف اور انحصار گراف یا تالے نے وقت کے امتحان کو برداشت کیا ہے۔

ٹیبل 2 لاک تعریف پر مبنی مستقل مزاجی اور تنہائی کی سطح

مستقل مزاجی کی سطح = تنہائی کی سطح

ڈیٹا آئٹمز اور پیشن گوئیوں پر تالے پڑھیں

ڈیٹا آئٹمز اور پیشن گوئیوں پر تالے لکھیں

ڈگری 0

کوئی ضرورت نہیں

لکھنے کی عمدہ شکل

ڈگری 1 = لاک پڑھیں غیر مشمولات

کوئی ضرورت نہیں

لکھنے کی اچھی شکل ، طویل لکھنے والا تالا

ڈگری 2 = تالہ پڑھنا پڑھیں

پڑھنے کی اچھی شکل ، مختصر پڑھنے والا تالا

لکھنے کی اچھی شکل ، طویل لکھنے والا تالا

کرسر استحکام (کرسر استحکام ، سیکشن 4.1 ملاحظہ کریں)

پڑھنے کی اچھی شکل ، کرسر ہولڈنگ ریڈ لاک ، شارٹ پریکیٹ لاک

لکھنے کی اچھی شکل ، طویل لکھنے والا تالا

لاک دوبارہ پڑھیں

اچھ formا فارم پڑھا ، لمبا پڑھنے والا لاک (ڈیٹا آئٹمز کے لئے) ، مختصر پڑھنے والا لاک (پیش گوئی کے ل for)

لکھنے کی اچھی شکل ، طویل لکھنے والا تالا

ڈگری 3 = لاک سیریزلائز (قابل تعی locن لگانا)

پڑھنے کی اچھی شکل ، طویل پڑھنے والا تالا

لکھنے کی اچھی شکل ، طویل لکھنے والا تالا

جدول 2 لاکنگ رینج (ڈیٹا آئٹم یا پیش گوئی) ، وضع (پڑھنے یا لکھنے) ، اور اس کی مدت (مختصر یا لمبا) پر مبنی تنہائی کی متعدد اقسام کی وضاحت کرتا ہے۔ ہم لاک پڑھنے کے لئے تالے کی بنیاد پر تنہائی کی سطح پر قابو پانے ، لاک ریڈ پرعزم ، لاک ریپیٹ ایبل ریڈ ، لاک سیریزلائز ای این ایس آئی ایس کیو ایل تنہائی کی سطح کی ضروریات کو پورا کرنے پر غور کرتے ہیں ، لیکن جیسا کہ دکھایا گیا ہے ، وہ ٹیبل 1 سے بالکل مختلف ہیں لہذا ، اس میں فرق کرنا ضروری ہے تنہائی کی سطح اے این ایس آئی ایس کیو ایل مظاہر پر مبنی تنہائی کی سطح سے تالہ کے ذریعہ بیان کی گئی ہے۔ تمیز کرنے کے ل Table ، ٹیبل 2 میں درجات کو ٹیبل 1 کے 'اے این ایس آئی' کے سابقہ ​​کی بجائے 'لاک' کا لیبل لگایا گیا ہے۔

[جی ایل پی ٹی] نے کچرے کو پڑھنے اور لکھنے کی اجازت دینے کے لئے سطح 0 مستقل مزاجی کی وضاحت کی ہے: صرف ایٹمیٹی کو ہیرا پھیری کرنے کی ضرورت ہے۔ 1 ، 2 ، اور 3 ڈگری غیر مقلد پڑھنے کو لاک کرنے کے مترادف ہے ، لاک ریڈ کمٹمنٹ ، اور لاک سیریلائزبل۔ کوئی تنہائی اور تالا تکرار پڑھنے والا میچ نہیں ہے۔

تاریخ اور آئی بی ایم نے سیریلائج ایبل یا لاک ایبل سیریلائبل کی نمائندگی کرنے کے لئے اصل میں 'ریپیٹ ایبل ریڈز' [DAT، DB2] نام استعمال کیا۔ یہ [جی ایل پی ٹی] اصطلاح 'الگ تھلگ 3' کے مقابلے میں زیادہ سمجھنے والا نام معلوم ہوتا ہے ، حالانکہ وہ ایک جیسے ہیں۔ اے این ایس آئی ایس کیو ایل کے معنی دہرانے پڑھنے والے پڑھنے کی تاریخ کی اصل تعریف سے مختلف ہیں ، جو ہمارے نزدیک بدقسمتی ہے۔ فینومینا P3 کو اے این ایس آئی ایس کیو ایل ریپیٹ ایبل ریڈ تنہائی کی سطح کے لئے نہیں سمجھا جاتا ہے ، لیکن جیسا کہ پی 3 کی تعریف سے دیکھا جاسکتا ہے ، پڑھنا تکرار نہیں ہے! (مترجم کا نوٹ: P3 'ریپیٹ ایبل ریڈ' چینی معنی کی خلاف ورزی کرتا ہے) ہم پھر بھی اے این ایس آئی کی تعریف کے مطابق ٹیبل 2 میں 'لاک ریپیٹ ایبل ریڈ' اصطلاح کا غلط استعمال کرتے ہیں۔ اسی طرح ، تاریخ 'کرسر استحکام' کی اصطلاح کو زیادہ فہم ڈگری 2 الگ تھلگ نام کے طور پر استعمال کرتی ہے ، جس سے کھوئے ہوئے کرسر اپڈیٹس کے خلاف تحفظ میں اضافہ ہوتا ہے ، جیسا کہ ذیل میں سیکشن 4.1 میں بیان کیا گیا ہے۔

تعریف: اگر L2 معیاری کی مطابقت پذیر تمام غیر سیرائلیئسٹ ہسٹری L1 کو مطمئن کرتی ہے ، اور کم سے کم ایک غیر سیرئلیز قابل تاریخ L1 پر واقع ہوتی ہے ، لیکن L2 پر نہیں ، تنہائی کی سطح L1 تنہائی کی سطح L2 (کمزور) یا L2 سے کمزور ہے۔ L1 سے زیادہ مضبوط اور L1 کے طور پر ظاہر کیا جاتا ہے

تنہائی کی سطح کا موازنہ کرتے وقت ، ہم ان کو صرف غیر سیرائزیشن کی تاریخ میں ممتاز کرتے ہیں ، جیسے کہ کچھ تاریخ ایک سطح پر واقع ہوسکتی ہے اور کسی دوسری سطح پر نہیں۔ دو الگ تھلگ کی سطحیں سیریلائزیشن کی تاریخ میں بھی مختلف ہوسکتی ہیں جن کو ان کو ظاہر ہونے کی اجازت ہے۔ اگرچہ یہ بات مشہور ہے کہ لاک شیڈولر ہر ممکنہ سیریلائجبل ہسٹری کو قبول نہیں کرتا ہے ، لیکن ہم سمجھتے ہیں کہ تالے سیریلائزڈ == سیریلائزئبل ہوسکتے ہیں۔ یہ تنہائی کی سطح غیر عملی ہوسکتی ہے کیونکہ یہ بہت ساری تاریخ سازی کی اجازت نہیں دیتی ہے ، لیکن ہم یہاں ان پر غور نہیں کرتے ہیں۔

نتائج کچھ اس طرح ہیں ، یہ تعریفیں اور کچھ آسان مثالوں سے پتہ چلتا ہے کہ

نتیجہ 1 : لاک پڑھیں

اگلے حصے میں ، ہم اے این ایس آئی اور لاک پر مبنی تنہائی کی سطح کی تعریفوں کا موازنہ کرنے پر توجہ دیں گے۔

3. اے این ایس آئی ایس کیو ایل تنہائی کی سطح کا تجزیہ کریں

ایک اچھے نتیجے کے ساتھ شروع کرتے ہوئے ، تالا تنہائی کی سطح ANSI SQL کی ضروریات کو پورا کرتی ہے۔

نتیجہ 2 : ٹیبل 2 کا لاک پروٹوکول ایک تالا تنہائی کی سطح کی وضاحت کرتا ہے جو کم سے کم اتنا ہی مضبوط ہو جتنا پکسلین پر مبنی تنہائی سطح جدول 1 سے مماثل ہے۔ [OOBBGM] کا ثبوت دیکھیں۔

لہذا ، لاک تنہائی کی سطح کم سے کم اسی نام کی اے این ایس آئی سطح کی تنہائی کے برابر ہے۔ کیا وہ زیادہ تنہائی ہیں؟ اس کا جواب ہاں میں ہے ، یہاں تک کہ نچلی سطح پر بھی۔ لاک ریڈز کو لکھنے کے طویل تالے فراہم کرنے کے لئے پیش نہیں کیا جاتا ہے اس سے بچنے کے لئے جسے ہم 'گندا لکھتے ہیں' ، لیکن اے این ایس آئی ایس کیو ایل اس کی اے این ایس آئی سیرئلائز ایبل پر مبنی غیر معمولی رویے کو مسترد نہیں کرتا ہے۔

P0 (گندا لکھنا): ٹرانزیکشن T1 ڈیٹا آئٹم میں ترمیم کرتا ہے۔ ایک اور ٹرانزیکشن T2 پھر ڈیٹا آئٹم میں مزید ترمیم کرتا ہے اس سے پہلے کہ T1 کوئی COMMIT یا ROLLBACK کرے۔ اگر T1 یا T2 پھر ROLLBACK انجام دیتا ہے تو ، یہ واضح نہیں ہے کہ اعداد و شمار کی صحیح قدر کیا ہونی چاہئے۔ ڈھیل وضاحت یہ ہے:

P0: w1 [x] ... w2 [x] ... ((c1 یا a1) اور (c2 یا a2) کسی بھی ترتیب میں)

ایک وجہ جو گندا اچھا نہیں ہے وہ یہ ہے کہ یہ ڈیٹا بیس مستقل مزاجی کی خلاف ورزی کرسکتا ہے۔ فرض کیجئے کہ x اور y کے مابین کوئی رکاوٹ ہے (جیسے ، x = y) ، اور اگر تنہا چلتا ہے تو ، پھر T1 اور T2 دونوں رکاوٹ کی مستقل مزاجی کو برقرار رکھتے ہیں۔ تاہم ، اگر دو لین دین X اور y کو مختلف ترتیب سے لکھتے ہیں ، تو پھر اس رکاوٹ کی آسانی سے خلاف ورزی ہوتی ہے ، جو صرف اس وقت ہوتا ہے جب گندی تحریر ہو۔ مثال کے طور پر ، اگر تاریخ W1 [x] w2 [x] w2 [y] c2 w1 [y] c1 ہے تو ، T1 سے y اور T2 سے X کے درمیان ترمیم 'بقا' ہے۔ اگر T1 x اور y دونوں میں 1 لکھتا ہے اور T2 2 لکھتا ہے تو ، اس کا نتیجہ x = 2 ، y = 1 ہوگا۔ x = y رکاوٹ کی خلاف ورزی ہوگی۔

جیسا کہ [جی ایل پی ٹی ، بی ایچ جی] اور کہیں اور میں بیان ہوا ہے ، پی 0 کی اہمیت کی ایک اور وجہ خودکار ٹرانزیکشن رول بیک ہے۔ P0 تحفظ کے بغیر ، نظام شبیہہ کو بحال کرکے اپ ڈیٹ کو کالعدم نہیں کرسکتا ہے۔ تاریخ پر غور کریں: w1 [x] w2 [x] a1۔ آپ x کی سابقہ ​​تصویر کو بحال کرکے W1 [x] کو کالعدم نہیں کرنا چاہتے ہیں ، کیونکہ اس سے W2 کی تازہ کاری ادلیکھ جائے گی۔ تاہم ، اگر آپ اس کی پری امیج کو بحال نہیں کرتے ہیں اور ٹرانزیکشن 2 کو بعد میں ختم کردیا جاتا ہے تو ، آپ اس کی پری امیج کو بحال کرکے W2 [x] کو کالعدم نہیں کرسکتے ہیں! یہی وجہ ہے کہ یہاں تک کہ کمزور ترین لاک سسٹم میں لکھنے کا ایک طویل تالا ہے۔ بصورت دیگر ، ان کی بازیابی کا نظام غلط ہو گا۔

نتیجہ 3 : تمام الگ تھلگ سطحوں کے لئے کم سے کم P0 کی ضرورت کے لئے اے این ایس آئی ایس کیو ایل تنہائی میں ترمیم کی جانی چاہئے۔

ہم سمجھتے ہیں کہ اے این ایس آئی کے تینوں مظاہر کی ڈھلائی سے وضاحت کی ضرورت ہے۔ یاد ہے کہ سخت وضاحت یہ ہے:

A1 : w1 [x] ... r2 [x] ... (کسی بھی ترتیب میں a1 اور c2) (گندا پڑھیں)

A2 : r1 [x] ... w2 [x] ... c2 ... r1 [x] ... c1 (مبہم یا غیر مکرر پڑھیں)

A3 : r1 [P] ... w2 [y میں P] ... c2 .... r1 [P] ... c1 (پریت)

مندرجہ بالا جدول 1 ظاہر کرتا ہے کہ پڑھنے میں تنہائی کی تاریخ کو مستثنی A1 سے ممنوع ہے ، اور تنہائی کی تاریخ مستثنیات A1 ​​اور A2 کو غیر فعال کرنے کے لئے بار بار پڑھا جاسکتا ہے ، اور مستثنیات A1 ​​، A2 ، اور A3 کے لئے تاریخ سے الگ تھلگ مستثنیات سیریلائز کیا جا سکتا ہے۔ تاریخی H1 پر غور کریں ، بینک بیلنس لائن x اور y کے مابین $ 40 کی منتقلی:

H1 : r1 [x = 50] w1 [x = 10] r2 [x = 10] r2 [y = 50] C2 r1 [y = 50] w1 [y = 90] c1

H1 سیریلائزیبل نہیں ہے ، جو تجزیہ کا ایک کلاسک متناسب مسئلہ ہے۔ ان میں ، ٹرانزیکشن T1 40 یوآن کو x سے y میں منتقل کرتا ہے ، اور اس کا کل بیلنس 100 ہونا ضروری ہے ، لیکن T2 متضاد حالت کو 60 کے مجموعی توازن کے ساتھ پڑھتا ہے۔ ہسٹری H1 کسی بھی عدم استحکام A1 ، A2 یا A3 کی خلاف ورزی نہیں کرتی ہے۔ A1 کے معاملے میں ، دو لین دین میں سے ایک کو منسوخ کرنا پڑے گا (مترجم کا نوٹ: یعنی بغیر پڑھے ہوئے پڑھیں کے ل one ایک ٹرانزیکشن پڑھنے کی ضرورت ہوتی ہے ، دوسرا لین دین H1 میں ہوتا ہے) A2 کے لئے ڈیٹا آئٹم کے پاس ہوگا اسی ٹرانزیکشن A3 کے ذریعہ دوسری بار پڑھنے کیلئے پیش گوئی کی حد میں قدر کی تبدیلی کی ضرورت ہے۔ ان چیزوں میں سے کوئی بھی H1 میں نہیں ہوگا۔ A1 ، مظاہر P1 کی ڈھیلے وضاحت پر غور کرنا:

P1: w1 [x] ... r2 [x] ... ((c1 یا a1) اور (c2 یا a2) کسی بھی ترتیب میں)

H1 نے P1 کی بظاہر خلاف ورزی کی ہے۔ لہذا ، ہم سمجھتے ہیں کہ اے این ایس آئی تعریف A1 کے بجائے P1 کی وضاحت کرنا ہے ، اور ڈھیلی وضاحت صحیح وضاحت ہے۔

اسی طرح کی ایک دلیل سے پتہ چلتا ہے کہ P2 کو A2 کے بجائے اے این ایس آئی تعریف سمجھا جانا چاہئے۔ تاریخ جو ان دونوں تشریحات میں فرق کرتی ہے وہ ہے:

H2 : r1 [x = 50] r2 [x = 50] w2 [x = 10] r2 [y = 50] w2 [y = 90] c2 r1 [y = 90]

H2 سیریلائزیج نہیں ہے - یہ ایک اور کلاسیکی تضاد کا تجزیہ ہے ، جہاں T2 کا مجموعی توازن 140 ہے۔ اس بار ، اس لین دین میں گندا (یعنی غیر مہذب) ڈیٹا نہیں پڑھا۔ لہذا P1 مطمئن ہے۔ نیز ، کوئی ڈیٹا آئٹم دو بار نہیں پڑھا جاتا ہے ، اور پیش گوئی کی حد میں کوئی بھی ڈیٹا نہیں بدلا جاتا ہے۔ H2 میں مسئلہ یہ ہے کہ جب T1 y پڑھتا ہے تو ، x کی قدر ختم ہوجاتی ہے۔ اگر T2 دوبارہ ایکس پڑھتا ہے تو ، اسے تبدیل کردیا جائے گا لیکن چونکہ T2 دو بار نہیں پڑھے گا ، لہذا A2 لاگو نہیں ہوتا ہے۔ A2 کے بجائے P2 کا استعمال ، ڈھیلے وضاحت اس مسئلے کو حل کرتی ہے۔

P2: r1 [x] ... w2 [x] ... ((c1 یا a1) اور (c2 یا a2) کوئی بھی آرڈر)

جب ڈبلیو 2 [x = 20] واقع ہوتا ہے تو ، H2 اب درست نہیں ہوگا کیونکہ اس میں r1 [x = 50] شامل ہیں۔ آخر میں ، A3 اور تاریخ H3 پر غور کریں:

A3 : r1 [P] ... w2 [y میں P] ... c2 ... r1 [P] ... c1 (پریت)

H3: r1 [P] w2 [داخل کریں Y سے P] r2 [z] w2 [z] c2 r1 [z] c1

یہاں ٹی ون ملازمین کی فہرست تلاش کرنے کے لئے عملدرآمد کرتا ہے۔ پھر ٹی 2 نئے ملازم کی اندراج انجام دیتا ہے اور پھر کمپنی میں ملازمین کی تعداد زیڈ کو اپ ڈیٹ کرتا ہے۔ اس کے بعد ، ٹی ون نے ملازمین کی تعداد کو پڑھ کر فرق دیکھا۔ واضح طور پر یہ تاریخ سیرئلائز نہیں کی جاسکتی ہے ، لیکن چونکہ پیش گوئی کی حد تک دو بار رسائی نہیں ہوئی ہے ، لہذا اسے A3 کے ذریعہ اجازت دی گئی ہے۔ ایک بار پھر ، P3 کی ڈھیلی وضاحت اس مسئلے کو حل کرتی ہے۔

P3: r1 [P] ... w2 [y میں P] ... ((c1 یا a1) اور (c2 یا a2) کوئی بھی آرڈر)

اگر P3 غیر فعال ہے تو ، تاریخ H3 غلط ہے۔ ظاہر ہے یہ اے این ایس آئی کا ارادہ ہے۔ مندرجہ بالا بحث مندرجہ ذیل نتائج کو ثابت کرنے میں معاون ہے۔

نتیجہ 4 : A1 ، A2 اور A3 کی سخت تشریح میں غیر متوقع کوتاہیاں ہیں۔ صحیح وضاحت ڈھیلی ہے۔ ہمارا ماننا ہے کہ اے این ایس آئی کا مقصد P1 ، P2 اور P3 کی وضاحت کرنا ہے۔

نتیجہ 5 : ANSI SQL تنہائی کا مظہر نامکمل ہے۔ ابھی بھی کچھ مستثنیات ہیں جو ہوسکتی ہیں۔ لاک کی تعریف کو مکمل کرنے کے لئے ایک نئے مظاہر کی وضاحت کی جانی چاہئے۔ اس کے علاوہ ، P3 کی دوبارہ وضاحت کی جانی چاہئے۔ درج ذیل تعریفوں میں ، ہم ایسی کارروائیوں کو ہٹاتے ہیں جو تاریخی پابندیوں (c2 یا a2) کو نافذ نہیں کرتے ہیں۔

پی 0 : w1 [x] ... w2 [x] ... (c1 یا a1) (گندا لکھنا)

پی 1 : w1 [x] ... r2 [x] ... (c1 یا a1) (گندا پڑھیں)

پی 2 : r1 [x] ... w2 [x] ... (c1 یا a1) (مبہم یا ناقابل تلافی پڑھیں)

پی 3 : r1 [P] ... w2 [y میں P] ... (c1 یا a1) (پریت)

یہ نوٹ کرنا چاہئے کہ اے این ایس آئی ایس کیو ایل پی 3 صرف پیش گوئیوں کے اندراج (اور اپ ڈیٹ) پر پابندی عائد کرتا ہے ، جبکہ پی 3 کی مذکورہ بالا تعریف کسی بھی تحریر کو روکتی ہے جو پیش گوئی کو پڑھنے سے مطمئن کرتا ہے - لکھتے اندراج ، تازہ کاری یا حذف ہوسکتے ہیں۔

ان مظاہروں کے لئے مجوزہ اے این ایس آئی کی تنہائی کی سطح کی تعریفیں جدول 3 میں دی گئی ہیں۔

کسی ایک ورژن کی تاریخ کے ل conc ، یہ نتیجہ اخذ کرنا آسان ہے کہ P0 ، P1 ، P2 ، اور P3 مظاہر مظاہر کے 'جعلی' لاک ورژن ہیں۔ مثال کے طور پر ، پہلے لین دین کے ڈیٹا آئٹم کو لکھنے کے بعد P0 کو غیر فعال کرنے سے دوسرے ٹرانزیکشن کی تحریر کو خارج کردیا جاتا ہے ، جو ڈیٹا آئٹم (اور پیش گوئی) پر طویل لکھنے کے تالے کے انعقاد کے مترادف ہے۔ اتنا گندا لکھنا ناممکن ہے۔ اسی طرح ، P1 کو غیر فعال کرنا ڈیٹا آئٹم کی اچھی شکل کو پڑھنے کے مترادف ہے۔ ڈی 2 آئٹمز کے علاوہ طویل پڑھنے والے تالے کی نشاندہی کرنے کے لئے P2 ممنوع ہے۔ آخر میں ، P3 کو غیر فعال کرنے کا مطلب ہے ایک طویل پیش گوئ پڑھنے والا لاک تھامنا۔ لہذا ، ان مظاہروں کے ذریعہ بیان کردہ ٹیبل 3 کی تنہائی کی سطح ٹیبل 2 کی لاک تنہائی کی سطح کی طرح ہی سلوک فراہم کرتی ہے۔

نتیجہ 6 : ٹیبل 2 اور ٹیبل 3 کی لاک تنہائی کی سطح مظاہر کی تعریف پر مبنی ہے۔ دوسرے الفاظ میں ، P0 ، P1 ، P2 ، اور P3 تالا ورژن الگ تھلگ کی سطح کے لئے نئی تعریفیں ہیں۔

اگلا ، ہم جدول 3 میں درج تنہائی کی سطحوں کا حوالہ دیں گے جو ٹیبل 3 میں موجود ناموں کے مطابق ہیں ، جو ٹیبل 2 میں ان تنہائی کی سطحوں کے بند ورژن کے مترادف ہیں ، جب ہم اے این ایس آئی کو غیر منطق پڑھیں ، انسی ریڈ کمیٹی ، انسی ریپیٹیبل ریڈ کا حوالہ دیتے ہیں ، اور غیر یقینی طور پر سیرئلائزڈ ، ہم ٹیبل 1 کی ANSI تعریف کا حوالہ دیتے ہیں (مکمل نہیں ہے کیونکہ P0 شامل نہیں ہے)۔

اگلے حصے سے پتہ چلتا ہے کہ بہت سارے تجارتی طور پر دستیاب تنہائی کے نفاذ سے تنہائی کی سطح مہیا ہوتی ہے جو پڑھنے کے عہد اور تکرار کے قابل پڑھنے کے درمیان پڑتی ہے۔ ایک معنی خیز تنہائی کی سطح حاصل کرنے کے لئے جو ان نفاذ کو ممتاز بناتا ہے ، ہم P0 اور P1 کی بنیاد رکھتے ہیں اور پھر ایک نیا رجحان شامل کرتے ہیں۔

4. تنہائی کی دوسری اقسام

4.1 کرسر استحکام

کرسر استحکام تازہ کاریوں کے نقصان کو روکنے کے لئے ڈیزائن کیا گیا ہے۔

P4 (کھوئے ہوئے تازہ کاری): جب ٹرانزیکشن T1 ڈیٹا آئٹم کو پڑھتا ہے ، تب T2 ڈیٹا آئٹم کو اپ ڈیٹ کرتا ہے (ممکنہ طور پر پچھلے پڑھنے کی بنیاد پر) ، پھر T1 (اس کے پہلے پڑھنے والے قدر کی بنیاد پر) ڈیٹا آئٹم کو اپ ڈیٹ کرتا ہے اور کام کرتا ہے ، لاپتہ اپ ڈیٹ کی رعایت واقع ہو گا. تاریخ کے لحاظ سے ، یہ ہے:

پی 4 : r1 [x] ... w2 [x] ... w1 [x] ... c1 (کھو تازہ کاری)

(مترجم کا نوٹ: نوٹ کریں کہ P4 P0 گندے تحریر اور P1 گندے پڑھنے پر مبنی ہے۔ لاک تنہائی کے نقطہ نظر سے ، اس میں صرف مختصر پڑھنے والا تالا اور طویل لکھنے والا تالا ہوتا ہے۔ اگر یہ تالا تک نہیں پہنچتا ہے تو ، یہ بار بار P2 پڑھ سکتا ہے (کہ ہے ، اس میں زیادہ دیر تک نہیں ہے)۔ پڑھیں لاک))

جیسا کہ تاریخ H4 سے پتہ چلتا ہے ، مسئلہ یہ ہے کہ یہاں تک کہ اگر T2 کا ارتکاب ہوتا ہے تو ، T2 کی تازہ کاری ختم ہوجائے گی۔

H4 : r1 [x = 100] r2 [x = 100] w2 [x = 120] c2 ڈبلیو 1 [x = 130] c1

X کی حتمی قیمت X + 30 = 130 ہے جو T1 کے ذریعہ تحریری ہے۔ P4 کم از کم پڑھنے کے لئے کم و بیش تنہائی کی سطح پر ہے کیونکہ اگر P0 غیر فعال ہے تو H4 ہونے کی اجازت ہے (اعداد و شمار جس میں ٹرانزیکشن پہلی تحریری کارروائی انجام دیتی ہے وہ دوسری بار کسی اور ٹرانزیکشن کے ذریعہ دوسری بار لکھی جاتی ہے) یا P1 (جو ارتکاب سے پہلے پڑھا جاتا ہے) مصروف عمل ہے). یقینا ، P2 پر پابندی لگانے سے P4 کو بھی خارج کردیا جاتا ہے کیونکہ P2 R1 [x] ، w2 [x] ، (c1 یا a1) ہے ، جس میں P4 بھی شامل ہے۔ لہذا ، P4 کو تنہائی کی سطح کے طور پر استعمال کرنے کے لئے استعمال کی جاسکتی ہے تاکہ پڑھنے کے عزم اور دوبارہ پڑھنے لائق قوتوں میں فرق کیا جاسکے۔

کرسر ریڈ کمٹڈ تنہائی کی سطح کے تحت ایس کیو ایل کرسروں کے لئے لاک سلوک کو مستقل طور پر بڑھا دیتا ہے۔ اس نے کرسر (جیسے کرسر کو پڑھنے کے معنی) پر آتے ہوئے آپریشن آر سی کی تجویز پیش کی ہے۔ آر سی کو کرسر کے موجودہ ڈیٹا آئٹم پر طویل پڑھنے والے لاک کی ضرورت ہوتی ہے جب تک کہ کرسر منتقل یا بند نہ ہوجائے (ممکنہ طور پر وعدے کے ذریعہ بند کردیا گیا ہو)۔ بلاشبہ ، کرسر پر لانے والے لین دین قطار (ڈبلیو سی) کو اپ ڈیٹ کرسکتا ہے ، اور یہاں تک کہ اگر کرسر بعد کے بازیافت کے اوپر بڑھتا ہے تو ، جب تک کہ لین دین کا ارتکاب نہیں ہوتا اس وقت تک لکھنے کا لاک صف میں موجود رہے گا۔ Rc1 [x] اور بعد میں wc1 [x] شامل W2 کو خارج کریں [x]۔ لہذا ، کرسر پر صورتحال کے ل P ، فینوومینا پی 4 سی کا رجحان تجویز کیا گیا ہے۔

پی 4 سی : rc1 [x] ... w2 [x] ... w1 [x] ... c1 (کھو تازہ کاری)

نتیجہ 7 : جمع کرائیں پڑھیں

کرسر کے ذریعہ پڑھی جانے والی قطار میں تازہ کاریوں کے نقصان کو روکنے کے لئے ایس کیو ایل سسٹم کے ذریعہ کرسر استحکام وسیع پیمانے پر نافذ کیا جاتا ہے۔ کچھ سسٹم میں ریڈنگ جمع کرائی گئی ہے ، اور حقیقت میں صرف مضبوط کرسر مستحکم ہیں۔ اے این ایس آئی کا معیار اس کی اجازت دیتا ہے۔

کسی ڈیٹا آئٹم پر کرسر رکھنے کی تکنیک کو اس کی اہمیت کو مستحکم رکھنے کے لئے متعدد اعداد و شمار کے آئٹمز کے لئے ایک سے زیادہ کرسر استعمال کرنے کی قیمت پر استعمال کیا جاسکتا ہے۔ لہذا ، پروگرامر ڈیٹا آئٹمز کی مقررہ تعداد کی ایک چھوٹی سی تعداد تک رسائی حاصل کرنے کے ل the پڑھائی سے وابستہ تنہائی کو مقفل کرنے کے ل stability رسائی استحکام کو ایڈجسٹ کرسکتا ہے۔ تاہم ، یہ طریقہ تکلیف دہ ہے اور عالمگیر نہیں۔ لہذا ، ہمیشہ P4 کی تاریخ موجود ہے (یقینا زیادہ عام P2 کے لئے) رجحان ، جو کرسر کی مستحکم تنہائی کی سطح پر ہے۔

4.2 اسنیپ شاٹ تنہائی (ایس آئی)

سنیپ شاٹ تنہائی کے تحت پائے جانے والے لین دین سودے کی شروعات کے بعد سے ہی (کمٹڈ) ڈیٹا کے اسنیپ شاٹ کے اعداد و شمار کو ہمیشہ پڑھتا ہے۔ لین دین کے آغاز پر حاصل کردہ ٹائم اسٹیمپ کو اس کا آغاز ٹائم اسٹیمپ (اسٹارٹ ٹائم اسٹیمپ) کہا جاتا ہے۔ یہ ٹائم اسٹیمپ لین دین کے پہلے پڑھنے سے پہلے کسی بھی وقت ہوسکتا ہے۔ جب سنیپ شاٹ تنہائی میں لین دین چلتا ہے ، جب تک کہ اس کے شروع ہونے والے ٹائم اسٹیمپ کے مطابق اسنیپ شاٹ ڈیٹا کو برقرار رکھا جاسکے ، پڑھنے کو مسدود نہیں کیا جائے گا۔ اس سنیپ شاٹ میں ٹرانزیکشن کے لکھنے (اپ ڈیٹ ، داخل اور ڈیٹ) کی بھی جھلک ہوگی ، اور اگر لین دین دوسری مرتبہ ڈیٹا تک رسائی حاصل کرتا ہے (یعنی پڑھتا ہے یا اپ ڈیٹ ہوتا ہے) تو اسے دوبارہ پڑھا جاسکتا ہے۔ ٹرانزیکشن اسٹارٹ اسٹیمپ کے بعد دوسرے لین دین کی تازہ کاری اس لین دین کے لئے پوشیدہ ہے۔

اسنیپ شاٹ تنہائی ایک ملٹیروژن کنکورન્સી کنٹرول (ایم وی سی سی) ہے۔ اس میں [بی ایچ جی] میں بیان کردہ ملٹیرژن مرکب طریقہ کو بڑھایا گیا ہے۔ یہ صرف پڑھنے کے لین دین کے ذریعے اسنیپ شاٹ کو پڑھنے کی اجازت دیتا ہے۔

جب ٹرانزیکشن T1 کمٹمنٹ کے ل ready تیار ہے ، تو اسے کمٹ ٹائم اسٹیمپ (کمٹ ٹائم اسٹیمپ) ملے گا جو موجودہ ٹائم اسٹیمپ سے کہیں زیادہ ہے۔ جب دوسرے ٹرانزیکشن T2 کے ذریعہ پیش کردہ ڈیٹا کا کمٹ ٹائم T1 ٹرانزیکشن [اسٹارٹ-ٹائم اسٹیمپ ، کمٹ ٹائم اسٹیمپ] کے وقفہ میں ہوتا ہے ، تو صرف T1 ، T2 ڈیٹا کو اوورپلیپ نہیں ہوتا ہے ، اور ٹرانزیکشن کامیابی کے ساتھ پیش کیا جاتا ہے۔ بصورت دیگر ، T1 کو ختم کردیا جائے گا۔ اس خصوصیت کو اپ ڈیٹس کے نقصان (P4) کو روکنے کے لئے فرسٹ کمٹٹر ونس کہا جاتا ہے۔ جب ٹی 1 کا ارتکاب ہوتا ہے تو ، اس کی تبدیلیاں ان تمام لین دین کے لئے مرئی ہوتی ہیں جو T1 سے زیادہ ٹائم اسٹیمپ کے ساتھ کمٹ ٹائم اسٹیمپ شروع کرتی ہیں۔

اسنیپ شاٹ تنہائی ایک ملٹی ورژن (ایم وی) طریقہ ہے ، لہذا سنگل ویلیو (ایس وی) کی تاریخ وقت کے ساتھ ساتھ آپریشنز کی ترتیب کی صحیح عکاسی نہیں کرتی ہے۔ کسی بھی وقت ، ہر ڈیٹا آئٹم کے متعدد ورژن ہوسکتے ہیں ، جو فعال اور پرعزم ٹرانزیکشنز کے ذریعہ لکھے گئے ہیں۔ لین دین کے لئے مناسب ورژن ضرور پڑھنا چاہئے۔ سیکشن 3 میں شروع ہونے والی تاریخ H1 پر غور کریں ، جو اس بات کی نشاندہی کرتا ہے کہ P1 سنگل ویلیو عملدرآمد کے لئے ضروری ہے۔ اسنیپ شاٹ تنہائی کے تحت ، آپریشنز کے اسی سلسلے کا نتیجہ کثیرالقم کی تاریخ میں نکلے گا:

H1.SI : r1 [x0 = 50] w1 [x1 = 10] r2 [x0 = 50] r2 [y0 = 50] c2

r1 [y0 = 50] w1 [y1 = 90] c1

(مترجم کا نوٹ: ٹرانزیکشن 1 x0 = 50 پڑھتا ہے ، x1 = 10 لکھتا ہے ، اس وجہ کی وجہ ہے کہ ٹرانزیکشن 2 میں X0 کی قدر پڑھ جاتی ہے کیونکہ ٹرانزیکشن 1 نے ابھی کمٹ ٹائم اسٹیمپ حاصل نہیں کیا ہے اور X1 جمع کرایا ہے ، لہذا ٹرانزیکشن 2 کا آغاز کا وقتی نشان ہونا لازمی ہے۔ ٹرانزیکشن کا ارتکاب کرنے سے پہلے 1. آخر میں کوئی گندا نہیں پڑھا جاتا ہے)

لیکن H1.SI کے پاس ایک ڈیٹا اسٹریم ہے جسے سیریلائز کیا جاسکتا ہے۔ [OOBBGM] میں ، ہم ظاہر کرتے ہیں کہ تمام اسنیپ شاٹ تنہائی کی تاریخ کو ایک قدر والی تاریخ میں نقشہ بنایا جاسکتا ہے جبکہ ڈیٹا فلو انحصار کو محفوظ رکھتے ہوئے (ایم وی تاریخ کو ایس وی تاریخی نقطہ نظر کے مساوی سمجھا جاتا ہے ، اور تبادلوں کا طریقہ [BHG] باب 5 میں ہے) . مثال کے طور پر ، ایم وی ہسٹری H1.SI سیریلائج ایبل ایس وی ہسٹری کا نقشہ بنائے گا:

H1.SI.SV:r1 [x = 50] r1 [y = 50] r2 [x = 50] r2 [y = 50] c2

ڈبلیو 1 [x = 10] ڈبلیو 1 [y = 90] سی 1

ایم وی کی تاریخ کو ایس وی کی تاریخ میں میپنگ کرنا تنہائی درجہ بندی میں اسنیپ شاٹ تنہائی رکھنے کی کلید ہے۔

اسنیپ شاٹ تنہائی سیریلائزیبل نہیں ہے کیونکہ لین دین ایک لمحے اور دوسرے وقت پڑھا جاتا ہے۔ مثال کے طور پر ، ایک ہی قدر کی تاریخ پر غور کریں:

H5 : r1 [x = 50] r1 [y = 50] r2 [x = 50] r2 [y = 50] w1 [y = -40] w2 [x = -40] c1 c2

H5 سیریلائزیبل نہیں ہے (مترجم کی نوٹ: لیکن یہ دیکھا جاسکتا ہے کہ اگر ایس آئی کو پڑھنے اور لکھنے والا ڈیٹا آئٹم سیٹ ایک جیسا ہے ، تو اس کو سیریلائز کیا جاسکتا ہے) ، اور اسنیپ شاٹ تنہائی کے تحت لین دین کی طرح انٹر ٹرانزیکشن ڈیٹا کی روانی ہے (( ٹرانزیکشن پڑھیں ورژن کا کوئی چارہ نہیں ہے)۔ یہاں ہم یہ فرض کرتے ہیں کہ ہر لین دین جو x اور y کے لئے نئی قیمت لکھتا ہے اس میں ایک رکاوٹ ہوتی ہے جس میں x + y> 0 ہوتا ہے ، جبکہ T1 اور T2 دونوں الگ تھلگ ہوتے ہیں ، لہذا رکاوٹ H5 میں نہیں رہ سکتا۔

رکاوٹ کی خلاف ورزی ایک عام اور اہم قسم کی ہم آہنگی کی رعایت ہے۔ انفرادی ڈیٹا بیس متعدد اعداد و شمار کی اشیاء کی رکاوٹوں کو پورا کرتے ہیں (مثال کے طور پر ، چابیاں کی انفرادیت ، حوالہ دارانہ سالمیت ، دو جدولوں میں قطاروں کے نقاشی تعلقات وغیرہ)۔ وہ ایک ساتھ مل کر ایک ڈیٹا بیس پر حملہ کرنے والے مجبوری پیش کش سی (DB) تشکیل دیتے ہیں۔ اگر ڈیٹا بیس کی حالت DB رکاوٹ کے مطابق ہے تو ، حملہ آور صحیح ہے ، ورنہ یہ غلط ہے۔ لین دین کو مستقل مزاجی کو برقرار رکھنے کے ل const رکاوٹ کو برقرار رکھنا چاہئے: اگر لین دین شروع ہوتا ہے تو ، جب لین دین ہوتا ہے تو ڈیٹا بیس مستقل ہوتا ہے۔ اگر کسی ٹرانزیکشن میں کسی ڈیٹا بیس کی ریاست پڑھ جاتی ہے جو رکاوٹ کی پیش کش کی خلاف ورزی کرتی ہے تو ، لین دین اس سے عارضی رعایت کی خلاف ورزی کرنے پر مجبور ہے۔ اس پابندی کی خلاف ورزی کو [DAT] میں متضاد تجزیہ کہا جاتا ہے۔

A5 (ڈیٹا آئٹم کی پابندی کی خلاف ورزی)۔ فرض کیجئے کہ C () ڈیٹا بیس میں دو ڈیٹا آئٹم x اور y کے درمیان ایک ڈیٹا بیس رکاوٹ ہے۔ یہاں پابندی کی خلاف ورزیوں کی وجہ سے دو قسم کی بے ضابطگییاں ہیں۔

A5A پڑھیں اسکیو فرض کرتا ہے کہ ٹرانزیکشن T1 x پڑھتا ہے ، پھر دوسرا ٹرانزیکشن T2 اپ ڈیٹ ہوتا ہے اور ایکس اور y کا ارتکاب کرتا ہے۔ اگر T1 اب آپ y کو پڑھتا ہے تو ، اس میں متضاد حالت نظر آسکتی ہے۔ جہاں تک تاریخ کا تعلق ہے تو ، ہمارے پاس مستثنیات ہیں:

A5A : r1 [x] ... w2 [x] ... w2 [y] ... c2 ... r1 [y] ... (c1 یا a1) (تعصب پڑھیں)

A5B لکھیں اسکیو یہ فرض کرتا ہے کہ T1 X اور y کو C () کے مطابق پڑھتا ہے ، پھر T2 ایکس اور y پڑھتا ہے ، ایکس لکھتا ہے اور کمٹ کرتا ہے۔ پھر T1 y لکھتا ہے۔ اگر x اور y کے درمیان رکاوٹ ہے تو ، اس کی خلاف ورزی ہوسکتی ہے۔ تاریخ کے لحاظ سے:

A5B : r1 [x] ... r2 [y] ... w1 [y] ... w2 [x] ... (c1 اور c2 واقع ہوتا ہے) (تعصب لکھیں)

فجی ریڈ (P2) پڑھنے کی تعصب کی ایک ہضم شکل ہے ، جہاں x = y۔ عام طور پر ، ایک لین دین میں دو مختلف لیکن متعلقہ اشیاء (جیسے حوالہ جاتی سالمیت) پڑھی جاتی ہیں۔ تحریری تعصب (A5B) بینکاری سیمنٹکس کی رکاوٹوں سے آسکتا ہے ، جیسے اکاؤنٹ بیلنس منفی ہوسکتا ہے جب تک کہ مجموعی توازن غیر منفی رہے۔ جیسے تاریخ H5 میں بے ضابطگی ہے۔

پی 2 کو چھوڑنے کی تاریخ میں ، نہ تو A5A اور A5B واقع نہیں ہوگا کیوں کہ A5A اور A5B دونوں ہی میں ایسا معاملہ ہوتا ہے جہاں T2 ڈیٹا آئٹم لکھتا ہے جو پہلے T1 کے ذریعہ غیر مرتب ہوا تھا۔ لہذا ، مظاہر A5A اور A5B صرف تکرار پذیر پڑھنے سے نیچے تنہائی کی سطح کو تمیز کرنے کے لئے استعمال کیا جاتا ہے۔

اے این ایس آئی کی ایس کیو ایل تعریفوں میں دہرائے جانے والے مطالعے ان کی سخت ترجمانی میں صف کی حدود کی شکل پیدا کرنے کی شکل کو اپنی گرفت میں لیتے ہیں ، لیکن وہ نظریاتی طور پر غائب ہیں۔ خاص طور پر ، ٹیبل 2 کا لاک ریپیٹ ایبل ریڈ صف پابندی کی خلاف ورزیوں کے خلاف تحفظ فراہم کرتا ہے ، لیکن ٹیبل 1 کی اے این ایس آئی ایس کیو ایل تعریف صرف استثناء A1 اور A2 کی ممانعت کرتی ہے ، اور صف بندی کی خلاف ورزیوں کے خلاف تحفظ فراہم نہیں کرتی ہے۔

اب سنیپ شاٹ تنہائی کی طرف ، اس تنہائی کی سطح پڑھنے کے ارتکاب سے کہیں زیادہ مضبوط اور مضبوط ہے۔

نتیجہ 8 : عرض کیج.

ثابت : اسنیپ شاٹ تنہائی میں ، پہلی مرتبہ جیتنے والی جماعت P0 (گندی تحریروں) کو خارج کرتی ہے ، اور ٹائم اسٹیمپ میکانزم P1 کو روکتا ہے (گندا پڑھتا ہے) ، لہذا اسنیپ شاٹ تنہائی پڑھنے کے ارتکاب سے کمزور نہیں ہے۔ اس کے علاوہ ، A5A پڑھنے کے عزم کے تحت ہوسکتا ہے ، لیکن اسنیپ شاٹ تنہائی اور ٹائم اسٹیمپ میکانزم کے تحت نہیں۔ تو پڑھا گیا ہے پیش

نوٹ کریں کہ ایک قدر والی تشریح میں ، یہ بیان کرنا مشکل ہے کہ اسنیپ شاٹ تنہائی کی تاریخ P2 کی کس طرح خلاف ورزی کرتی ہے۔ استثناء A2 نہیں ہوسکتا ہے کیونکہ اسنیپ شاٹ تنہائی کے تحت لین دین میں اعداد و شمار کی تازہ کاری کے بعد بھی اعداد و شمار کے اسی ورژن کی قیمت پڑھ جاتی ہے۔ تاہم ، جزوی تحریر (A5B) واضح طور پر اسنیپ شاٹ تنہائی (جیسے H5) کے تحت ہوتا ہے ، اور اس کا ذکر تاریخ کی واحد قدر میں کیا گیا ہے کہ پی 2 پر پابندی لگانے سے A5B کو بھی خارج نہیں کیا جائے گا۔ لہذا ، اسنیپ شاٹ تنہائی کو تسلیم کیا گیا ہے کہ دوبارہ پڑھنے کے قابل کوئی تاریخی استثنا نہیں ہے۔

A3 رعایت (پریت پڑھیں) اسنیپ شاٹ تنہائی کے تحت نہیں پایا جاتا ہے۔ جب کسی ٹرانزیکشن میں ڈیٹا آئٹم سیٹ کو اپ ڈیٹ کیا جاتا ہے تو ، ایک سے زیادہ پیشیکیٹ ریڈز کے ساتھ ایک اور ٹرانزیکشن میں ہمیشہ وہی پرانا ڈیٹا آئٹم سیٹ نظر آئے گا۔ تاہم ، بار بار پڑھنے کی تنہائی کی سطح میں A3 کی رعایت کا سامنا کرنا پڑ سکتا ہے۔ اسنیپ شاٹ تنہائی استثناء A3 کی تاریخ کو غیر فعال کردیتا ہے ، لیکن A5B کی اجازت دیتا ہے ، جبکہ تکرار پڑھنے والے اس کے برعکس کرتے ہیں (A3 کو A5B کو غیر فعال کرنے کی اجازت دیتے ہیں)۔ لہذا:

نتیجہ 9 : بار بار پڑھنے>

تاہم ، اسنیپ شاٹ تنہائی (جس میں A3 کو چھوڑ دیا گیا ہے) P3 کو ختم نہیں کرتا ہے (پیش گوئی پڑھنے والے لین دین پیش گوئی کے دائرہ کار میں کسی اور لین دین کے ذریعہ لکھے جاتے ہیں)۔ ایک رکاوٹ پر غور کریں جو اس بات کی نشاندہی کرتا ہے کہ پیش گوئی کے ذریعہ طے شدہ ملازمت کے کاموں کا ایک سیٹ 8 گھنٹے سے زیادہ نہیں ہوسکتا ہے۔ ٹی 1 اس پیش گوئی کو پڑھتا ہے ، اس بات کا تعین کرتا ہے کہ رقم صرف 7 گھنٹے ہے ، اور 1 گھنٹے کی مدت کے لئے ایک نیا کام شامل کرتا ہے ، جبکہ سم ٹرانزیکشن T2 بھی یہی کام کرتا ہے۔ چونکہ دو لین دین مختلف اعداد و شمار کے آئٹمز (اور مختلف اشاریہ اندراجات (اگر کوئی ہے)) داخل کر رہے ہیں ، لہذا پہلے مرتبہ جیتنے سے انکار نہیں ہوتا ہے اور اسنیپ شاٹ تنہائی میں ہوسکتا ہے۔ لیکن کسی بھی مساوی سیریل ہسٹری میں ، P3 اس معاملے میں واقع ہوگا۔

شاید سب سے حیرت انگیز بات یہ ہے کہ اسنیپ شاٹ تنہائی میں کوئی پریت نہیں پڑھا جاتا ہے (اے این ایس آئی تعریف A3 کے سخت معنی میں)۔ ہر لین دین میں سم ٹرانزیکشن کی تازہ کاری نہیں ہوگی۔ لہذا ، آپ مندرجہ ذیل حیرت انگیز نتائج کہہ سکتے ہیں (نوٹ کریں کہ ٹیبل 1 انوملی سیرئلیبل کو سیرئلیبل کے طور پر تعیinesن کرتا ہے جیسا کہ اے این ایس آئی ایس کیو ایل نے بیان کیا ہے) [اے این ایس آئی] میں 28.2828 میں اضافی پابندیوں کے بغیر:

نتیجہ 10 : اسنیپ شاٹ تنہائی کی تاریخ میں A1 ، A2 ، اور A3 کو مستثنیٰ نہیں ہے۔ لہذا ، جدول 1 کی مستثنی تشریح میں غیر معمولی سیریلائزئبل: سیریلائزبل

اسنیپ شاٹ تنہائی سے ٹرانزیکشنز کو بہت پرانے ٹائم اسٹیمپ سے چلانے کی اجازت ملتی ہے ، جس سے ڈیٹا بیس کی تاریخ سے 'ٹائم ٹریول' کی سہولت مل جاتی ہے۔ یقینا، ، بہت ہی پرانے ٹائم اسٹیمپس کے ساتھ لین دین کو ختم کردیا جائے گا اگر وہ کسی ایسے ڈیٹا آئٹم کو اپ ڈیٹ کرنے کی کوشش کرتے ہیں جو کسی نئے ٹرانزیکشن کے ذریعہ اپ ڈیٹ ہو چکے ہیں۔

اسنیپ شاٹ الگ تھلگ کی نقالی ریڈ [REE] کا ایک سادہ سا عمل۔ اس کثیر ورژن والے ڈیٹا بیس کے بہت سے تجارتی عمل درآمد ہیں۔ بورلینڈ کے انٹربیس 4 [THA] اور مائیکروسافٹ ایکسچینج پر مبنی انجن سنیپ شاٹ تنہائی اور فرسٹ کمٹٹر جیتنے کی صلاحیتیں مہیا کرتے ہیں۔ پہلی مرتبہ جیتنے والے نظام کو ہر فعال لین دین کے آغاز کے وقت کے بعد ہونے والے کسی بھی لین دین کے ل for ساری اپڈیٹس (لکھنے کی معلومات لکھنا) یاد رکھنے کی ضرورت ہوتی ہے۔ اگر اپ ڈیٹ نظام میموری میں موجود کسی اور کے ذریعہ موجودہ اپ ڈیٹ سے متصادم ہے تو ، اس لین دین کو منسوخ کردیا جاتا ہے۔

سنیپ شاٹ تنہائی کا 'پر امید' کنکرنسی کنٹرول طریقہ صرف پڑھنے کے ل transactions لین دین کے واضح موافق فوائد رکھتا ہے ، لیکن تازہ کاری لین دین کے ل for اس کے فوائد اب بھی متنازعہ ہیں۔ یہ طویل عرصے سے چلنے والی اور انتہائی مسابقتی طور پر مختصر ٹرانزیکشن کی پھانسی کے ل det نقصان دہ ثابت ہوسکتا ہے ، کیونکہ طویل عرصے سے چلنے والے لین دین کا ان کے لکھنے والے ہر چیز کا پہلا مصنف ہونے کا امکان نہیں ہے اور اسی وجہ سے اسقاط حمل ہوسکتا ہے۔ (نوٹ کریں کہ یہ صورتحال لاک عمل میں آنے میں بھی ایک اصل مسئلہ ہوسکتی ہے۔ اگر حل طویل عرصے سے چلنے والی تازہ کاریوں کی اجازت نہیں دے رہا ہے جس میں مختصر ٹرانزیکشن کے تالے ہوں گے تو ، اسنیپ شاٹ تنہائی قابل قبول ہے۔) یقینا ، جب مختصر مدت میں اپ ڈیٹ لین دین کے تنازعات ہوتے ہیں تو کم سے کم اس معاملے میں جہاں طویل عرصے سے چلنے والے لین دین زیادہ تر صرف پڑھنے کے ل read معاملات ہوتے ہیں ، اسنیپ شاٹ تنہائی کا اچھا اثر ہونا چاہئے۔ اعداد و شمار کے اعلی تصادم کے ساتھ طویل لین دین میں ، اسنیپ شاٹ تنہائی طبقاتی طور پر امید پسندانہ انداز فراہم کرتی ہے۔ اس معاملے میں اسنیپ شاٹ تنہائی کی قدر کے بارے میں مختلف تاثر ہے۔

4.3 دوسرے ملٹی ورژن سسٹمز

دوسرے طریقوں کیلئے ملٹی ورزنز سمورسی کنٹرول بھی ہیں۔ کچھ تجارتی ڈیٹا بیس اشیاء کے ورژن برقرار رکھتے ہیں ، لیکن کچھ دوسرے ڈیٹا بیس پوسٹگریس اور الوسٹرا [STO، ILL میں [MS، HOB، ORA] کے لئے SQL-92، Rdb، اور SET Transactions READ کے لئے صرف-صرف پڑھنے والے لین دین میں اسنیپ شاٹ کی تنہائی کو محدود کرتے ہیں۔ ] ایک طویل وقت تک متعدد ورژن برقرار رکھتا ہے اور 'ٹائم ٹریول' کے سوالات مہیا کرتا ہے)۔ دوسرے پروڈکٹس لین دین کو اپ ڈیٹ کرنے کی اجازت دیتے ہیں ، لیکن پہلے مرتبہ کی جیت کی ضمانت نہیں دیتے ہیں (مثال کے طور پر ، اوریکل پڑھیں مستقل مزاجی تنہائی [او آر اے])۔

اوریکل ریڈ مستقل مزاجی کی تنہائی ہر ایس کیو ایل اسٹیٹمنٹ کے شروع ہونے کے بعد ٹرانزیکشن اسٹارٹ ٹائم اسٹیمپ کی بنیاد پر حال ہی میں مرتب کی گئی ڈیٹا بیس کی قیمت دیتا ہے۔ یہ ایسے ہی ہے جیسے ٹرانزیکشن کا آغاز ٹائم اسٹیمپ ہر ایس کیو ایل کے بیان میں تازہ ترین ہے۔ جس وقت کرسر شروع ہوتا ہے وہ کرسر سیٹ کا ممبر ہوتا ہے۔ بنیادی میکانزم بیان ٹائم اسٹیمپ کی بنیاد پر قطار کے مناسب ورژن کی دوبارہ گنتی کرتا ہے۔ لکھتے ہیں تالے قطار میں داخل کرنے ، اپ ڈیٹ اور حذف کرنے سے پہلے مرتبہ جیتنے کی پالیسیوں کے بجائے پہلے مصنف کی جیت فراہم کرتے ہیں۔ پڑھنے میں مستقل مزاجی پڑھنے سے زیادہ مضبوط ہے (اس سے کرسر نقصان کی تازہ کاری (P4C)) پر پابندی ہے ، لیکن ناقابل تردید پڑھنے والے (P3) ، کھوئے ہوئے اپ ڈیٹس (P4) ، اور آفسیٹس (A5A) کو پڑھنے کی اجازت دیتا ہے۔ سنیپ شاٹ تنہائی P4 یا A5A کی اجازت نہیں دیتی ہے۔

اگر آپ ایس کیو ایل کے معیار کو قریب سے دیکھیں گے تو ، یہ ہر بیان کو ایٹم آپریشن کے طور پر متعین کرتا ہے۔ اس میں ہر بیان کے آغاز میں سیرلائز ایبل سب ٹرانزیکشن (یا ٹائم اسٹیمپ) ہوتے ہیں۔ تنہائی کی سطح کا درجہ بندی تصور کیا جاسکتا ہے جو بیان کو ٹائم اسٹیمپ تفویض کرکے تنہائی کی سطح کی وضاحت کرتا ہے (مثال کے طور پر اوریکل میں ، کرسر کی بازیافت کا آغاز ہوا ٹائم اسٹیمپ ہوتا ہے)۔

5. خلاصہ

خلاصہ طور پر ، اصل اے این ایس آئی ایس کیو ایل تنہائی کی سطح کی تعریف کے ساتھ سنگین مسائل ہیں (جیسا کہ سیکشن 3 میں بیان ہوا ہے)۔ انگریزی متن میں تعریف مبہم اور نامکمل ہے۔ گندا لکھنا (P0) خارج نہیں ہے۔ نتیجہ 5 یہ ہے کہ ہم تالا تنہائی کی سطح [جی ایل پی ٹی] کے مطابق ہونے کے لئے اے این ایس آئی کی تنہائی کی سطح کو صاف کرنے کی تجویز کرتے ہیں۔

ANSI SQL پریت پڑھنے کے سوا تمام استثناء کو خارج کرنے کے لئے تکرار قابل مطالعہ تنہائی کی وضاحت کرنا چاہتا ہے۔ ٹیبل 1 میں رعایت کی تعریف نے اس مقصد کو حاصل نہیں کیا ، لیکن ٹیبل 2 کی لاک ورژن کی تعریف کی ہے۔ اے این ایس آئی کا 'ریپیٹ ایبل ریڈ' اصطلاح کا انتخاب انتہائی نامناسب ہے: (1) تکرار کرنے والے پڑھنے سے تکرار پانے والے نتائج برآمد نہیں ہوتے ہیں ، اور (2) صنعت نے اس اصطلاح کو استعمال کیا ہے جس کا مطلب ہے کہ دوبارہ پڑھنے والے پڑھنے کا مطلب سیریلائزئبل ہے - یہ متعدد مصنوعات کی اصطلاحات میں سمجھا جاتا ہے۔ ہم اس کے لئے ایک اور اصطلاح تلاش کرنے کی تجویز کرتے ہیں۔

بہت ساری تجارتی مصنوعات میں الگ تھلگ کی سطح ٹیبل 3 کے تکرار قابل پڑھنے اور سیریلائزیشن کے درمیان ہے۔ سیکشن 4 میں بیان کیا گیا ہے۔ یہاں نام دیئے گئے تمام تنہائی کی سطح کی خصوصیات جیسا کہ شکل 2 اور ٹیبل 4 میں دکھایا گیا ہے ، مندرجہ ذیل ہیں۔ اعداد و شمار 2 میں تنہائی کی اعلی سطح شدت میں زیادہ ہے (سیکشن 4.1 کے آغاز میں تعریف دیکھیں) ، اور آپس میں جڑنے والی لائنوں کو مظاہر اور اسامانیتاوں کے ساتھ نشان لگا دیا گیا ہے جو ان کو ممتاز کرتے ہیں۔

یہ بات قابل غور ہے کہ ملٹی ورژن سسٹم کی تنہائی کی سطح کو کم کرنے پر تبادلہ خیال کرنے والا مضمون کبھی نہیں آیا ہے ، حالانکہ اس کو متعدد مصنوعات میں پہلے ہی لاگو کیا جا چکا ہے۔ کرسر استحکام یا اوریکل کے مستقل تنہائی کا استعمال کرتے ہوئے بہت سے ایپلی کیشنز تالے سے لڑنے سے بچ جاتے ہیں۔ اس طرح کی ایپلی کیشنز کو معلوم ہوگا کہ اسنیپ شاٹ تنہائی دونوں سے بہتر ہے: یہ اپ ڈیٹ کی چھوٹ سے مستثنیٰ ہونے سے بچتا ہے ، اور کچھ پریت پڑھنے سے مستثنیٰ ہیں (جیسا کہ اے این ایس آئی ایس کیو ایل کے ذریعہ بیان کردہ)۔ یہ صرف پڑھنے والے لین دین کو مسدود نہیں کرتا ہے ، اور پڑھنے سے اپ ڈیٹس کو مسدود نہیں کیا جاتا ہے۔

بیان کے لئے شکریہ (چھوڑ دیا)

حوالہ

[اے این ایس آئی] اے این ایس آئی ایکس 3.135-1992 ، امریکن نیشنل اسٹینڈرڈ فار انفارمیشن سسٹمز - ڈیٹا بیس لینگویج۔ ایس کیو ایل ، نومبر ، 1992

[اے بی جے] وی اٹلوری ، ای برٹینو ، ایس جاجوڈیا ، 'ڈیٹا بیس میں الگ تھلگ کی ڈگریوں کے لئے ایک نظریاتی تشکیل ،' تکنیکی رپورٹ ، جارج میسن یونیورسٹی ، فیئر فیکس ، VA ، 1995

[بی ایچ جی] پی. اے برنسٹین ، وی. ہڈزیلیکوس ، این گڈمین ، 'ڈیٹا بیس سسٹم میں کنکرنسی کنٹرول اور بازیافت ،' ایڈیسن - ویسلی 1987۔

[ڈی اے ٹی] سی جے ڈیٹ ، 'ڈیٹا بیس سسٹمز کا تعارف ،' پانچواں ایڈیشن ، ایڈیسن ویسلی ، 1990 [ڈی بی 2] سی جے تاریخ اور سی جے وائٹ ، 'ڈی بی 2 کے لئے ایک گائڈ ،' تیسرا ایڈیشن ، ایڈیسن ویسلی ، 1989۔

[ای جی ایل ٹی] کے پی پی ایسوران ، جے گرے ، آر لوری ، آئی ٹریگر ، 'ڈیٹا بیس سسٹم میں مستقل مزاجی اور پیش گوئی والے تالے کے نظریات ،' سی اے سی ایم وی 19.11 ، پی پی 624- 633 ، نومبر 1978

[جی ایل پی ٹی] جے گرے ، آر لوری ، جی پوٹزولو اور ، آئی ٹریگر ، 'مشترکہ ڈیٹا بیس میں تالے اور مستقل مزاجی کی گنجائش ،' ڈیٹا بیس سسٹم ، ریڈنگز میں سیکنڈ ایڈیشن ، باب، ، مائیکل اسٹون برکر ، ایڈ. ، مورگن کاف مین 1994 (اصل میں 1977 میں شائع ہوا)

[GR] جے گرے اور اے ریئٹر ، 'ٹرانزیکشن پروسیسنگ: تصورات اور تراکیب ،' دوسری پرنٹنگ ، مورگن کاف مین 1993 ، سیکشن 7.6 اور اس کی پیروی کی گئی۔

[HOB] ایل. ہوبس اور کے انگلینڈ ، 'آر ڈی بی / وی ایم ایس ، ایک جامع گائیڈ ،' ڈیجیٹل پریس ، 1991۔

[ILL] Illustra انفارمیشن ٹیکنالوجیز ، 'Illustra صارف کی رہنما ،' ، Illustra انفارمیشن ٹیکنالوجیز ، آکلینڈ ، CA. 1994۔

[ایم ایس] جے میلٹن اور اے آر سائمن ، 'نئی ایس کیو ایل کو سمجھنا: ایک مکمل ہدایت نامہ ،' مورگن کاف مین 1993۔

[او او بی بی جی ایم] پی او نیل ، ای او نیل ، ایچ بیریسن ، پی برنسٹین ، جے گرے ، جے میلٹن ، 'ٹرانزیکشنل علیحدگی کی سطح کی تحقیقات ،' یو مااس / بوسٹن ڈیپارٹمنٹ آف ریاضی اور سی ایس پری پرنٹ۔ .

[ORA] 'PL / SQL صارف کی ہدایت نامہ اور حوالہ ، ورژن 1.0 ،' حصہ۔ 800-V1.0 ، اوریکل کارپوریشن ، 1989۔

[پی اے پی] سی پاپادیمیتریو ، 'تھیوری آف ڈیٹا بیس کنکورન્સી کنٹرول ، کمپیوٹر سائنس پریس ، 1986۔

[PON] پی او نیل ، 'ڈیٹا بیس: اصول ، پروگرامنگ ، کارکردگی ، مورگن کاف مین 1994 ، سیکشن 9.5۔

[ری ای ای] ڈی ریڈ ، 'وکندریقرت اعداد و شمار پر جوہری کارروائیوں کا نفاذ ،' ACM ٹوکس 1.1،1981 ، پی پی 3- 23۔

[ایس ٹی او] ایم جے اسٹونبریکر ، 'پوسٹگریس اسٹوریج سسٹم کا ڈیزائن ،' 13 واں وی ایل ڈی بی ، 1987 ، جو ڈیٹا بیس سسٹم ، ریڈنگ میں ، دوسرا ایڈیشن ، ایم جے اسٹونبیکر ، ایڈیشن ، مورگن کاف مین 1994 میں دوبارہ شائع ہوا۔

[THA] ایم ٹھاکر ، 'انٹربیس 4 میں ٹرانزیکشن ماڈل ،' جون 1994 میں بور لینڈ انٹرنیشنل کانفرنس کی کارروائی۔