08 خرداد 1400
PostgreSQL، MariaDB و MongoDB چه نوع بانک‌های اطلاعاتی هستند؟
بانک‌های اطلاعاتی رابطه‌ای و غیر رابطه‌ای هر یک مزایای خاص خود را دارند و برای کاربردهای مختلفی استفاده می‌شوند. با این‌حال برخی از آن‌ها محبوبیت زیادی در مقایسه با دیگران دارند، زیرا عملکرد بهتری دارند. PostgreSQL، MariaDB و MongoDB از پرکاربردترین بانک‌ها در این زمینه هستند.

PostgreSQL

PostgreSQL یک سامانه مدیریت پایگاه داده‌های شی-رابطه‌ای است که برای سیستم‌عامل‌های مختلفی از جمله لینوکس، فری بی‌اس‌دی، ویندوز، و مک اواس ده موجود است. پستگرس‌کیوال توسط گروه توسعه سراسری پستگرس‌کیوال توسعه داده می‌شود، که شامل تعداد زیادی از افراد داوطلب است. پستگرس‌کیوال بخش اعظم استاندارد اس‌کیوال:۲۰۰۸ را پیاده‌سازی می‌کند، سازگار با ACID  است، کاملاً تراکنشی است (این شامل شرح‌های تعریف داده نیز می‌شود)، دارای نوع داده‌ها، عملگرها، روش‌های فهرست، توابع، توابع جمع‌بندی، زبان‌های رویه‌ای قابل توسعه است، و دارای افزونه‌های بسیاری است که توسط دیگران ایجاد شده است.پستگرس‌کیوال از بخش اعظم زبان اس‌کیوال پشتیبانی می‌کند، و بسیاری از امکانات مدرن از جمله پرس‌وجوهای پیچیده، کلیدهای خارجی، تریگرها، دیدها، تمامیت تراکنشی و کنترل همروندی چندنسخه‌ای را ارائه می‌کند. علاوه بر این، کاربران قادر به توسعه پستگرس‌کیوال به روش‌های مختلف هستند، به عنوان مثال کاربران قادر به اضافه کردن قابلیت‌های دیگری مثل انواع داده، توابع، عملگرها، توابع تجمیعی، روش‌های فهرست، زبان‌های رویه‌ای و لفافه‌های خارجی داده هستند.

زبان‌های رویه‌ای

پستگرس‌کیوال اجازه می‌دهد که توابع تعریف شده توسط کاربر در زبانی علاوه بر اس‌کیوال و سی نیز نوشته شود. این زبان‌های دیگر معمولاً زبان‌های رویه‌ای نامیده می‌شوند. زبان‌های رویه‌ای از بخش‌های توکار پستگرس‌کیوال نیستند و به صورت ماژول‌های قابل بارگذاری استفاده می‌شوند. در حال حاضر چهار زبان رویه‌ای همراه توزیع استاندارد پستگرس‌کیوال وجود دارد: پی‌ال/پی‌جی‌اس‌کیوال (PL/pgSQL)، پی‌ال/تی‌سی‌ال (PL/TCL)، پی‌ال/پرل (PL/Perl)، و پی‌ال/پایتون (PL/Python). به عنوان مثال برای ایجاد تابعی با استفاده از پی‌ال‌پایتون که کمینه دو عدد را محاسبه می‌کند، می‌توانیم به صورت زیر عمل کنیم:

CREATE EXTENSION IF NOT EXISTS plpythonu;

CREATE FUNCTION pymin(a integer, b integer)

  RETURNS integer

AS $$

  if a <b:

    return a

  return b

$$ LANGUAGE plpythonu;

لفافه‌های خارجی داده

از نسخه ۹٫۱ به بعد، پستگرس‌کیوال می‌تواند از داده‌های سایر سیستم با استفاده از لفافه‌های خارجی داده (Foreign Data Wrappers) استفاده کند. با استفاده از این امکان، می‌توان جدولی ساخت که منبع اطلاعاتش هر منبع خارجی، مانند فایل موجود در سیستم فایل، یا پایگاه داده دیگر، یا یک وب سرویس باشد. این به این معنی است که پرس‌وجوها می‌توانند این منابع داده را مانند جدوال عادی استفاده کنند، و حتی این جدول‌ها را با جدول‌های عادی پیوند دهد. لیستی از لفافه‌های خارجی داده در ویکی پستگرس‌کیوال موجود است. به عنوان مثال، فرض کنید یک فایل دارید که هر رکورد آن در یک سطر قرار دارد و مقادیر فیلدها با کاراکتر «|» از هم جدا شده است، و هر رکورد شامل سه فیلد نام، شهر، و سن است. به صورت زیر می‌توان یک جدول ایجاد کرد که منبع داده‌هایش این فایل است:

CREATE FOREIGN TABLE person {

    name text,

    city text,

    age int4

} SERVER file_server

OPTIONS (format 'text', filename '/path/to/file', delimiter '|', null '');

