پست‌گرس‌کیوال

از ویکی‌پدیا، دانشنامهٔ آزاد
(تغییرمسیر از پست‌گر اس‌کیوال)
پرش به: ناوبری، جستجو
پست‌گر اس‌کیوال
Postgresql elephant.svg
توسعه‌دهنده(ها) گروه توسعه سراسری پستگرس‌کیوال
انتشار پایدار ۹.۳.۴ / ۲۰ مارس ۲۰۱۴؛ ۲۷۷ روز پیش
نوشته‌شده به سی (زبان برنامه‌نویسی)
سیستم‌عامل چندسکویی
گونه پایگاه داده‌های شی‌رابطه‌ای
پروانه پروانه پستگرس‌کیوال[۱][۲][۳]
وب‌گاه www.postgresql.org

پُستگرس‌کیواِل (به انگلیسی: PostgreSQL)، یا به طور ساده تر پُستگرس، یک سامانه مدیریت پایگاه داده‌های شی-رابطه‌ای است[۴] که برای سکوهای مختلفی از جمله لینوکس، فری بی‌اس‌دی، ویندوز، و مک اواس ده موجود است[۵]. پستگرس‌کیوال توسط گروه توسعه سراسری پستگرس‌کیوال توسعه داده می‌شود، که شامل تعداد زیادی از افراد داوطلب است.

پستگرس‌کیوال بخش اعظم استاندارد اس‌کیوال:۲۰۰۸ را پیاده‌سازی می‌کند[۶]، ACID-موافق است[۷]، کاملا تراکنشی است (این شامل شرح‌های تعریف داده نیز می شود)[۸]، دارای نوع داده‌ها، عملگرها، روش‌های فهرست، توابع، توابع جمع‌بندی، زبان‌های رویه‌ای قابل توسعه است، و دارای افزونه‌های بسیاری است که توسط دیگران ایجاد شده است [۷].

تاریخچه[ویرایش]

پستگرس‌کیوال تکامل یافته پروژه پستگرس (POSTGRES) در دانشگاه برکلی است[۹]. پستگرس ادامه پایگاه داده رابطه‌ای اینگرس (INGRES) بود[۱۰].

پروژه پستگرس برکلی[ویرایش]

پیاده‌سازی پستگرس در سال ١٩٨۶ آغاز شد[۹]. مفهوم‌های اولیه در مقاله «طراحی پستگرس» ارائه شد، و تعریف مدل داده اولیه در مقاله «مدل داده پستگرس» معرفی شد. طراحی سامانه قواعد در «طراحی سامانه قواعد پستگرس» شرح داده شد. معماری و منطق مدیر ذخیره‌سازی در «طراحی سامانه ذخیره‌سازی پستگرس» توضیح داده شد.

پستگرس ٩۵[ویرایش]

در سال ١۹٩۴، «اندرو یو» و «جولی چن» مفسر زبان اس‌کیوال (SQL) را به پستگرس اضافه کردند، که این نسخه از محصول با عنوان «پستگرس ۹۵» در وب به عنوان نسخه‌ منبع‌بازی از کد اصلی پستگرس برکلی ارائه شد.

کد پستگرس ٩۵ کاملا با زبان سی استاندارد نوشته شده بود و از لحاظ حجم کد ٢۵ درصد کوچکتر بود. نسخه ١ پستگرس ٩۵ در آزمون وسیکانزین حدود ٣٠ الی ۵۰ درصد سریع‌تر از پستگرس ۴.۲ عمل می‌کرد[۹].

پستگرس‌کیوال[ویرایش]

در سال ١٩٩۶، واضح بود که نام «پستگرس ٩۵» نامی نیست که بتواند در طول زمان برجا بماند. به همین دلیل نام پستگرس‌کیوال انتخاب شد، تا هم رابطه با سیستم پستگرس اصلی نشان داده شود و هم امکانات استفاده از اس‌کیوال برجسته شود. همچنین، تصمیم گرفته شد که نسخه‌‌ها از ۶.٠ ادامه پیدا کنند، و نسخه‌گذاری پستگرس اصلی را ادامه دهند.

سکوها[ویرایش]

معماری های دستور عمل[ویرایش]

