ابزار و کتابخانه ها

چرا همچنان پستگرس را دوست داریم ؟

چرا یادگیری پستگرس همچنان یکی از توصیه‌های متخصصین برای علاقه‌مندان به کار در حوزه بانک‌های اطلاعاتی است ؟

این مطلب به بهانه شروع تدریس پستگرس در آنیسا – خانه لینوکس ایران سابق – نوشته شده است و لازم دانستم در ابتدای مقاله، این موضوع را یادآور شوم.


با رواج بانک‌های اطلاعاتی مختلف و ابزارهای مدرن پردازش و ذخیره داده، اگر به علاقه‌مندان کار در حوزه داده، توصیه کنیم که در ابتدای کار،‌ حتما مهارت‌های SQL خود را باید تقویت و با مفاهیم اصلی بانک‌های اطلاعاتی رابطه‌ای به صورت کاربردی آشنا شوند و به عنوان پیشنهاد، کار با پستگرس را شروع کنند، ممکن است برای خیلی از این دوستان، یک علامت سوال بزرگ ایجاد شود که چرا هنوز نیاز به یادگیری پستگرس داریم ؟

برای علاقه‌مندان پردازش داده که قصد آشنایی با SQL را دارند،‌ این پیشنهاد احتمالا با استقبال روبرو می شود چون هدف اصلی این گروه از کاربران، یادگیری زبان کار با بانک‌های اطلاعاتی رابطه ای یا همان SQL است اما اگر به فعالان حوزه توسعه نرم افزار و معماران نرم افزار این پیشنهاد داده شود، سوالی که ناخودآگاه برای این دوستان ممکن است مطرح شود این است که با وجود رواج بانک‌های اطلاعاتی نوین که از آنها معولا به عنوان NoSQL یا NewSQL  یاد می‌شود و امکانات متنوعی که ارائه می‌کنند، چه ضرورتی به یادگیری و تعمیق دانش در خصوص پستگرس که یک بانک‌اطلاعاتی کلاسیک و قدیمی است، وجود دارد ؟

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

برای این منظور از پرسشنامه آماری سالیانه StackOverflow که به میزان محبوبیت و رواج استفاده از ابزارهای مختلف در بین توسعه دهندگان می پردازد استفاده میکنیم. در گزارش سال ۲۰۲۳ این پرسشنامه در بخش زبان‌های برنامه‌نویسی رایج، SQL را با اختلاف بسیار اندک با پایتون، در جایگاه چهارم می‌بینیم :

حال اگر به بخش بانک‌های اطلاعاتی محبوب این پرسشنامه آماری مراجعه کنیم ، پستگرس را در جایگاه اول می‌بینیم :

این اختلاف چهاردرصدی بین پستگرس و MySQL در زبانه توسعه‌دهندگان حرفه‌ای به حدود ده درصد می‌رسد یعنی در بین حرفه‌ای های این حوزه، پستگرس محبوب‌تر است. (البته اگر MySQL+MariaDB را با هم در نظر بگیریم، رتبه اول به مای‌اس‌کیوال میرسد اما چون این دو دیتابیس، جداگانه توسعه داده می‌شوند ما هم آنها را جدا در نظر میگیریم)

حال به انتخاب بانک‌اطلاعاتی سال در وب سایت معتبر DB-Engines  مراجعه می‌کنیم. این وب سایت معتبر و قدیمی، به صورت ماهیانه بانک‌های اطلاعاتی مختلف را با استفاده از پارامترهای مختلفی مانند محبوبیت در شبکه‌های اجتماعی، سوالات پرسیده شده، میزان رواج و مانند آن ارزیابی و رتبه بندی می‌کند و هر سال با جمع‌بندی پارامترهای مختلف، بانک‌اطلاعاتی سال را معرفی میکند.

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

DatabaseYear
Snowflake2022
Snowflake2021
PostgreSQL2020
MySQL2019
PostgreSQL2018
PostgreSQL2017
Microsoft SQL Server2016
Oracle2015
MongoDB2014
MongoDB2013

پستگرس : بانک‌اطلاعاتی سال – در سه سال از شش سال اخیر

همانطور که مشاهده می‌کنید پستگرس از سال ۲۰۱۷ تا کنون یعنی در شش سال اخیر، سه بار به عنوان دیتابیس سال انتخاب شده است. در سال ۲۰۲۱ و سال ۲۰۲۲ هم پستگرس جزء سه دیتابیس اصلی انتخاب شده بوده است. اینکه با وجود تمامی پیشرفت‌های حوزه بانک‌های اطلاعاتی و ظهور پایگاه‌های داده جدید،‌ این بانک اطلاعاتی همچنان مورد استقبال کاربران است، نشان از امکانات و ویژگی‌هایی در خور توجه در این بانک‌اطلاعاتی قدیمی اما قدرتمند است.

