PostgreSQL چیست و موارد استفاده از آن؟

PostgreSQL یک سیستم مدیریت پایگاه داده رابطه ‌ای مبتنی بر POSTGRE است که در بخش علوم رایانه برکلی توسعه یافته است. با گذشت بیش از دو دهه از توسعه آن، PostgreSQL درحال حاضر پیشرفته ‌ترین پایگاه داده منبع باز است که در همه جا است. POSTGRE پیشگام بسیاری از مفاهیمی بود که بعدها در برخی از سیستم‌ های پایگاه داده تجاری در دسترس قرار گرفت. PostgreSQL به ‌عنوان پایگاه داده اولیه برای بسیاری از برنامه‌ های وب و همچنین برنامه ‌های کاربردی موبایل و تجزیه ‌وتحلیل استفاده می ‌شود.
PostgreSQL بخش بزرگی از استاندارد SQL را پشتیبانی می ‌کند و بسیاری از ویژگی ‌های مدرن را ارائه می‌ دهد. برخی از این ویژگی‌ های مدرن عبارتند از: پرس‌وجوهای پیچیده، کلیدهای خارجی، نماهای قابل به روزرسانی، یکپارچگی معاملاتی و کنترل هم‌زمان چندگانه.
همچنین PostgreSQL را می‌ توان به طرق مختلف توسط کاربر گسترش داد، برای مثال امکان افزودن انواع داده‌ ها، کارکردها، اپراتورها، توابع جمع، روش‌ های نمایه‌ سازی، زبان ‌های رویه‌ ای توسط کاربر وجود دارد. به دلیل مجوز لیبرال، PostgreSQL می ‌تواند توسط هرکسی به‌صورت رایگان، برای هر منظور، خصوصی یا تجاری یا دانشگاهی، استفاده، اصلاح و توزیع شود. PostgreSQL از زبان‌ های برنامه ‌نویسی محبوبی مانند پایتون، جاوا، سی شارپ، روبی، جاوا اسکریپت، پرل و Tcl پشتیبانی می‌ کند.
مواردی که به‌ طورمعمول از PostgreSQL استفاده می ‌شود شامل موارد زیر می ‌شود:

1) یک پایگاه داده قوی در پشته LAPP
LAPP مخفف Linux، Apache، PostgreSQL و PHP (یا Python and Perl) است. PostgreSQL در درجه اول به ‌عنوان یک پایگاه داده قوی پشتیبان استفاده می ‌شود که به بسیاری از وب‌ سایت ‌ها و برنامه ‌های وب پویا قدرت می ‌دهد. لازم به ذکر است که به روزرسانی PostgreSQL نیز امکان‌ پذیر است.

2) پایگاه داده تراکنش ‌های عمومی
شرکت‌ های بزرگ و استارتاپ ¬ها از PostgreSQL به ‌عنوان پایگاه داده اصلی برای پشتیبانی از برنامه‌ ها و محصولات خود استفاده می‌ کنند.

3) پایگاه داده جغرافیایی
PostgreSQL با پسوند PostGIS از پایگاه ‌های داده فضایی برای سیستم ‌های اطلاعات جغرافیایی (GIS) پشتیبانی می‌ کند.

به روزرسانی PostgreSQL 10