پُستگرس‌کیواِل بر روی هر کدام از معماری های زیر عمل می کند: ایکس۸۶، ایکس۸۶-۶۴، آی‌ای۶۴ ایتانیوم، پاور پی‌سی، پاور پی‌سی۶۴، S/۳۹۰، S/۳۹۰x، اسپارک، اسپارک ۶۴، آلفا، آرم، میپس، میپسل ، ام۶۸کی، و پی‌آ-ریسک[۵].

سیستم عامل ها[ویرایش]

پُستگرس‌کیواِل بر روی سیستم عامل های زیر موجود است: لینوکس (تمام توزیع های اخیر)، ویندوز (ویندوز ۲۰۰۰ SP4 و بعد)، فری بی اس دی، اپن‌بی‌اس‌دی، نت‌بی‌اس‌دی، مک اواس اکس، ای‌آی‌اکس، بی‌اس‌دی/او‌اس، اچ‌پی-یو‌اکس، آیریکس، اپن‌ ایندیانا، اپن سولاریس، و یونیکس ترو۶۴[۵].

قابلیت ها[ویرایش]

پستگرس‌کیوال از بخش اعظم زبان اس‌کیوال پشتیبانی می‌کند، و بسیاری از امکانات مدرن را نیز در اختیار می‌گذارد[۴]:

همچنین، کاربران قادر به توسعه پستگرس‌کیوال به روش‌های مختلف هستند، به عنوان مثال کاربران قادر به افزودن موارد زیر هستند[۴]:

  • انواع داده،
  • توابع،
  • عملگرها،
  • توابع تجمیعی،
  • روش‌های فهرست،
  • زبان‌‌های رویه‌ای،
  • لفافه‌های خارجی داده.

زبان‌های رویه‌ای[ویرایش]

پستگرس‌کیوال اجازه می‌دهد که توابع تعریف شده توسط کاربر در زبانی علاوه بر اس‌کیوال و سی نیز نوشته شود. این زبان‌های دیگر معمولا زبان‌های رویه‌ای نامیده می‌شوند[۱۱]. زبان‌های رویه‌ای از بخش‌های توکار پستگرس‌کیوال نیستند و به صورت ماژول‌های قابل بارگزاری استفاده می‌شوند.

