اگه با دیتا سر و کار دارین یا رشته دانشگاهیتون مهندسی کامپیوتر هست، حتما تا حالا کلمه پایگاه داده یا database رو زیاد شنیدین. در این مقاله میخوایم به شکل خیلی ساده یاد بگیریم پایگاه داده واقعا چی هست و با انواع database آشنا بشیم. اما قبل از این که بگیم دیتابیس چیه، خوبه با مفهوم «داده» آشنا بشیم.
داده (data) چیست؟
یک چیز رو توی ذهنتون در نظر بگیرید. هر چیزی میتونه باشه؛ از اشیای فیزیکی مثل خودکار و کتاب و میز گرفته تا مفاهیم انتزاعیتر مثل احساس و اسم یک فرد. به واقعیتهایی (facts) که در مورد این «چیز» وجود دارند، داده (data) میگیم. چند نمونه داده: اسم شما، سن، اندازه قد، وزن، یک تصویر، یک فایل pdf و ….
پایگاه داده چیست؟
دیتابیس یا پایگاه داده، مجموعهای از دادههای ساختاریافته (systematic) هست. منظورمون از ساختاریافته چیه؟ ببینید اگر ما همه دیتاهایی که داریم رو بدون نظم خاصی داخل یه فضای ذخیرهسازی (مثلا فلش مموری) بریزیم، به مشکلات مختلفی میخوریم؛ مثلا موقع دسترسی به یک داده خاص، باید کل دادهها رو بررسی کنیم تا به داده مورد نظرمون برسیم. پس دیتابیس، دادهها رو به شکل منظمی ذخیره میکنه و به ما کمک میکنه بتونیم راحتتر با این دادهها کار کنیم.
بیاید به عنوان مثال، دیتابیس شبکه اجتماعی فیسبوک رو بررسی کنیم. این دیتابیس باید بتونه عملیاتهای ذخیرهسازی، تغییر و نمایش این دادهها رو انجام بده: اعضای شبکه، دوستان آنها، فعالیتها و پیامهای هر عضو، تبلیغات و …. به همین شکل میشه مثالهای خیلی زیادی برای دیتابیس مطرح کرد.
انواع پایگاه داده (database)
برای این که درک بهتری از دیتابیس یا همون پایگاه داده داشته باشیم، خوبه که با انواع database آشنا بشیم. در ادامه مهمترین انواع پایگاه داده رو بهتون معرفی میکنیم:
پایگاه داده توزیعشده (distributed database)
همین طور که از اسم این نوع پایگاه داده مشخص هست، در دیتابیس توزیعشده، همه دادهها در یک جای متمرکز ذخیره نمیشن و دادههای ما بین دیتابیسهای مختلف که در نقاط مختلفی قرار گرفتند، توزیع میشن. یه فایده مهمی که دیتابیس توزیعشده داره اینه که وقتی بخواین دیتابیس رو گسترش بدین و یونیتهای جدیدی به اون اضافه کنین، نیاز نیست کلیت سیستم رو تغییری بدین و بدون این که سیستم از دسترس خارج بشه، یه ماژول جدید اضافه میشه. علاوه بر این، پایگاه دادههای توزیعشده، پایداری بیشتری دارن و اگه یه بخش از سیستم از دسترس خارج بشه، بخشهای دیگه همچنان قابل استفاده هستند. سیستمهای مدیریت پایگاه داده توزیعشده (DDBMS) به ما کمک میکنن تا بتونیم راحتتر پایگاه دادههای مختلف که یکپارچه هم نیستند، مدیریت کنیم. با DBMSها یا همون سیستمهای مدیریت دیتابیس، در انتهای همین مقاله بیشتر آشنا میشیم.
پایگاه داده رابطهای (relational database)
در این نوع دیتابیس، رابطهی بین دادهها به شکل یک جدول نشون داده میشه. در واقع پایگاه داده رابطهای یه جدول با چندین ستون و چندین سطر هست که دادهها داخل سلولهای این جدول جایگذاری شدهاند. میشه گفت سیستمهای مدیریت پایگاه رابطهای، معروفترین و پراستفادهترین نوع سیستم مدیریت دیتابیس هستند. چند نمونه از RDBMSها: MySQL و Microsoft SQL Server.
پایگاه داده شیگرا (object oriented database)
قبل از هر چیزی، پیشنهاد میکنیم اگه مقاله برنامهنویسی شیگرا و پارادایمهای برنامهنویسی رو نخوندی، حتما برو و بخون چون میتونه خیلی واست جذاب باشه. خب بریم سراغ موضوع خودمون. در پایگاه داده شیگرا، ما دادهها رو به شکل object ذخیره میکنیم (اگه مفهوم آبجکت واست گنگه، باید بری و اون مقاله برنامهنویسی شیگرا رو بخونی). یه سیستم مدیریت پایگاه داده شیگرای خیلی معروف، PostgreSQL هست. یه مقاله دیگه که میتونه بهتون کمک کنه درک بهتری از داده داشته باشین، مقاله آشنایی با ساختمان داده هست.
پایگاه داده متمرکز (centralized database)
این نوع پایگاه داده در مقابل پایگاه داده توزیعشده قرار میگیره. یه نکتهای رو لازمه همین جا بگیم. یه پایگاه داده میتونه مثلا هم متمرکز باشه و هم شیگرا؛ در واقع یه دیتابیس میتونه چند نوع مختلف از انواعی که الان داریم توضیح میدیم باشه. خب پایگاه داده متمرکز بر خلاف دیتابیس توزیعشده، داخل یک سیستم مرکزی (معمولا یک سرور) قرار میگیره. کمپانیهای مختلف اکثرا از پایگاه دادههای متمرکز استفاده میکنند.
پایگاه داده متنباز (open source database)
کد این نوع دیتابیس برای استفاده همگان موجود هست. سازمانهای مختلف میتونن برن و این کدها رو بردارن و متناسب با نیازهای خودشون، تغییرات مختصری ایجاد کنند تا برای اونها قابل استفاده بشه.
پایگاه داده ابری (cloud database)
اگه با فناوریهای ابری آشنا نیستی، اول از همه پیشنهاد میکنیم مقالات رایانش ابری چیست و آمازون وب سرویس رو بخونی. دیتابیس ابری یک نوع پایگاه داده توزیعشده هست که تمام فوایدی که بالاتر برای دیتابیسهای توزیعشده گفتیم رو داره. دیتابیسهای ابری معمولا توسط شرکتهایی ارائه میشه که مجموعهای از خدمات ابری رو به مشتریان عرضه میکنن.
انبار داده (data warehouse)
انبار داده سیستمی هست که به ما کمک میکنه دیتای هیستوریکال رو بهتر ذخیرهسازی و آنالیز کنیم؛ در واقع انبار داده از سورسهای مختلفی، دیتاهای متفاوتی رو جمع میکنه و همه رو یک جا قرار میده. انبار داده به ما کمک میکنه که برای تحلیل دادههای تاریخی، از دیتابیس اصلی (transactional database) استفاده نکنیم که فشار زیادی روی اون وارد نشه؛ در عوض همهی دادهها رو داخل یه انبار داده میریزیم که فقط برای کارهای تحلیلی از اون استفاده میکنیم.
پایگاه داده NoSQL
این نوع پایگاه داده، معمولا موقعی به کار میره که حجم دادهها خیلی زیاد باشن و ساختارمند هم نباشند. اگه با کلانداده آشنایی نداری، حتما مقاله کلان داده چیست رو بخون.
پایگاه داده گرافی (graph database)
این نوع پایگاه داده، از تئوری گراف استفاده میکنن تا به شکل بهینهای، دادهها را نگهداری و بین اونها سرچ کنند. دیتابیس گرافی معمولا موقعی استفاده میشه که بین دادهها هم یه رابطه گرافمانند وجود داشته باشه؛ مثلا دادههای یک شبکه اجتماعی.
پایگاه داده شخصی (personal database)
این پایگاه داده برای ذخیره کردن اطلاعات موجود در کامپیوترهای شخصی استفاده میشه. از اونجایی که معمولا تعداد افراد محدودی از این دیتابیس استفاده میکنند، ساخت و نگهداری اون پیچیدگی زیادی نداره.
پایگاه داده سندمحور (document oriented database)
در این پایگاه داده، مجموعهای از داکیومنتها نگهداری میشه که فرمتشون معمولا چیزهایی شبیه JSON و XML هست. یکی از مزیتهای دیتابیس سندمحور اینه که هر رکورد دیتابیس میتونه به تعداد نامحدودی ویژگی داشته باشه و هر ویژگی هم میتونه از دیتاتایپ دلخواه باشه.
اجزای دیتابیس یا پایگاه داده چیست؟
یک دیتابیس ۵ بخش اصلی داره:
۱-سختافزار دیتابیس
سختافزار شامل این چیزا میشه: کامپیوترها یا سرورها، تجهیزات ورودی و خروجی، دستگاههای ذخیرهسازی (storage devices) و چیزهایی شبیه به این. بخش سختافزار، این امکان رو به ماه میده که از طریق نرمافزار، با دنیای واقعی ارتباط بگیریم.
۲-نرمافزار دیتابیس
یک سری نرمافزار وجود دارن که ما از اونها برای مدیریت پایگاه داده استفاده میکنیم. علاوه بر نرمافزار خود دیتابیس، نرمافزارهای دیگهای مثل سیستم عامل و نرمافزارهای شبکه به ما کمک میکنند با دیتابیس ارتباط برقرار کنیم و از طریق شبکههایی مثل اینترنت به اون دسترسی پیدا کنیم.
۳-دادههای دیتابیس
خب این بخش هم که بدیهیه!
۴-فرایندهای دیتابیس
یک سری دستورات از پیش تعیینشده هستند که به امکان میدهند با وارد کردن اون دستورات و با کمک DBMS، دیتابیس رو مدیریت کنیم.
۵-زبان دسترسی به دیتابیس
یک سری زبان خاص مثل SQL وجود دارند که مثل بقیه زبانها از کدهای مختلفی تشکیل شدهاند. با وارد کردن کد مخصوص، میتونیم فرایند مورد نظرمون رو پیادهسازی کنیم؛ مثلا یه رکورد به دیتابیس اضافه کنیم یا یه رکورد خاص رو پیدا کنیم.
سیستم مدیریت پایگاه داده (DBMS) چیست؟
سیستم مدیریت پایگاه داده یا Database Management System، مجموعهای از برنامههای مختلف هست که کاربر دیتابیس رو قادر میکنه به پایگاه داده دسترسی داشته باشه، دادهها رو تغییر بده، از دادهها گزارش بگیره و اونها رو نمایش بده. همچنین DBMS به ما کمک میکنه تا سطح دسترسی افراد مختلف به دیتابیس رو تعیین کنیم.
تاریخچه سیستمهای مدیریت دیتابیس
مهمترین اتفاقات تاریخی DBMS اینا هستن:
- ۱۹۶۰ – یه آقایی به اسم Charles Bachman، اولین DBMS رو ساخت
- ۱۹۷۰ – یه متخصص کامپیوتر به اسم Edgar Codd، سیستم IBM’S Information Management رو معرفی کرد
- ۱۹۷۶ – فردی به اسم Peter Chen مدل ER رو معرفی کرد
- ۱۹۸۰ – مدل رابطهای (relational)، بین عده زیادی محبوبیت پیدا کرد
- ۱۹۸۵ – دیتابیس شیگرا به وجود آمد
- ۱۹۹۰ – از مفهوم شیگرایی در پایگاه داده رابطهای استفاده شد
- ۱۹۹۱ – مایکروسافت سیستم مدیریت پایگاه داده Microsoft Access رو معرفی کرد
- ۱۹۹۵ – اولین استفادهها از دیتابیس در شبکه
- ۱۹۹۷ – استفاده از XML در دیتابیسها مرسوم شد
فواید استفاده از DBMS
- سیستم مدیریت پایگاه داده روشهای مختلفی برای نگهداری دادهها و دسترسی به اونها به ما میده
- به راحتی به ما این امکان رو میده که سطح دسترسیهای مختلفی برای افراد تعیین کنیم
- برنامهنویس دیتابیس دیگه با جزئیات عملکرد دیتابیس درگیر نمیشه
- تابعهای موجود در DBMS برای ذخیره و پیدا کردن دادهها، خیلی بهینه عمل میکنن
- امنیت بالایی دارن
- یک DBMS به ما این امکان رو میده که افراد مختلف به طور همزمان به دیتابیس دسترسی داشته باشن، اما فقط یه کاربر میتونه به یه داده خاص به طور همزمان دسترسی داده باشه
- با استفاده از یک DBMS، زمان ما صرف نوشتن سیستم اختصاصی نمیشه
معایب استفاده از DBMS
- هزینههای سختافزار و نرمافزار DBMS زیاد هستن
- آموزش افراد برای استفاده از DBMS معمولا زمانبره
- یک DBMS نمیتونه محاسبات خیلی پیچیده رو انجام بده
مفهوم تراکنش (Transaction) در پایگاه داده
برای فهم مفهوم تراکنش بذارین یه مثال بزنیم. فرض کنید شما صاحب بانک هستین و یکی از مشتریان درخواست میکنه که ۱ میلیون تومان از حساب خودش کسر بشه و به حساب شخص دیگهای واریز بشه. اگه بعد از کسر پول از حساب مبدا، به هر دلیلی سیستم دچار مشکل بشه و واریز به حساب مقصد انجام نشه، مشکل خیلی بزرگی پیش اومده! در واقع به هیچ وجه نباید چنین اتفاقی بیوفته و اگه وسط کار سیستم دچار مشکل بشه، باید پول به حساب مبدا برگشت بخوره. ما به انتقال پول از یک حساب به حساب دیگه تراکنش میگیم. در واقع تراکنش فرایند معمولا چندمرحلهای هست که حتما حتما باید یا تمامی مراحل انجام بشه یا هیچ کدوم انجام نشه.
هر تغییری در دیتابیس، حتما باید به شکل یک تراکنش انجام بشه که مشکلی به وجود نیاد. تراکنش چهار ویژگی مهم (ACID) داره:
- اتمی بودن (Atomicity): همه یا هیچ!
- یکپارچگی (Consistency): توی مثال بانک، یعنی موجودی کل بانک قبل و بعد تراکنش برابر باشه
- ایزوله بودن (Isolation): همزمان چند نفر نباید بتونن روی یک دیتا کار کنن
- ماندگاری (Durability): وقتی تراکنش کامل بشه، حتی اگه بعدش خطایی رخ بده، تغییرات لازم توی دیتابیس انجام شده
تفاوت OLTP و OLAP
یک سیستم OLAP یا Online Analytical Processing، هدف ما آنالیز دادههای مختلف هست که از دیتابیسهای مختلف در یک انبار داده جمعآوری شدهاند؛ اما در یک سیستم OLTP یا Online Transactional Processing، هدف ما پردازش تراکنشهاست.
کاربردهای سیستم OLAP
- هر انبار داده (data warehouse)، یک OLAP است
- مثلا اگه یه فروشگاه اینترنتی بخواد میزان فروش موبایلهایش در بازههای مختلف رو تحلیل کنه، از OLAP استفاده میکنه
- همون فروشگاه اینترنتی با استفاده از سیستم OLAP، با توجه به تاریخچه رفتاری هر مشتری، صفحه اصلی سایت رو واسش شخصیسازی میکنه
کاربردهای سیستم OLTP
- بانکداری آنلاین
- سیستم رزرو غذا با تعداد محدود غذا
- اضافه کردن محصول به سبد خرید در فروشگاه اینترنتی وقتی موجودی کالا محدود باشه
منابع: GURU99 – TUTORIALPOINT – GEEKSFORGEEKS – GURU99
سلام
من دنبال تعریف با زبان ساده و قابل فهم بودم که اینجا یافتم
تشکر