در این بخش به روزرسانی داده ‌های پایگاه داده از یک نسخه PostgreSQL به نسخه جدیدتر موردبحث قرار می ‌گیرد. اعداد نسخه فعلی PostgreSQL شامل یک شماره نسخه اصلی و جزئی است. به‌ عنوان ‌مثال، در نسخه 10.1، 10 شماره نسخه اصلی و 1 شماره نسخه جزئی است، به این معنی که این اولین نسخه جزئی نسخه اصلی 10 است.
برای نسخه ‌های قبل از نسخه PostgreSQL 10.0، شماره نسخه شامل سه عدد، به ‌عنوان‌ مثال، 9.5.3 می‌ شود. در این موارد، نسخه اصلی شامل دو رقم اول شماره نسخه است، به ‌عنوان‌ مثال، 9.5 و نسخه جزئی شماره سوم است، به‌ عنوان ‌مثال، 3، به این معنی است که این سومین نسخه جزئی از نسخه اصلی 9.5 است.
نسخه‌ های جزئی هرگز قالب ذخیره‌ سازی داخلی را تغییر نمی‌ دهند و همیشه با نسخه‌ های قبلی و بعدی با همان شماره نسخه اصلی سازگار هستند. به‌ عنوان ‌مثال، نسخه 10.1 با نسخه 10.0 و نسخه 10.6 سازگار است. به ‌عنوان‌ مثال نسخه 9.5.3 با 9.5.0، 9.5.1 و 9.5.6 سازگار است. برای به‌ روزرسانی بین نسخه ‌های سازگار، به‌ سادگی فایل ‌های اجرایی را درحالی‌که Server معیوب است، جایگزین کرده و Server را مجدداً راه ‌اندازی کنید. در این مورد فهرست اطلاعات بدون تغییر باقی می ‌ماند. به روزرسانی جزئی به همین سادگی است.
برای نسخه‌ های اصلی PostgreSQL، قالب ذخیره‌ سازی داده‌ های داخلی ممکن است تغییر کند، بنابراین به روزرسانی PostgreSQL را پیچیده می ‌کند. روش سنتی برای انتقال داده‌ ها به نسخه اصلی جدید، تخلیه و بارگیری مجدد پایگاه داده است، اگرچه این می ‌تواند کند باشد.
نسخه ‌های اصلی جدید نیز معمولاً برخی ناسازگاری‌ های قابل‌ مشاهده توسط کاربر را معرفی می ‌کنند، بنابراین ممکن است تغییرات برنامه‌ نویسی برنامه موردنیاز باشد. همه تغییرات قابل ‌مشاهده توسط کاربر در یادداشت ‌های انتشار ذکر شده است. توجه ویژه‌ ای به بخش «Migration» داشته باشید. اگرچه می‌ توانید بدون به روزرسانی به نسخه‌ های مداخله‌ گر، از نسخه اصلی به نسخه دیگر به ‌روزرسانی انجام دهید، اما باید یادداشت ‌های اصلی انتشار همه نسخه‌ های مداخله ‌گر را بخوانید.

تغییرات عمده در هنگام به روزرسانی PostgreSQL

کاربران محتاط می‌ خواهند برنامه‌ های سرویس‌گیرنده خود را در نسخه جدید قبل از تغییر کامل آزمایش کنند؛ بنابراین، اغلب ایده خوبی است که نصب هم‌زمان نسخه ‌های قدیمی و جدید را اجرا کنید. هنگام آزمایش به روزرسانی عمده PostgreSQL، دسته‌ های زیر از تغییرات احتمالی را در نظر بگیرید:

  • مدیریت
    قابلیت ‌های موجود برای سرپرستان برای نظارت و کنترل Server اغلب در هر نسخه اصلی تغییر کرده و بهبود می ‌یابد.
  • SQL
    به ‌طور معمول این بخش شامل قابلیت ‌های جدید فرمان SQL است و هیچ تغییری در رفتار ایجاد نمی ‌کند، مگر اینکه به‌طور خاص در یادداشت ‌های انتشار ذکر شده باشد.
  • API کتابخانه
    معمولاً کتابخانه ‌هایی مانند libpq فقط قابلیت جدیدی اضافه می‌ کنند، مگر اینکه در یادداشت ‌های انتشار ذکر شود.
  • کاتالوگ ‌های سیستم
    تغییرات کاتالوگ سیستم معمولاً فقط بر ابزارهای مدیریت پایگاه داده تأثیر می ‌گذارد.
  • API زبانC Serverاین بخش شامل تغییرات در API تابع backend است که به زبان برنامه‌ نویسی C نوشته‌ شده است. چنین تغییراتی در هنگام به روزرسانی PostgreSQL بر روی کدی که به عملکردهای پشتیبان در عمق Server اشاره می ‌کند، تأثیر می‌ گذارد.

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

انواع روش ‌های به روز رسانی PostgreSQL 10

به روزرسانی داده ‌ها از طریق pg_dumpall

یکی از روش ‌های به روزرسانی داده‌ ها این است که داده‌ ها را از یک نسخه اصلی PostgreSQL تخلیه کرده و در نسخه دیگری بارگذاری کنید. برای این کار، باید از یک ابزار پشتیبان گیری منطقی مانند pg_dumpall استفاده کنید. روش ‌های پشتیبان گیری در سطح سیستم کارساز نخواهند بود. (در حال حاضر چک ‌لیست‌ هایی وجود دارد که شما را از استفاده از یک دایرکتوری داده با نسخه ناسازگار PostgreSQL منع می ‌کند، بنابراین با تلاش برای شروع نصب نسخه Server اشتباه در یک دایرکتوری داده هیچ آسیبی نمی ‌توان وارد کرد.)
توصیه می‌ شود از برنامه ‌های pg_dump و pg_dumpall نسخه جدیدتر PostgreSQL استفاده کنید تا از پیشرفت ‌هایی که در به روزرسانی PostgreSQL ممکن است در این برنامه ‌ها انجام‌ شده باشد استفاده کنید.
در این دستورالعمل‌ ها فرض بر این است که نسخه نصب ‌شده فعلی شما در فهرست/usr/local/pgsql قرار دارد و منطقه قرارگیری داده در مسیر/usr/local/pgsql/data است؛ بنابراین توصیه می ‌شود مسیر قرارگیری را به‌ درستی جایگزین کنید.

