خاصیت ACID در یک پایگاه داده

همان طور که در درس تراکنش چیست؟ توضیح دادیم، تراکنش یک مجموعه ای از عملیات مانند SELECT، UPDATE و… است که به صورت واحد دیده می شود. تراکنش ها در یک پایگاه داده بایستی از خاصیتی به اسم ACID پشتیبانی کنند. اگر تراکنشی در پایگاه از ACID پشتیبانی کند، منجر به دقت و جامعیت در پایگاه داده می شود. ACID مخفف سه کلمه Atomicity، Consistency، Isolation و Durability می باشد که به شرح تک تک این خاصیت های میپردازیم.

ادامه خواندن “خاصیت ACID در یک پایگاه داده”

تراکنش(Transaction) در پایگاه داده چیست؟

تراکنش ها تعاریف گوناگونی دارند. اما شاید یکی از بهترین و ساده ترین تعریف ها را وب سایت ماکروسافت ارائه داده باشد:

در پایگاه داده ها، تراکنش در واقع یک مجموعه ای از عملیات(مانند SELECT, UPDATE و…) است که مانند یک واحد منطقی عمل میکنند.

برای مثال فرض کنید، شما برای یک مهمانی آماده می شوید. یک برنامه ریزی ۳ ساعته برای مهمانی انجام می دهید که به این صورت است: ۱. به عابر بانک برم و مقداری پول بگیرم ۲. به فروشگاه بروم و مقداری مایحتاج خانه از فروشگاه بخرم ۳. به خانه برگردم و غذا را برای مهمان ها آماده کنم.

ادامه خواندن “تراکنش(Transaction) در پایگاه داده چیست؟”

مقیاس پذیری یا توسعه پذیری(Scalability) در یک سیستم توزیع شده چیست؟

توسعه پذیری یا همان Scalability که بعضا به آن مقیاس پذیری هم گفته می شود یک تعریف بسیار ساده دارد: سیستمی که بتواند خواسته های در حال افزایش را پاسخ دهد. برای مثال اگر شما یک نرم افزار دارید که بر روی یک سرور قرار دارد(مثلا یک وب سایت)، و روزانه ۱۰۰بازدید کننده از وب سایت شما دیدن می کنند، و بعد از مدتی این ۱۰۰بازدید کننده در روز به ۱۰هزار بازدید کننده رسید، در صورتیکه سرور شما بتواند با هزینه ی به نسبت معقولی این ۱۰هزار بازدید کننده را مدیریت کند، شما یک سیستم Scalable یا توسعه پذیر خواهید داشت. مثلا فرض کنید، برای ۱۰۰بازدید در روز، شما مبلغ ۱۰هزار تومان در ماه پرداخت میکردید. حالا که بازدید شما ۱۰هزار نفر شده(یعنی ۱۰۰برابر شده)، هزینه ی شما نباید ۱۰۰برابر شود. مثلا هزینه شما به جای ۱۰هزار تومان در ماه، بایستی ۲۰هزار تومان در ماه(یعنی ۲برابر) شود، تا بتوانیم بگوییم یک سیستم توسعه پذیر داریم.

ادامه خواندن “مقیاس پذیری یا توسعه پذیری(Scalability) در یک سیستم توزیع شده چیست؟”

سیستم فایل توزیع شده(Distributed File System) چیست؟

رشد سیستم ها و محاسبات توزیع شده(محاسباتی که بر روی چندین کامپیوتر در یک سیستم توزیع شده انجام می شوند) باعث شده نیاز برای ذخیره فایل ها به صورت توزیع شده نیز به وجود آید.

سیستم فایل توزیع شده، در واقع راهکاریست، که باعث میشود، فایل های موجود بر روی Nodeهای(کامپیوترهای) مختلف در یک سیستم توزیع شده، به راحتی قابل دسترس باشند. همان طور که میدانید در یک سیستم توزیع شده، شفافیت(Transparency) وجود دارد. به این معنی که، پردازش ها در سیستم توزیع شده از چشم کاربر پنهان است(پیشنهاد میکنیم درس شفافیت را مطالعه داشته باشید). پس توزیع فایل ها نیز، بایستی از چشم کاربر استفاده کننده پنهان باشد. ادامه خواندن “سیستم فایل توزیع شده(Distributed File System) چیست؟”

شفافیت(Transparency) در یک سیستم توزیع شده به چه معناست؟

در یک سیستم توزیع شده، چنانچه کاربری که از این سیستم استفاده میکند، این تصور را پیدا کند که سیستم به صورت یک پارچه(و در واقع یک کامپیوتر) عمل می کند، شفافیت رخ داده است.

برای مثال، اداره ای را در نظر بگیرید که انسان های دیگر درخواست های خود را به ایمیل info@thatcompany.com ارسال می کنند. یک گروه در آن اداره، وظیفه ی ارسال ایمیل های مختلف، به بخش های مختلف آن اداره را دارد. مثلا اگر ایمیل حاوی اطلاعات فنی بود، ایمیل(بدون اطلاع کاربر ارسال کننده) به بخش فنی آن اداره فرستاده می شود. در جواب نیز، ایمیل از طرف آن اداره و از ایمیل reply@thatcompany.com دریافت برای کاربر ارسال می شود. در واقع کاربر متوجه نمی شود که آن اداره، دارای بخش های مختلفی است و همچنین متوجه این مورد نمی شود که ایمیلش به کدام بخش ارسال شده است.

ادامه خواندن “شفافیت(Transparency) در یک سیستم توزیع شده به چه معناست؟”

مفهوم Coupling در سیستم های توزیع شده

در مباحث نرم افزاری، جفت شدگی(Coupling) و چسبندگی(Cohesion) دو شاخص اصلی و معیاری برای کیفیت سیستم هستند. در یک سیستم نرم افزاری، همیشه تلاش بر این بوده که چسبندگی حداکثر شود و جفت شدگی حداقل(Highly Cohesion and Loosely Coupling). در این درس به این دو مفهوم میپردازیم و به طور دقیق تر به مفهوم Coupling در یک سیستم توزیع شده تمرکز می کنیم.

ادامه خواندن “مفهوم Coupling در سیستم های توزیع شده”

سیستم توزیع شده(Distributed System) چیست؟

حتما میدانید که سیستم عامل چیست. ویندوز یا لینوکس یا Mac OS از انواع سیستم عامل های مختلف هستند. حتی Android و IOS نیز نوعی سیستم عامل هستند که بر روی موبایل های امروز به فراوانی دیده می شوند. سیستم عامل، یک واسط کاربری در اختیار شما قرار میدهد تا به راحتی بتوانید از کامپیوتر خود استفاده کنید. سیستم عامل تمامی عملیات پنهانی(Background Operation) را برای شما انجام می دهد. مدیریت پروسه ها، مدیریت فایل سیستم ها و… از وظایف سیستم عامل هستند.

ادامه خواندن “سیستم توزیع شده(Distributed System) چیست؟”

زبان برنامه نویسی Groovy چیست؟

Groovy یک زبان برنامه نویسی مبتنی بر پلتفرم جاوا است. Groovy یک زبان برنامه نویسی پویا(Dynamic Programming Language) است. این زبان که یک زبان اسکریپتی حساب میشود، میتواند به راحتی با برنامه های جاوا و کتابخانه های این زبان، ارتباط برقرار کند.

ادامه خواندن “زبان برنامه نویسی Groovy چیست؟”