نکته جالب توجه این است که با فروکش کردن تب بانک‌های اطلاعاتی در سالهای اخیر تمامی بانک‌های اطلاعاتی انتخاب شده، بانک‌های اطلاعاتی رابطه‌ای بوده‌اند.  از طرفی با محبوبیت‌ بانک‌های اطلاعاتی مبتنی بر ابر در سالیان اخیر، Snowflake جایگاه اول را در دو سال اخیر از آن خود کرده است و نکته ای که باید در خصوص این دیتابیس محبوب متذکر شویم، این است که زبان کار با Snowflake هم SQL است.

حال به عنوان تتمه این بخش، اگر به زبان‌های محبوب برنامه نویسی ۲۰۲۳ بر اساس امتیازدهی IEEE Spectrum -که سالیانه بر اساس پارامترهای مختلف، به ارزیابی زبان‌های مختلف می‌پردازد- نگاه کنیم (بر روی Jobs در بالای نمودار کلیک کنید)، در بخش زبان‌هایی با بهترین بازار کار، SQL را در ابتدای لیست می‌بینیم.

بعد از این مقدمه به سراغ دلایل انتخاب پستگرس به عنوان یکی از گزینه‌های اصلی برای ذخیره‌داده‌های تراکنشی و به تبع آن، ضرورت آشنایی با آن می پردازیم.

چرا پستگرس را برای یادگیری بانک‌های اطلاعاتی رابطه‌ای و SQL‌ پیشنهاد ‌میکنیم؟

پستگرس با عقبه حدود ۳۰ ساله یکی از قوی‌ترین جامعه‌های کاربری و اکوسیستم‌ توسعه یافته در حوزه بانک‌های اطلاعاتی را دارد که امروزه برای تمامی نیازمندیهای اطلاعاتی یک سازمان، یا می‌توانیم مستقیما از آن استفاده کنیم و یا دیتابیس‌ها و افزونه‌هایی که بر روی آن توسعه یافته‌اند را به کارگیریم (مانند TimeScaleDb ، CockroachDB، AGE، PostGIS‌ ).

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

اگر بخواهیم مزایای اصلی این بانک‌اطلاعاتی محبوب را برشمریم می‌توانیم به موارد زیر اشاره کنیم :

PostgreSQL دارای ویژگی‌های کلیدی متعددی است که آن را به عنوان یک سیستم پایگاه داده بسیار قابل اعتماد و قوی متمایز می کند:

  • قابلیت اطمینان: در PostgreSQL، یکپارچگی و جامعیت داده‌ها، اولویت اصلی است. این پایگاه داده، از یک مکانیسم Write-Ahead Log (WAL) برای محافظت در برابر خرابی سیستم استفاده می کند که در صورتی که پستگرس نتواند یک تراکنش با موفقیت به اتمام برساند، Write-Ahead Log امکان اجرای مجدد تراکنش را فراهم می کند و انجام آن را تضمین می کند.
  • توسعه پذیری: قابلیت‌های اصلی PostgreSQL بسیار گسترده است و طیف وسیعی از نیازمندیهای کاربران را پاسخ می‌دهد اما با وجود این، امکان توسعه را برای علاقه‌مندان به راحتی فراهم کرده است. این برنامه‌های افزودنی یا پلاگین‌ها درها را به روی مجموعه ای از ویژگی های جدید باز می کنند و قابلیت های پستگرس را به صورت مداوم  افزایش می دهد. پروژه‌های قابل توجهی مانند PostGIS از دل این توانایی پستگرس در آمده‌اند و از این ویژگی برای ادغام یکپارچه با PostgreSQL استفاده می کنند. برنامه های افزودنی می توانند انواع داده های جدید، عملگرها، توابع، انواع شاخص و موارد دیگر را سفارشی سازی و یا به دلخواه خود تعریف کنند. نتیجه این قابلیت، ایجاد اکوسیستم بسیار بزرگی در اطراف پستگرس شده است که امروزه برای ذخیره گراف، بردارهای مورد نیاز برای LLM ها و کارهای پردازش زبانی، داده‌های سری‌زمانی، توزیع پذیری و مانند آن، یا افزونه‌ها و یا نرم‌افزارهای مستقلی وجود دارند که به صورت تجاری مورد استفاده قرار میگیرند و مبنای آنها، پستگرس بوده است.
  • کارآیی و عملکرد: PostgreSQL به طور مداوم کارآیی خود را از طریق بروزرسانی مداوم و انتشار نسخه‌های مختلف اصلاح می کند و اغلب پیشرفت‌هایی که در نسخه‌های جدید ارائه می دهد مرتبط با همین موضوع هستند. این بهبود‌ها شامل مدیریت بهتر پارتیشن، اجرای موازی دستورات، سرعت نمایه سازی و حذف موانع همزمانی می‌شود. قابل ذکر است که این بهینه‌سازی‌ها کارهایی مانند فهرست‌بندی مجدد نمایه‌ها، تغییر انواع داده‌های ستون و افزودن پارتیشن‌ها را بدون ایجاد اختلال در عملکرد عادی دیتابیس امکان‌پذیر می‌سازد. نتیجه تغییرات مداوم پستگرس با جامعه کاربری عظیم آن، عملیات سریعتر و کارآمدتر با ردپای منابع کمتر است.
  • ویژگی های پیشرفته: PostgreSQL به دلیل مجموعه ویژگی های جامع خود، که برخی از آنها منحصر به پستگرس هستند، شناخته می شود :
  – نمایه‌ها(ایندکس)یی با پشتیبانی همه کاره از جوین ها، انواع روش های دسترسی و عملگرها.