به روزرسانی داده ‌ها از طریق pg_upgrade

روش به روزرسانی داده‌ ها با استفاده از pg_upgrade اجازه می ‌دهد تا داده‌ های ذخیره ‌شده در پرونده ‌های داده PostgreSQL به نسخه اصلی PostgreSQL بعدی ارتقاء یابد بدون اینکه داده‌ ها برای بارگذاری نسخه‌ های اصلی معمولاً موردنیاز باشد.
pg_upgrade تمام تلاش خود را می ¬کند تا مطمئن شود که خوشه¬ های قدیمی و جدید با سیستم دوتایی سازگار هستند.

به روزرسانی داده‌ ها از طریق Replication

همچنین می‌ توانید از روش ‌های تکرار خاصی برای ایجاد یک Server پشتیبان با نسخه به‌ روز شده PostgreSQL مانند Slony استفاده کنید که از تکرار بین نسخه‌های اصلی مختلف PostgreSQL پشتیبانی می‌ کند. Server پشتیبان می ‌تواند در یک رایانه یا در رایانه‌ ای دیگر باشد. پس از همگام ‌سازی با Server اصلی (اجرای نسخه قدیمی PostgreSQL)، می ‌توانید میزبان را عوض کرده و از Server پشتیبان به ‌عنوان میزبان استفاده کنید و سپس نمونه پایگاه داده قدیمی را خاموش کنید. چنین جابجایی تنها چند ثانیه تعویق برای به روزرسانی به دنبال دارد.

آموزش به روزرسانی PostgreSQL 10 به روش pg_dumpall

  1. در صورت تهیه نسخه پشتیبان، مطمئن شوید که پایگاه داده شما به ‌روز نمی‌ شود. این موضوع بر یکپارچگی نسخه پشتیبان تأثیر نمی‌ گذارد، اما داده ‌های تغییریافته را مسلماً شامل نمی‌شود. در صورت لزوم، مجوزهای موجود در فایل /usr/local/pgsql/data/pg_hba.conf را ویرایش کنید تا دسترسی همه به‌ جز شما ممنوع شود.
    در ادامه مراحل به روزرسانی PostgreSQL، برای تهیه نسخه پشتیبان از پایگاه داده خود، عبارت زیر را تایپ کنید:
    pg_dumpall > outputfile
  2.  server قدیمی را خاموش کنید:
    در سیستم‌ هایی که PostgreSQL در زمان راه‌ اندازی شروع شده است، احتمالاً یک فایل راه‌ اندازی وجود دارد که همان کار را انجام می ‌دهد.
    /etc/rc.d/init.d/postgresql را متوقف کنید
  3.  در صورت بازگرداندن نسخه پشتیبان، نام دایرکتوری نصب قدیمی را تغییر دهید یا آن را حذف کنید. در صورت بروز مشکل و نیاز به بازگشت به آن، بهتر است نام دایرکتوری را به‌جای حذف آن تغییر دهید. به خاطر داشته باشید که دایرکتوری ممکن است فضای قابل‌ توجهی از دیسک را اشغال کند. برای تغییر نام فهرست، از دستور زیر استفاده کنید:
    mv/usr/local/pgsql /usr/local/pgsql.old
    (حتماً دایرکتوری را به‌ عنوان یک واحد منتقل کنید تا مسیرهای نسبی بدون تغییر باقی بمانند.)
  4. نسخه جدید PostgreSQL را نصب کنید.
  5. در صورت نیاز یک خوشه پایگاه داده جدید ایجاد کنید. به یاد داشته باشید که باید این دستورات را هنگام ورود به حساب کاربری پایگاه داده خاص اجرا کنید.
    /usr/local/pgsql/bin/initdb -D/usr/local/pgsql/data
  6.  pg_hba.conf قبلی و هرگونه تغییرات postgresql.conf خود را بازیابی کنید.
  7.  دوباره با استفاده از حساب کاربری پایگاه داده خاص Server پایگاه داده را شروع کنید:
    /usr/local/pgsql/bin/postgres -D/usr/local/pgsql/data
  8.  درنهایت، داده‌ های خود را از پشتیبان گیری با موارد زیر بازیابی کنید:
    /usr/local/pgsql/bin/psql -d postgres -f outputfile
    با نصب Server جدید در یک دایرکتوری متفاوت و اجرای موازی Server های قدیمی و جدید در پورت‌ های مختلف، می ‌توان کمترین زمان تعویق را هنگام به روزرسانی PostgreSQL تجربه کرد.