در حال حاضر چهار زبان رویه‌ای همراه توزیع استاندارد پستگرس‌کیوال وجود دارد: پی‌ال/پی‌جی‌اس‌کیوال (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;


قبل از نسخه ٩٫۳، لفافه‌های خارجی داده تنها خواندنی بودند. از نسخه ٩٫۳ به بعد امکان نوشتن در لفافه‌های خارجی داده نیز افزوده شد.[۱۳]

انواع داده[ویرایش]

انواع داده‌های وسیعی در پستگرس‌کیوال پشتیبانی می‌شوند[۱۴]، که شامل موارد زیر است:

  • بولی
  • اعداد با دقت دلخواه
  • کاراکتری
  • دودویی
  • JSON
  • تاریخ/زمان
  • پول
  • شمارشی (Enum)
  • رشته بیتی
  • هندسی
  • نوع جستجوی رشته
  • ترکیبی
  • آرایه‌ها
  • انواع اولیه هندسی
  • بازه
  • آدرس‌های IPv4 و IPv6
  • بلوک‌های CIDR و آدرس‌های MAC
  • XML
  • UUID

فهرست‌ها[ویرایش]

از فهرست‌ها می‌توان برای بهبود عملکرد پایگاه‌داده استفاده کرد. فهرست‌ها به سرویس‌دهنده پایگاه‌داده اجازه می‌دهد تا سطرهای خاص را سریع‌تر از حالت بدون فهرست بیابد.

انواع مختلف فهرست در پستگرس‌کیوال موجود است[۱۵]، که شامل موارد زیر می‌شود:

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

قابلیت اطمینان[ویرایش]

پستگرس‌کیوال از واقعه‌نگاری قبل نوشتن (به انگلیسی: Write-Ahead Logging یا WAL) برای اطمینان از جامعیت داده استفاده می‌کند[۱۶]. به طور خلاصه، مفهوم اصلی WAL این است که تغییرات فایل‌های داده (محل ذخیره‌سازی جدول‌ها و فهرست‌ها) تنها در صورتی باید انجام شود که این تغییرات واقعه‌نگاری شده‌اند، و رکوردهای واقعه‌نگاری مرتبط در حافظه دایمی ثبت شده است. در اینصورت، درصورت بروز اشکال در اجرای پایگاه‌داده، می‌توانیم با استفاده از وقایع ثبت‌شده داده‌ها را بازیابی کنیم.

کنترل همروندی چندنسخه‌ای[ویرایش]

پستگرس‌کیوال از کنترل همروندی چندنسخه‌ای (به انگلیسی: Multiversion Concurrency Control یا MVCC) برای ثبات داده استفاده می‌کند[۱۷]. یعنی اینکه هر تراکنش، صرف‌نظر از وضعیت فعلی پایگاه‌داده، نسخه‌ای از پایگاه‌داده که مربوط به زمانی پیش است را می‌بیند. این ویژگی تراکنش‌ها را از مشاهده داده‌ بی‌ثباتی که در طول اجرای تراکنش‌های همزمان بر روی سطرهای یکسان ایجاد می‌شود محافظت می‌کند.

مزیت اصلی کنترل همروندی چندنسخه‌ای این است که قفل‌های استفاده شده برای خواندن داده با قفل‌های استفاده شده برای نوشتن داده متفاوت است، و بنابراین نوشتن هرگز مانع خواندن و خواندن هرگز مانع نوشتن نمی‌شود[۱۷].

رابط های برنامه‌نویسی[ویرایش]

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

کاربران برجسته[ویرایش]

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

جستارهای وابسته[ویرایش]

پانویس[ویرایش]

  1. "پروانه پستگرس‌کیوال توسط اواس‌آی تایید شد". 2010-02-18. Retrieved 2010-02-18. 
  2. "پروانه پستگرس‌کیوال اواس‌آی". 2010-02-20. Retrieved 2010-02-20. 
  3. "پروانه". گروه توسعه سراسری پستگرس‌کیوال. Retrieved 2010-09-20. 
  4. ۴٫۰ ۴٫۱ ۴٫۲ مستندات پستگر اس‌کیو‌ال: پستگرس‌کیو‌ال چیست؟
  5. ۵٫۰ ۵٫۱ ۵٫۲ مستندات پستگرس‌کیوال: سکوهای پشتیبانی شده
  6. مستندات پسترگس‌کیوال: پیروی از اس‌کیوال
  7. ۷٫۰ ۷٫۱ درباره پستگرس‌کیوال
  8. مستندات پستگرس‌کیوال: تراکنش‌ها
  9. ۹٫۰ ۹٫۱ ۹٫۲ مستندات پستگرس‌کیوال: تاریخچه
  10. مقاله طراحی پستگرس
  11. مستندات پستگرس‌کیوال - توابع زبان‌های رویه‌ای
  12. پستگرس‌کیوال ۹.۱ عرضه شد
  13. جدول‌های خارجی قابل نوشتن
  14. مستندات پستگرس‌کیوال - انواع داده
  15. مستندات پستگرس‌کیوال: انواع فهرست
  16. مستندات پستگرس‌کیوال - واقعه‌نگاری قبل نوشتن
  17. ۱۷٫۰ ۱۷٫۱ مستندات پستگرس‌کیوال - کنترل همروندی - معرفی
  18. اندازه مهم است: یاهو ادعا می‌کند که پایگاه داده ۲ پتابایتی بزرگترین و مشغول‌ترین پایگاه‌داده است
  19. یاهو ادعای رکورد با پایگاه‌داده پتابایتی می‌کند
  20. صفحه گیت‌هاب ردیت - راهنمای نصب
  21. بالا نگه داشتن اینستاگرام با بیش از یک میلیون کاربر جدید در ۱۲ ساعت
  22. وب‌لاگ جنی‌دات‌کام - قطعی هفته پیش
  23. پستگرس در دیسکاس
  24. ویکی اپن‌استریت‌مپ - پایگاه‌داده
  25. سونی آنلاین به جای اوراکل از پایگاه‌داده متن‌باز استفاده می‌کند
  26. لیست ایمیلی پستگرس‌اس‌کیوال - ناسا به کمک پستگرس-ناگیون نیاز دارد
  27. پستگرس هروکو