برای اینکه بتوان تعریف بالا را انجام داد، ابتدا باید افزونه file_fdw و سرور file_server را ایجاد کرد:

CREATE EXTENSION IF NOT EXISTS file_fdw;

CREATE SERVER file_server FOREIGN DATA WRAPPER file_fdw;

MongoDB

مانگودی‌بی (MongoDB) یک پایگاه داده‌های سند-گرای متن‌باز، کارا، مقیاس‌پذیر، بدون نیاز به طرح‌بندی اولیه نوشته شده در زبان برنامه‌نویسی سی++ است. هدف مانگودی‌بی پرکردن فاصله ذخیره‌بندی‌های کلید/مقداری که سریع و مقیاس پذیر هستند و سامانه‌های سنتی مدیریت پایگاه داده رابطه‌ای که درخواست‌های غنی و عملکرد عمیقی دارند— بوده‌است. مانگودی‌بی برای رفع مشکلاتی طراحی شده که با پایگاه داده‌های رابطه‌ای به سادگی رفع نمی‌شوند؛ برای مثال اگر پایگاه داده کارسازهای زیادی را دربرگیرد. مانگودی‌بی به جای اینک همانند پایگاه‌های داده‌های رابطه‌ای کلاسیک داده‌ها را در جداول ذخیره کند، داده‌های ساختاریافته را در اسنادی با قالبی شبیه به جی‌سون (مانگودی‌بی این قالب را بی‌سون(BSON) می‌نامد) ذخیره‌سازی می‌کند، و بدین ترتیب یکپارچه‌سازی داده‌ها را در برخی اقسام برنامه‌های کاربردی آسان‌تر و سریع‌تر می‌کند. در زیر خلاصه‌ای از برخی از ویژگی‌های اصلی آمده‌است:

پرس و جوهای تک کاره: مانگودی‌بی از جستجو بر اساس فیلد، پرس و جوهای بازه‌ای، و جستجوهای با عبارت منظم پشتیبانی می‌کند.

فهرست بندی: هر فیلدی در مانگودی‌بی قابل فهرست بندی است. فهرست‌های ثانویه نیز موجود هستند.

انعکاس: مانگودی‌بی از انعکاس تابع-متبوع (master-slave) پشتیبانی می‌کند. هر متبوعی قادر به انجام نوشتن‌ها و خواندن‌ها است. یک تابع داده‌ها را از متبوع رونوشت می‌کند و تنها برای خواندن‌ها یا پشتیبانی به کار می‌رود. تابع‌ها توانایی انتخاب متبوع جدید در صورت از کار افتادن متبوع فعلی را دارند.

توازن بار: مانگودی‌بی با استفاده از بخش‌بندی (sharding) قابل مقیاس پذیری به صورت افقی است. شخص توسعه دهنده کلید بخش‌بندی را انتخاب می‌کند که مشخص می‌کند داده در یک مجموعه چگونه توزیع خواهد شد. داده بر مبنای کلید بخش‌بندی به بازه‌های مختلف تکه‌تکه می‌شود و در بخش‌های مختلف توزیع می‌شود. (هر بخش یک متبوع با یک یا چند تابع است).

ذخیره‌سازی فایل: از مانگودی‌بی می‌توان به عنوان یک سیستم فایل استفاده کرد و از مزایای توازن بار و انعکاس داده در چندین ماشین برای ذخیره فایل‌های استفاده کرد.

تجمیع: برای پردازش دسته‌ای داده‌های و عملیات تجمیع می‌توان از نگاشت‌کاهش استفاده کرد.

اجرای جاواسکریپت سمت سرور

مجموعه‌های دربسته

برای اطلاعات بیشتر درباره موارد بالا به کتابچه ی توسعه‌دهندگان مانگودی‌بی مراجعه کنید.

موارد استفاده و استقرار

با توجه به مقاله «موارد استفاده» در وب سایت مانگودی‌بی، مانگودی‌بی برای موارد زیر مناسب است:

بایگانی و ثبت رخدادها

سامانه‌های مدیریت محتوا و سندها

تجارت الکترونیکی

بازی سازی

مسئله‌های حجم بالا

موبایل

نگهداری داده در یک وب سایت

پروژه‌های که از روش‌های توسعه چابک استفاده می‌کنند

آمار و تحلیل‌های بی‌درنگ

انگودی‌بی داده‌های دارای ساختار را در اسنادی با قالبی شبیه جی‌سون (JSON) به اسم بی‌سون (BSON) ذخیره می‌کند. در مانگودی‌بی داده‌ها دارای طرح از پیش تعیین شده نیستند.

یک عنصر داده سند (document) نامید می‌شود، و سندها در مجموعه‌ها (collection) ذخیره می‌شوند. هر مجموعه ممکن است دارای هر تعداد از سندها باشد.