– قابلیت های پردازش موازی در جنبه های مختلف، از پرس و جو گرفته تا نمایه سازی تا اسکن جداول خارجی

– پشتیبانی گسترده از داده های JSON، از جمله انواع داده های اختصاصی، توابع، و عملکرد SQL/JSON.

– CTE‌های قابل نوشتن، ساخت پرس و جوهای پیچیده و ماژولار را تسهیل می کند که امکان تغییر پایگاه داده را بر خلاف CTE‌های معمولی فراهم می‌کند.

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

– انواع داده ها و مجموعه های تعریف شده توسط کاربر.

  • امنیت: PostgreSQL با پشتیبانی از روش های پیشرفته احراز هویت، از جمله SCRAM-SHA-256، به عنوان جایگزین ایمن تر برای رویکرد قدیمی MD5، امنیت را در اولویت قرار می دهد. این سیستم همچنین از طریق LDAP، Active Directory، RADIUS، گواهی‌ها، ماژول‌های احراز هویت قابل اتصال و موارد دیگر، انعطاف‌پذیری لازم در خصوص تضمین دسترسی‌های مجاز را ارائه می‌دهد و مدیریت کاربر متناسب با خط‌مشی‌های سازمانی خاص را امکان‌پذیر می‌سازد.
  • انطباق با استانداردها: PostgreSQL برای اکثر ویژگی هایش به استاندارد SQL پایبند است، مهاجرت به سایر دیتابیس‌ها را ساده می کند و پیش‌بینی‌پذیری  در برنامه‌ریزی برای انتقال پایگاه داده در آینده را فراهم ‌می‌کند.
  • جامعه کاربری گسترده : PostgreSQL از یک جامعه جهانی گسترده، متشکل از مشارکت کنندگان از گوشه های مختلف جهان، از جمله شرکت های اختصاصی با محوریت PostgreSQL، سود می برد. این جامعه پر جنب و جوش کمک قابل توجهی را از طریق لیست های ایمیل رسمی، کانال های IRC، پست های وبلاگ آموزنده و مشارکت فعال در انجمن های فناوری محبوب ارائه می دهد. افراد درون این جامعه، که نقش‌های محوری در طراحی، توسعه و آزمایش ویژگی‌های PostgreSQL ایفا کرده‌اند، به‌عنوان متخصصان اصلی سیستم هستند.

https://pigsty.io/blog/pg/pg-eat-db-world

چرا پستگرس ؟‌

به طور خلاصه، شهرت PostgreSQL به عنوان یک سیستم پایگاه داده قابل اعتماد، همه کاره و غنی از ویژگی های پایه، توسعه پذیری، عملکرد چشمگیر، قابلیت های پیشرفته، تعهد به امنیت، انطباق با استانداردها، و پشتیبانی همیشگی توسط طرفداران و جامعه بسیار فعال کاربری آن است.

آموزش PostgreSQL

آموزش PostgreSQL

مرکز آموزش لینوکس فناوران آنیسا – خانه لینوکس ایران – تنها مرکز تخصصی برگزاری دوره ها و کلاس های آموزش لینوکس – مدارک بین المللی LPI و مشاوره تخصصی مهاجرت به متن باز در ایران است.

https://lpir.org/courses/data-science/postgresql.html

پی‌نوشت : عکس اصلی این مقاله از این آدرس برداشته شده است.مقاله زیر را هم از دست ندهید تا سمت و سوی آینده این دیتابیس محبوب را از زبان یک آدم متخصص بشنوید.

PostgreSQL Extensions or Protocols: Architecture Roulette

PostgreSQL Extensions or Protocols: Architecture Roulette

Should new infrastructure use PostgreSQL as a query engine, or aim for protocol compatibility instead?

https://materializedview.io/p/postgresql-extensions-or-protocols

مجتبی بنائی

دانشجوی دکترای نرم‌افزار دانشگاه تهران (yun.ir/smbanaie)، مدرس دانشگاه و فعال در حوزه توسعه نرم‌افزار و مهندسی داده که تمرکز کاری خود را در چند سال اخیر بر روی مطالعه و تحقیق در حوزه کلان‌داده و زیرساخت‌های پردازش داده و تولید محتوای تخصصی و کاربردی به زبان فارسی و انتشار آنها در سایت مهندسی داده گذاشته است. مدیریت پروژه‌های نرم‌افزاری و طراحی سامانه‌های مقیاس‌پذیر اطلاعاتی از دیگر فعالیتهای صورت گرفته ایشان در چند سال گذشته است.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

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

دکمه بازگشت به بالا