پایگاه داده ساده
این مقاله، پایگاه داده ساده، اخیراً بهواسطهٔ فرایند ایجاد مقاله ایجاد شدهاست. بازبینیکننده در حال بستن درخواست است و این برچسب احتمالاً بهزودی برداشته میشود.
ابزارهای بازبینی: پیشبارگیری بحث اعلان به نگارنده |
خطای اسکریپتی: پودمان «AfC submission catcheck» وجود ندارد.
ویژگی ها[ویرایش]
شرط گذاشتن و حذف[ویرایش]
شرط گذاشتن و حذف مشروط عملیات جدیدی هستند که در فوریه 2020 اضافه شدند. آنها مشکلی که هنگام دسترسی همزمان به پایگاه داده ساده ایجاد می شود را اداره میکنند.یک برنامه ساده را درنظر بگیرید که از این پایگاه داده برای ذخیره یک شمارنده استفاده می کند(یعنی عددی که میتواند افزایش یابد). این برنامه باید سه فرایند را انجام دهد.
- مقدار فعلی شمارنده را از پایگاه داده ساده دریافت کنید.
- یک واحد به آن مقدار بیفزایید.
- مقدار جدید را در همان مکان مقدار قدیمی در پایگاه داده ساده ذخیره کنید.
اگر این برنامه در حالی اجرا شود که هیچ برنامه ی دیگری به پایگاه داده ساده دسترسی نداشته باشد به درستی عمل خواهد کرد .با این وجود مطلوب است اغلب برای برنامه ی های نرم افزاری (مخصوصا برنامه های وب) که به داده های مشابه دسترسی دارند.هنگامیکه به داده ها ی مشابه بطور همزمان دسترسی پیدا می شود ، یک شرایط رقابت ایجاد میشود که نتیجه ی آن میتواند منجر به از دست دادن اطلاعات غیر قابل کشف شود.
در ادامه ی مثال قبلی دو فرایند A و Bرا در نظر بگیرید که یک برنامه ی مشابه را اجرا میکنند.فرض کنید سرویس پایگاه داده ساده برای دریافت داده از B.و A همانطور که در گام 1 توضیح داده شد درخواست میدهد . A و B مقدار یکسانی را می بینند.فرض کنید مقدار فعلی شمارنده 0 است به دلیل مراحل 2و3 A سعی خواهد کرد مقدار 1 را ذخیره کند. B هم برای همین کار تلاش میکند. بنابراین مقدار نهایی شمارنده 1 خواهد شد . حتی اگر مقدار شمارنده ی نهایی مورد انتظارمان 2 باشد . زیرا سیستم دو عملیات افزایشی را یکی برای A و دیگری برایB انجام داده است.
این مشکل با استفاده از شرط گذاشتن حل خواهد شد.فرض کنید گام 3 را به صورت زیر تغییر دهیم:
به جای ذخیره ی بی قید و شرط مقدار جدید، برنامه از پایگاه داده برای ذخیره ی مقدرا جدید میخواهد مقدار جدید را تنها در صورتی ذخیره کند که مقداری که در حال حاضر دارد با مقدار که از گام 1 بازیابی شده یکسان باشد.سپس میتوانیم مطمئن باشیم که مقدار شمارنده واقعا افزایش یافته است.این باعث پیچیدگی اضافه میشود . اگر پایگاه داده قادر به ذخیره مقدار جدید نباشد ، از آنجاییکه مقدار فعلی پیش بینی شده نبود، برنامه باید مراحل 1 تا 3 را تکرار کند تا وقتیکه عملیات شرط گذاشتن ، مقدار ذخیره شده را تغییر دهد.
خواندن ویرایش سازگار[ویرایش]
خواندن سازگار ویژگی جدیدی بود که همزمان با شرط گذاشتن و حذف مشروط منتشر شد.همانطور که از نام آن پیداست خواندن سازگار مشکلاتی که به دلیل مدل سازگاری نهایی پایگاه داده ساده ایجاد میشود را برطرف میکند(به قسمت محدودیت ها[۱] توجه کنید)دنباله ی عملیات زیر را در نظر بگیرید:
- برنامه ی A مقداری داده در پایگاه داده ساده ذخیره میکند.
- بلافاصله پس از آن A داده هایی را که جدیدا ذخیره کرده درخواست میکند.
تعهد سازگاری نهایی پایگاه داده ساده به ما اجازه نمیدهد که بگوییم داده های بازیابی شده در گام 2 بروزرسانی هایی که در گام1 انجام شده اند را منعکس میکند.سازگاری نهایی فقط تضمین میکند که گام2 مجموعه ی کامل بروزرسانی ها در گام 1 ا را منعکس میکند و یا هیچ یک از آن بروزرسانی ها را برنمیگرداند. برای اطمینان از اینکه داده های بازیابی شده در مرحله 2 تغییرات مرحله 1 را برمی گردانند، از خواندن مداوم میتواند استفاده شود.
دلیل اینکه وقتی از عملیات خواندن مداوم استفاده نمیشود نتایج ناسازگار ایجاد میشوند این است که پایگاه داده ساده ، داده ها در مکانهای گوناگون ذخیره میکند.(برای دستیابی) و زمانی که پایگاه داده درخواست اطلاعات در گام 2 را دریافت میکند ممکن است دادههای جدید در مرحله 1 در همه مکانها نوشته نشوند. در آن صورت امکان دارد که درخواست داده در گام 2 در یکی از مکانهایی که داده ی جدید نوشته نشده رسیدگی شود.
شرکت آمازون استفاده از خواندن مداوم را جز مواردی که برای درستی ضروری باشد منع میکند دلیل این نظریه این است که بهایی که در آن عملیات خواندن یکنواخت انجام می شود کمتر از خواندن های معمولی است.
منابع[ویرایش]
- ↑ "Amazon SimpleDB". Wikipedia (به English). 2021-06-29.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
This article "پایگاه داده ساده" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:پایگاه داده ساده. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.