در مقایسه با پایگاه‌های داده رابطه‌ای، می‌توان گفت که مجموعه‌ها شبیه جدول‌ها، و سندها شبیه رکوردها هستند؛ ولی یک تفاوت بزرگ وجود دارد: تمام رکورد در یک جدول باید دارای فیلدهای یکسان و با ترتیب یکسان باشند، اما هر سند در یک مجموعه ممکن است دارای فیلدهای متفاوتی از سندهای دیگر باشد. تنها الزام برای طرح‌های سندها (علاوه بر محدودیت‌های اندازه) این است که هر سندی باید دارای فیلد '_id' با مقدار منحصر به فرد و غیر آرایه‌ای باشد.

MariaDB

ماریادی‌بی (MariaDB) یک سامانه مدیریت دادگان است که انشعابی از مای‌اس‌کیوال شمرده می‌شود.

برنامه‌های موجود برای مای‌اس‌کیوال باید بتوانند بدون مشکل و در برخی سناریوهای خاص با عملکرد بهتر در ماریادی‌بی اجرا شوند. به جز بهبود عملکرد نسبت به مای‌اس‌کیوال، ماریادی‌بی تحت پروانه آزاد جی‌پی‌ال ارائه می‌شود که این موضوع با توجه به ابهاماتی که در مورد مجوزهای آینده مای‌اس‌کیوال وجود دارد دارای اهمیت است. پس از اینکه شرکت سان مای‌اس‌کیوال را خریداری کرد، مانتی ویندنیوس که از بنیانگذاران مای‌اس‌کیوال است در پی اختلاف نظر در مورد فرایند توسعه مای‌اس‌کیوال شرکت سان را ترک کرد و با بنیانگذاری مانتی پروگرم ای‌بی به توسعه ماریادی‌بی پرداخت. به گفته ویندنیوس یکی از اهداف اصلی ایجاد ماریادی‌بی ایجاد محیطی باز برای مشارکت جامعه کاربری در فرایند توسعه است. ماریادی‌بی از ماریا استوریج انجینبه عنوان موتور ذخیره‌سازی اصلی‌اش استفاده می‌کند. نرم‌افزارهای کاربردی زیر رسماً از ماریادی‌بی پشتیبانی می‌کنند که از آن جمله باید به جوملا، وردپرس، دروپال، Kajona، مدیاویکی، پی‌اچ‌پی‌مای‌ادمین، Plone و SaltOS اشاره کرد.با توجه به مقاله «موارد استفاده» در وب سایت مانگودی‌بی، مانگودی‌بی برای موارد زیر مناسب است:

بایگانی و ثبت رخدادها

سامانه‌های مدیریت محتوا و سندها

تجارت الکترونیکی

بازی سازی

مسئله‌های حجم بالا

موبایل

نگهداری داده در یک وب سایت

پروژه‌های که از روش‌های توسعه چابک استفاده می‌کنند

آمار و تحلیل‌های بی‌درنگ

ابزارهای مانگودی‌بی

پس از نصب مانگودی‌بی، دستورهای زیر در دسترس هستند:

mongo: شل تعاملی که برای مشاهده، افزودن، تغییر، و حذف داده در پایگاه‌های داده، و همچنین مشاهده اطلاعات انعکاس، تنظیم بخش‌بندی، خاموش کردن سرورها، اجرای جاوااسکریپت، … به کار می‌رود.

mongostat: برای مشاهده فهرست خلاصه آمار وضعیت نمونه در حال اجرای مانگودی‌بی به کار می‌رود: چه تعداد عملیات درج، تغییر، حذف، پرس و جو انجام شده‌است، و همچنین درصد زمانی که پایگاه داده در آن قفل بوده‌است و مقدار حافظه مصرف شده توسط پایگاه داده.

mongotop: برای پیگری مدت زمانی که مانگودی‌بی صرف خواندن و نوشتن داده می‌کند به کار می‌رود.

mongoimport, mongoexport: برای تبدیل مجموعه‌ها به و بازیابی مجموعه‌ها از قالب‌های JSON, CSV، یا TSV به کار می‌روند.

mongodump, mongorestore: برای تهیه نسخه پشتیبان و بازیابی از نسخه پشتیبان به کار می‌روند.

برای اطلاعات بیشتر در این زمینه به آدرس https://www.21twelveinteractive.com/mysql-vs-mongodb-vs-postgresql-vs-mariadb/ مراجعه کنید.

ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را می‌توانید از کتابخانه‌های عمومی سراسر کشور و نیز از دکه‌های روزنامه‌فروشی تهیه نمائید.

ثبت اشتراک نسخه کاغذی ماهنامه شبکه     
ثبت اشتراک نسخه آنلاین

 

کتاب الکترونیک +Network راهنمای شبکه‌ها

  • برای دانلود تنها کتاب کامل ترجمه فارسی +Network  اینجا  کلیک کنید.

کتاب الکترونیک دوره مقدماتی آموزش پایتون

  • اگر قصد یادگیری برنامه‌نویسی را دارید ولی هیچ پیش‌زمینه‌ای ندارید اینجا کلیک کنید.

ایسوس

نظر شما چیست؟