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

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

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

 تاریخچه 
پستگرس‌کیوال تکامل یافته پروژه پستگرس (POSTGRES) در دانشگاه برکلی است.مستندات پستگرس‌کیوال: تاریخچه پستگرس ادامه پایگاه داده رابطه‌ای اینگرس (INGRES) بود.مقاله طراحی پستگرس

 پروژه پستگرس برکلی 
پیاده‌سازی پستگرس در سال ۱۹۸۶ آغاز شد. مفهوم‌های اولیه در مقاله «طراحی پستگرس» ارائه شد، و تعریف مدل داده اولیه در مقاله «مدل داده پستگرس» معرفی شد. طراحی سامانه قواعد در «طراحی سامانه قواعد پستگرس» شرح داده شد. معماری و منطق مدیر ذخیره‌سازی در «طراحی سامانه ذخیره‌سازی پستگرس» توضیح داده شد.

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

کد پستگرس ۹۵ کاملاً با زبان سی استاندارد نوشته شده بود و از لحاظ حجم کد ۲۵ درصد کوچکتر بود. نسخه ۱ پستگرس ۹۵ در آزمون وسیکانزین حدود ۳۰ الی ۵۰ درصد سریع‌تر از پستگرس ۴٫۲ عمل می‌کرد.

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

 تاریخچه انتشار 
+ تاریخچه انتشار انتشار اولین انتشار Latest minor version آخرین انتشار End oflife نقاط عطف ۶٫۰ ۱۳۷۵/۱۱/۱۰    اولین نسخه رسمی PostgreSQL، فهرست‌های منحصر بفرد، ابزار pg_dumpall، احراز هویت ۶٫۱ ۱۳۷۶/۰۳/۱۸  ۱۳۷۶/۰۴/۳۱  Multicolumn indexes, sequences, money data type, GEQO (GEnetic Query Optimizer) ۶٫۲ ۱۳۷۶/۰۷/۱۰  ۱۳۷۶/۰۷/۲۵  JDBC interface, triggers, server programming interface, constraints ۶٫۳ ۱۳۷۶/۱۲/۱۰  ۱۳۷۷/۰۱/۱۸ ۱۳۸۱/۱۲/۱۰ SQL-92 subselect ability, PL/pgTCL ۶٫۴ ۱۳۷۷/۰۸/۰۸  ۱۳۷۷/۰۹/۲۹ ۱۳۸۲/۰۸/۰۸ VIEWs (then only read-only) and RULEs, PL/pgSQL ۶٫۵ ۱۳۷۸/۰۳/۱۹  ۱۳۷۸/۰۷/۲۱ ۱۳۸۳/۰۳/۲۰ MVCC, temporary tables, more SQL statement support (CASE, INTERSECT, and EXCEPT) ۷٫۰ ۱۳۷۹/۰۲/۱۹  ۱۳۷۹/۰۸/۲۱ ۱۳۸۳/۰۲/۱۹ Foreign keys, SQL-92 syntax for joins ۷٫۱ ۱۳۸۰/۰۱/۲۴  ۱۳۸۰/۰۵/۲۴ ۱۳۸۵/۰۱/۲۴ Write-ahead log, outer joins ۷٫۲ ۱۳۸۰/۱۱/۱۵  ۱۳۸۴/۰۲/۱۹ ۱۳۸۵/۱۱/۱۵ PL/Python, OIDs no longer required, internationalization of messages ۷٫۳ ۱۳۸۱/۰۹/۰۶  ۱۳۸۶/۱۰/۱۷ ۱۳۸۶/۰۹/۰۶ Schema, table function, prepared query ۷٫۴ ۱۳۸۲/۰۸/۲۶  ۱۳۸۹/۰۷/۱۲ ۱۳۸۹/۰۷/۰۹ Optimization on JOINs and data warehouse functions ۸٫۰ ۱۳۸۳/۱۰/۳۰  ۱۳۸۹/۰۷/۱۲ ۱۳۸۹/۰۷/۰۹ Native server on Microsoft Windows, savepoints, tablespaces, point-in-time recovery ۸٫۱ ۱۳۸۴/۰۸/۱۷  ۱۳۸۹/۰۹/۲۵ ۱۳۸۹/۰۸/۱۷ Performance optimization, two-phase commit, table partitioning, index bitmap scan, shared row locking, roles ۸٫۲ ۱۳۸۵/۰۹/۱۴  ۱۳۹۰/۰۹/۱۴ ۱۳۹۰/۰۹/۱۴ Performance optimization, online index builds, advisory locks, warm standby ۸٫۳ ۱۳۸۶/۱۱/۱۵  ۱۳۹۱/۱۱/۱۹ ۱۳۹۱/۱۱/۱۹ Heap-only tuples, full text search, SQL/XML, ENUM types, UUID types ۸٫۴ ۱۳۸۸/۰۴/۱۰  ۱۳۹۳/۰۵/۰۲ ۱۳۹۳/۰۵/۰۲ Windowing functions, column-level permissions, parallel database restore, per-database collation, common table expressions and recursive queries ۹٫۰ ۱۳۸۹/۰۶/۲۹  ۱۳۹۴/۰۷/۱۶ ۱۳۹۴/۰۷/۱۶ Built-in binary streaming replication, hot standby, in-place upgrade ability, 64-bit Windows ۹٫۱ ۱۳۹۰/۰۶/۲۱  ۱۳۹۵/۰۸/۰۶ ۱۳۹۵/۰۸/۰۶ Synchronous replication, per-column collations, unlogged tables, serializable snapshot isolation, writeable common table expressions, SELinux integration, extensions, foreign tables ۹٫۲ ۱۳۹۱/۰۶/۲۰  ۱۳۹۶/۰۸/۱۸ ۱۳۹۶/۰۸/۱۸ Cascading streaming replication, index-only scans, native JSON support, improved lock management, range types, pg_receivexlog tool, space-partitioned GiST indexes ۹٫۳ ۱۳۹۲/۰۶/۱۸  ۱۳۹۷/۰۸/۱۷ ۱۳۹۷/۰۸/۱۷ Custom background workers, data checksums, dedicated JSON operators, LATERAL JOIN, faster pg_dump, new pg_isready server monitoring tool, trigger features, view features, writeable foreign tables, materialized views, replication improvements ۹٫۴ 2014-12-18  ۱۳۹۸/۱۱/۲۴ ۱۳۹۸/۱۱/۲۴ JSONB data type, ALTER SYSTEM statement for changing config values, ability to refresh materialized views without blocking reads, dynamic registration/start/stop of background worker processes, Logical Decoding API, GiN index improvements, Linux huge page support, database cache reloading via pg_prewarm, reintroducing Hstore as the column type of choice for document-style data. ۹٫۵ ۱۳۹۴/۱۰/۱۷  ۱۳۹۹/۰۲/۲۵ ۱۳۹۹/۱۱/۲۳ UPSERT, row level security, TABLESAMPLE, CUBE/ROLLUP, GROUPING SETS, and new BRIN index ۹٫۶ ۱۳۹۵/۰۷/۰۸  ۱۳۹۹/۰۲/۲۵ ۱۴۰۰/۰۸/۲۰ Parallel query support, PostgreSQL foreign data wrapper (FDW) improvements with sort/join pushdown, multiple synchronous standbys, faster vacuuming of large table ۱۰ ۱۳۹۶/۰۷/۱۳  ۱۳۹۹/۰۲/۲۵ ۱۴۰۱/۰۸/۱۹ Logical replication, declarative table partitioning, improved query parallelism ۱۱ ۱۳۹۷/۰۷/۲۶  ۱۳۹۹/۰۲/۲۵ ۱۴۰۲/۰۸/۱۸ Increased robustness and performance for partitioning, transactions supported in stored procedures, enhanced abilities for query parallelism, just-in-time (JIT) compiling for expressions ۱۲ ۱۳۹۸/۰۷/۱۱  ۱۳۹۹/۰۲/۲۵ ۱۴۰۳/۰۸/۲۴ Improvements to query performance and space utilization; SQL/JSON path expression support; generated columns; improvements  to internationalization, and authentication; new pluggable table storage interface. ۱۳   ۱۳۹۹/۰۳/۰۱  

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

 سیستم عامل‌ها 
