زمان کنونی: ۲۹ آذر ۱۴۰۳, ۱۱:۴۴ ب.ظ مهمان گرامی به انجمن مانشت خوش آمدید. برای استفاده از تمامی امکانات انجمن می‌توانید عضو شوید.
گزینه‌های شما (ورودثبت نام)

سوالی در رابطه با نحوه ی انجام تراکنش

ارسال:
  

fereshte88 پرسیده:

سوالی در رابطه با نحوه ی انجام تراکنش

سلام. من یک سوال دارم. ممنون میشم اگه کسی راهنماییم کنه. سوالم اینه:
<می خوایم یک مبلغی رو از یک حساب به حساب دیگه واریز کنیم،اگر در هر زمان سیستم دچار خرابی شد نتیجه ی حاصل درست باشه> این روالش به چه صورته؟ و دوم اینکه:
در صورتی که هر کدوم از حساب ها توی بانک مجزایی در یک سیستم شبکه با DBMS های متفاوت باشه؛ روال این یکی به چه صورته؟
x86، در تاریخ ۱۹ مهر ۱۳۹۳ ۰۸:۵۳ ب.ظ برای این مطلب یک پانوشت گذاشته است:

با سلام. سوال شما به بخش سوالات اعضا منتقل و عنوان آن ویرایش شد.

نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

x86 پاسخ داده:

RE: سوالی در رابطه با نحوه ی انجام تراکنش

(۱۹ مهر ۱۳۹۳ ۰۸:۳۷ ب.ظ)fereshte88 نوشته شده توسط:  <می خوایم یک مبلغی رو از یک حساب به حساب دیگه واریز کنیم،اگر در هر زمان سیستم دچار خرابی شد نتیجه ی حاصل درست باشه> این روالش به چه صورته؟ و دوم اینکه:

همونطور که حدس زدید این کار توسط تراکنش انجام می شه. یکی از ویژگی های تراکنش این هست یا انجام بشه یا کلا انجام نشه تا سیستم در حالت سازگار باقی بمونه. و اما اینکه تراکنش به چه صورت انجام میشه. فرض کنید که تراکنش ما قراره کار زیر رو انجام بده:
A=A-100
B=B+100
روش های مختلفی برای مدیریت همروندی وجود داره که ما اینجا فرض می کنیم داده های A و B قفل شدن. تراکنش به این صورت هست که هر کاری رو که انجام میده در یک فایل لاگ زمان، شماره ی تراکنش، و کار انجام شده رو توی اون فایل لاگ ثبت میکنه. وقتی که تراکنش به کلی انجام شد شماره ی تراکنش به همراه دستور commit در فایل لاگ ثبت میشه. فرض کنید که دستور A=A-100 اجرا شد ولی بعدش سیستم دچار خرابی شد. حالا وقتی مجددا سیستم بالا اومد، DBMS به سراغ فایل لاگ میره اگه آخرین دستور ما commit بود (فرض می کنیم فقط یه تراکنش هست) پس همه چیز خوب پیش رفته ولی اگه commit نبود دستور ها رو یکی یکی عکسش رو انجام میده (اینجا A=A+100 میشه) تا زمانی که به دستور begin برسه.

برای کسب اطلاعات بیشتر به فصل ۱۴ (Transaction) کتاب پایگاه داده های جناب سیلبرشاتس رجوع کنید.
نقل قول این ارسال در یک پاسخ

ارسال:
  

fereshte88 پاسخ داده:

RE: سوالی در رابطه با نحوه ی انجام تراکنش

(۱۹ مهر ۱۳۹۳ ۰۸:۵۲ ب.ظ)x86 نوشته شده توسط:  
(19 مهر ۱۳۹۳ ۰۸:۳۷ ب.ظ)fereshte88 نوشته شده توسط:  <می خوایم یک مبلغی رو از یک حساب به حساب دیگه واریز کنیم،اگر در هر زمان سیستم دچار خرابی شد نتیجه ی حاصل درست باشه> این روالش به چه صورته؟ و دوم اینکه:

