چرا همچنان پستگرس را دوست داریم ؟
چرا یادگیری پستگرس همچنان یکی از توصیههای متخصصین برای علاقهمندان به کار در حوزه بانکهای اطلاعاتی است ؟
این مطلب به بهانه شروع تدریس پستگرس در آنیسا – خانه لینوکس ایران سابق – نوشته شده است و لازم دانستم در ابتدای مقاله، این موضوع را یادآور شوم.
با رواج بانکهای اطلاعاتی مختلف و ابزارهای مدرن پردازش و ذخیره داده، اگر به علاقهمندان کار در حوزه داده، توصیه کنیم که در ابتدای کار، حتما مهارتهای SQL خود را باید تقویت و با مفاهیم اصلی بانکهای اطلاعاتی رابطهای به صورت کاربردی آشنا شوند و به عنوان پیشنهاد، کار با پستگرس را شروع کنند، ممکن است برای خیلی از این دوستان، یک علامت سوال بزرگ ایجاد شود که چرا هنوز نیاز به یادگیری پستگرس داریم ؟
برای علاقهمندان پردازش داده که قصد آشنایی با SQL را دارند، این پیشنهاد احتمالا با استقبال روبرو می شود چون هدف اصلی این گروه از کاربران، یادگیری زبان کار با بانکهای اطلاعاتی رابطه ای یا همان SQL است اما اگر به فعالان حوزه توسعه نرم افزار و معماران نرم افزار این پیشنهاد داده شود، سوالی که ناخودآگاه برای این دوستان ممکن است مطرح شود این است که با وجود رواج بانکهای اطلاعاتی نوین که از آنها معولا به عنوان NoSQL یا NewSQL یاد میشود و امکانات متنوعی که ارائه میکنند، چه ضرورتی به یادگیری و تعمیق دانش در خصوص پستگرس که یک بانکاطلاعاتی کلاسیک و قدیمی است، وجود دارد ؟
قبل از پرداختن به این سوال، بهتر است ابتدا در قالب آمار به این موضوع نگاه کنیم و ببینیم که در دنیای امروز فناوری اطلاعات، نقش SQL و میزان محبوبیت بانکهای اطلاعاتی رابطهای و به طور خاص، پستگرس چگونه است.
برای این منظور از پرسشنامه آماری سالیانه StackOverflow که به میزان محبوبیت و رواج استفاده از ابزارهای مختلف در بین توسعه دهندگان می پردازد استفاده میکنیم. در گزارش سال ۲۰۲۳ این پرسشنامه در بخش زبانهای برنامهنویسی رایج، SQL را با اختلاف بسیار اندک با پایتون، در جایگاه چهارم میبینیم :
حال اگر به بخش بانکهای اطلاعاتی محبوب این پرسشنامه آماری مراجعه کنیم ، پستگرس را در جایگاه اول میبینیم :
این اختلاف چهاردرصدی بین پستگرس و MySQL در زبانه توسعهدهندگان حرفهای به حدود ده درصد میرسد یعنی در بین حرفهای های این حوزه، پستگرس محبوبتر است. (البته اگر MySQL+MariaDB را با هم در نظر بگیریم، رتبه اول به مایاسکیوال میرسد اما چون این دو دیتابیس، جداگانه توسعه داده میشوند ما هم آنها را جدا در نظر میگیریم)
حال به انتخاب بانکاطلاعاتی سال در وب سایت معتبر DB-Engines مراجعه میکنیم. این وب سایت معتبر و قدیمی، به صورت ماهیانه بانکهای اطلاعاتی مختلف را با استفاده از پارامترهای مختلفی مانند محبوبیت در شبکههای اجتماعی، سوالات پرسیده شده، میزان رواج و مانند آن ارزیابی و رتبه بندی میکند و هر سال با جمعبندی پارامترهای مختلف، بانکاطلاعاتی سال را معرفی میکند.
در جدول زیر، دیتابیسهای انتخاب شده برای سالهای اخیر را مشاهده میکنید:
Database | Year |
Snowflake | 2022 |
Snowflake | 2021 |
PostgreSQL | 2020 |
MySQL | 2019 |
PostgreSQL | 2018 |
PostgreSQL | 2017 |
Microsoft SQL Server | 2016 |
Oracle | 2015 |
MongoDB | 2014 |
MongoDB | 2013 |
نکته جالب توجه این است که با فروکش کردن تب بانکهای اطلاعاتی در سالهای اخیر تمامی بانکهای اطلاعاتی انتخاب شده، بانکهای اطلاعاتی رابطهای بودهاند. از طرفی با محبوبیت بانکهای اطلاعاتی مبتنی بر ابر در سالیان اخیر، 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 ایفا کردهاند، بهعنوان متخصصان اصلی سیستم هستند.
آموزش PostgreSQL
مرکز آموزش لینوکس فناوران آنیسا – خانه لینوکس ایران – تنها مرکز تخصصی برگزاری دوره ها و کلاس های آموزش لینوکس – مدارک بین المللی LPI و مشاوره تخصصی مهاجرت به متن باز در ایران است.
https://lpir.org/courses/data-science/postgresql.html
پینوشت : عکس اصلی این مقاله از این آدرس برداشته شده است.مقاله زیر را هم از دست ندهید تا سمت و سوی آینده این دیتابیس محبوب را از زبان یک آدم متخصص بشنوید.