پستگرس‌کیوال بر روی سیستم عامل‌های زیر موجود است: لینوکس (تمام توزیع‌های اخیر)، ویندوز (ویندوز ۲۰۰۰ 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

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

انواع مختلف فهرست در پستگرس‌کیوال موجود است،مستندات پستگرس‌کیوال: انواع فهرست که شامل موارد زیر می‌شود:
 درخت‌های بی
 درهم‌سازی (Hash)
 درخت جستجوی تعمیم‌یافته (GiST)
 درخت جستجوی تعیم‌یافته با فضای تقسیم‌شده (SP-GiST)
 فهرست معکوس تعمیم‌یافته (GIN)

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

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

 کنترل همروندی چندنسخه‌ای 
پستگرس‌کیوال از کنترل همروندی چندنسخه‌ای  برای ثبات داده استفاده می‌کند.مستندات پستگرس‌کیوال - کنترل همروندی - معرفی یعنی اینکه هر تراکنش، صرف‌نظر از وضعیت فعلی پایگاه‌داده، نسخه‌ای از پایگاه‌داده که مربوط به زمانی پیش است را می‌بیند. این ویژگی تراکنش‌ها را از مشاهده داده بی‌ثباتی که در طول اجرای تراکنش‌های همزمان بر روی سطرهای یکسان ایجاد می‌شود محافظت می‌کند.

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

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

 سی (libpq)
 پرل
 تی‌سی‌ال

 جاوا
 لوا

 دات‌نت
 جاوااسکریپت

 درایور ODBC
 پایتون

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

 یاهو! برای تحلیل رفتار کاربران وب
 ردیت، پایگاه اخبار اجتماعیصفحه گیت‌هاب ردیت - راهنمای نصب
 اینستاگرم، سرویس اشتراک گزاری تصاویربالا نگه داشتن اینستاگرام با بیش از یک میلیون کاربر جدید در ۱۲ ساعت
 جنی‌دات‌کاموب‌لاگ جنی‌دات‌کام - قطعی هفته پیش
 دیسکاس، سرویس بحث و نظردهی آنلاینپستگرس در دیسکاس

 اپن‌استریت‌مپویکی اپن‌استریت‌مپ - پایگاه‌داده
 سونی آنلاین انترتینمنت
 ایستگاه فضایی بین‌المللی برای جمع‌آوری داده‌های مسافت‌سنجی در مدارلیست ایمیلی پستگرس‌اس‌کیوال - ناسا به کمک پستگرس-ناگیون نیاز دارد
 هروکو

 جستارهای وابسته 
 مای‌اس‌کیوال
 اس‌کیوال
 اس‌کیولایت

 پانویس 

 پیوند به بیرون 




رده:پست‌گر اس‌کیوال
رده:سامانه‌های مدیریت پایگاه داده آزاد
رده:سامانه‌های مدیریت پایگاه داده‌ها
رده:نرم‌افزارهای آزاد نوشته‌شده با سی
رده:نرم‌افزارهای چندسکویی
رده:نرم‌افزارهایی که از wxWidgets استفاده می‌کنند
رده:نرم‌افزارهای ۱۹۹۶ (میلادی)
رده:پایگاه داده‌های برداری