همونطور که حدس زدید این کار توسط تراکنش انجام می شه. یکی از ویژگی های تراکنش این هست یا انجام بشه یا کلا انجام نشه تا سیستم در حالت سازگار باقی بمونه. و اما اینکه تراکنش به چه صورت انجام میشه. فرض کنید که تراکنش ما قراره کار زیر رو انجام بده:
A=A-100
B=B+100
روش های مختلفی برای مدیریت همروندی وجود داره که ما اینجا فرض می کنیم داده های A و B قفل شدن. تراکنش به این صورت هست که هر کاری رو که انجام میده در یک فایل لاگ زمان، شماره ی تراکنش، و کار انجام شده رو توی اون فایل لاگ ثبت میکنه. وقتی که تراکنش به کلی انجام شد شماره ی تراکنش به همراه دستور commit در فایل لاگ ثبت میشه. فرض کنید که دستور A=A-100 اجرا شد ولی بعدش سیستم دچار خرابی شد. حالا وقتی مجددا سیستم بالا اومد، DBMS به سراغ فایل لاگ میره اگه آخرین دستور ما commit بود (فرض می کنیم فقط یه تراکنش هست) پس همه چیز خوب پیش رفته ولی اگه commit نبود دستور ها رو یکی یکی عکسش رو انجام میده (اینجا A=A+100 میشه) تا زمانی که به دستور begin برسه.

برای کسب اطلاعات بیشتر به فصل ۱۴ (Transaction) کتاب پایگاه داده های جناب سیلبرشاتس رجوع کنید.

خیلی ممنون از جوابتون. اگر DBMS ها متفاوت باشند چطوره؟
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

ارسال:
  

x86 پاسخ داده:

RE: سوالی در رابطه با نحوه ی انجام تراکنش

(۱۹ مهر ۱۳۹۳ ۰۹:۰۰ ب.ظ)fereshte88 نوشته شده توسط:  خیلی ممنون از جوابتون. اگر DBMS ها متفاوت باشند چطوره؟

سوالتون رو میشه با نحوه ی پردازش تراکنش در سیستم های توزیع شده پاسخ داد. در اونجا یک میان افزاری وجود خواهد داشت که دستورات را به یه استانداردی تبدیل کرده و در دو DBMS اجرا خواهد کرد. اما این کار به چه صورت انجام میشه؟ فرض می کنیم که یه Coordinator داریم (که معمولا این کار رو انجام میدن) دقیقا همین فرایندی که در بالا توضیح دادم در Coordinator صورت میگیره و اون دستورات را به تمامی گره ها ارسال میکنه و تنها در صورتی تراکنش commit میشه که تک تک گره ها دستور commit را صادر و Coordinator اون ها رو دریافت کرده باشه. البته روش هایی وجود داره که اگه تعدادی از گره ها دستور را Commit نکردن باز هم سیستم به کارش ادمه بده.

قابل ذکر هست که تو این جور مواقع معمولا دو نوع تراکنش انجام میشه:
۱- تراکنش های محلی: که هر DBMS برای خودش انجام میده بدون اینکه Coordinator یا در واقع کنترلر از اون خبر دار باشه
۲- تراکنش های جهانی (Global): که این نوع تراکنش ها تحت نظر Coordinator انجام میشه. که چیزی که شما میخوایید از این نوع هست.

برای اطلاعات بیشتر میتونید به فصل ۱۹ (Distributed Databases) جناب سیلبرشاتس بخش ۱۹/۳ با عنوان Distributed Transactions و بخش ۱۹/۸ با عنوان Heterogeneous Distributed Databases که دقیقا به ناهمگنیِ DBMS ها اشاره میکنه مراجعه کنید.
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

ارسال:
  

fereshte88 پاسخ داده:

RE: سوالی در رابطه با نحوه ی انجام تراکنش

خیلی ممنون از جوابتون. اگر DBMS ها متفاوت باشند چطوره؟
[/quote]

سوالتون رو میشه با نحوه ی پردازش تراکنش در سیستم های توزیع شده پاسخ داد. در اونجا یک میان افزاری وجود خواهد داشت که دستورات را به یه استانداردی تبدیل کرده و در دو DBMS اجرا خواهد کرد. اما این کار به چه صورت انجام میشه؟ فرض می کنیم که یه Coordinator داریم (که معمولا این کار رو انجام میدن) دقیقا همین فرایندی که در بالا توضیح دادم در Coordinator صورت میگیره و اون دستورات را به تمامی گره ها ارسال میکنه و تنها در صورتی تراکنش commit میشه که تک تک گره ها دستور commit را صادر و Coordinator اون ها رو دریافت کرده باشه. البته روش هایی وجود داره که اگه تعدادی از گره ها دستور را Commit نکردن باز هم سیستم به کارش ادمه بده.

قابل ذکر هست که تو این جور مواقع معمولا دو نوع تراکنش انجام میشه:

خیلی خیلی ممنون
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
  آموزش نحوه گرفتن پرتره ای حرفه ای mortazangz ۰ ۱,۵۳۹ ۲۵ بهمن ۱۴۰۰ ۰۲:۱۹ ب.ظ
آخرین ارسال: mortazangz
  نظر در رابطه با استاد داور علیصا ۰ ۱,۷۸۵ ۱۴ مهر ۱۴۰۰ ۰۶:۰۵ ب.ظ
آخرین ارسال: علیصا
  انجام پایان نامه برای داده کاوی استقرایی روی FIM ویافتن ARM با دوتا یا بیشتر CUDA GPU zaliabbass ۲ ۴,۴۷۰ ۰۶ اسفند ۱۳۹۸ ۰۸:۳۳ ب.ظ
آخرین ارسال: bankabzar
  برنامه ریزی و کارهایی که باید انجام بدم fatemesoleimani ۲۰۸ ۷۴,۵۵۵ ۰۲ اسفند ۱۳۹۸ ۱۱:۵۱ ق.ظ
آخرین ارسال: فاطمه سلیمانی
  نحوه محاسبه دفیق لگاریتم بدون ماشین حساب mcse2010 ۲ ۸۲,۹۲۰ ۲۸ مهر ۱۳۹۸ ۰۹:۳۸ ق.ظ
آخرین ارسال: chemical_darton29
  نحوه مطالعه دروس...راهنمایی لطفا... mona64 ۳ ۴,۳۹۲ ۲۰ مهر ۱۳۹۸ ۱۰:۵۹ ب.ظ
آخرین ارسال: marvelous
  نحوه کار با شبیه ساز cooja amani96 ۳ ۳,۹۷۲ ۱۲ مرداد ۱۳۹۸ ۰۲:۳۵ ق.ظ
آخرین ارسال: marvelous
  سوالی از دنباله ها و قوانین سیگما fendi ۱ ۳,۰۸۱ ۰۶ اردیبهشت ۱۳۹۸ ۰۲:۱۱ ق.ظ
آخرین ارسال: Saman
Question نحوه دانلودpatent imsad88 ۲ ۵,۸۴۸ ۰۳ آذر ۱۳۹۷ ۰۶:۲۱ ب.ظ
آخرین ارسال: zahramotieeyan
  نحوه مشخص کردن بیت‌های حافظه کنترل Erfan_Ekh ۰ ۲,۰۲۷ ۰۹ تیر ۱۳۹۷ ۰۳:۱۷ ب.ظ
آخرین ارسال: Erfan_Ekh

پرش به انجمن:

Can I see some ID?

به خاطر سپاری رمز Cancel

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close

رمزت رو فراموش کردی؟

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. close