PostgreSQL یک سیستم مدیریت پایگاه داده پیشرفته و آزاد


 

نویسنده: عرفان نظری فاضل




 
امروزه، نرم افزارهای مدیریت پایگاه داده بسیاری ساخته شده اند که هر کدام مزایا و معایب خود را دارند. روند ذخیره سازی داده از زمان ذخیره داده ها در فایل متنی تا پایگاه داده پیشرفته ای مانند اوراکل، بسیار طولانی و پرفراز و نشیب بوده است. پایگاه های داده و زبان امروزی پرس و جو از آنها، SQL، امروزه قلب تپنده و پایه و بنیان سیستم های اطلاعاتی ما را تشکیل می دهند و به همین دلیل، اهمیت امنیت، کارایی و پیشرفت آنها بر کسی پوشیده نیست.
در نتیجه به منظور برآورده کردن نیازهای روزافزون بشر به فناوی های جدیدی در زمینه ذخیره سازی داده ها و بازیابی و جست و جوی آنها، پروژه های بسیاری در نقاط مختلف جهان و با اهداف مختلف تعریف شده و پی گیری می شوند.
یکی از این پروژه های موفق که در برکلی کلید خورد، ایجاد یک سیستم مدیریت پایگاه داده جدید با نام PostgreSQL بود که به ایجاد یکی از پیشرفته ترین پایگاه های داده اپن سورس جهان منجر شد. سیستم مدیریت پایگاه داده علاوه بر داشتن قابلیت های پیشرفته ای برای رقابت با اوراکل، از نظر سرعت نیز رقیب سرسختی برای MySQL ساده و چابک محسوب می شود.
پایگاه داده PostgreSQL یک سیستم مدیریتی پایگاه داده رابطه ای شیء یا ORDBMS است. این نرم افزار تحت مجوزی شبیه به BSD عرضه شده و به همین دلیل، یک نرم افزار آزاد به شمار می آید. مانند دیگر پروژه های اپن سورس، شرکت خاصی پی گیر بحث توسعه آن نیست و جامعه ای از توسعه دهندگان به توسعه و بهینه سازی آن مشغول هستند.

تاریخچه
 

نخستین مشکلی که کاربران این نرم افزار با آن روبه رو می شوند، چگوگی تلفظ نام آن است. تلفظ PostgreSQL به صورت (پست جرس کیو ال) است ک در بیشتر مواقع و برای راحتی از طرف کاربران، Postgres خوانده می شود. با این که در سال های 2007 تلاش هایی از طرف هواداران برای استفاده از Postgre به عنوان نام رسمی نرم افزار صورت گرفت، اما گروه اصلی توسعه آن اعلام کرد که آن را همچنان PostgreSQL خواهد نامید. نام نرم افزار، از ایده اولیه ایجاد و توسعه آن یعنی پایگا داده Post-Ingres گرفته شده است. پایگاه داده Ingres، یک پایگاه داده رابطه ای اپن سورس و تجاری است که توسعه آن توسط شرکت Ingres کنترل می شود.
نرم افزار Postgres در طی توسعه پروژه Ingres که در اواسط دهه 1980 در دانشگاه برکلی پی گیری می شد، متولد شد. در سال 1982 مدیر پروژه، مایکل استون بریکر، برکلی را با هدف ایجاد نسخه ای شخصی از Ingres ترک کرد، اما در سال 1985 به برکلی بازگشت و پروژه ای با هدف حل مشکلات پایگاه های داده آن زمان با نام Post-Ingres آغاز کرد. گام اول، با اضافه کردن تعدادی قابلیت جدید به سیستم قبلی برداشته شد. این قابلیت های جدید شامل امکان تعریف انواع (Type) جدید و توصیف کامل رابطه ها بود.
با این که توصیف رابطه ها در پایگاه های داده ای آن زمان به وفور استفاده می شد، اما تمام وظایف مربوط به آن بر عهده کاربر بود. اگر چه معماری سیستم و عملیات درونی Postgres از Ingres الهام گرفته شد، اما در پایه ریزی اولیه قرار بر آن شد که پایگاه داده رابطه ها را درک کرده و امان بازیابی اطلاعات از جدول های مرتبط را با استفاده از قوانین (Rules) داشته باشد.
با این که Ingres تأثیر زیادی در معماری Postgres دارد، اما از کد آن برای نرم افزار جدید استفاده نشد. گروه توسعه، در سال 1986 مقالاتی در باره شالوده سیستم و معماری آن منتشر و در سال 1988 یک نمونه اولیه از آن را تولید کردند. نسخه یک Postres در سال 1989، نسخه دو (با سیستم قوانین بازنویسی شده) در سال 1990 و نسخه 3 در سال 1991 عرضه شد. در سال 1993 مشتریان زیادی به استفاده از آن هجوم آوردند و این واقعیت، نیاز به ایجاد گروه تجاری و پشتیبانی از Postgres را پررنگ تر کرد. در همین زمان، نسخه چهار نیز عرضه شد و پروژه پایان یافت.
با این حال، چون دانشگاه برکلی Postgres را تحت مجوز BSD عرضه کرده بود، افراد دیگر می توانستند با تغییر در کد سیستم نسخه های جدید به جامعه اپن سورس عرضه کنند. در این راستا و در سال 1994، دو تن از دانش آموختگان برکلی به نام های اندرویو و جالی چن، مفسر زبان پرس و جوی QUEL در Postgres را که از پروژه Ingres الهام گرفته شده بود، با یک مفسر جدید برای زبان SQL عوض کرده و Postgres95 را عرضه کردند.
پس از این وقایع و در سال 1996، مارک فونیه در شرکت Hub.org نخستین سرور توسعه غیردانشگاهی Postgres را راه اندازی کرد و با همکاری تنی چند و با پایدارسازی کد موجود، نسخه جدید Postgres را عرضه کرد. همزمان، برای القای این نرم افزار از SQl پشتیبانی می کند، نام آن به PostgreSQL تغییر کرد و اولین عرضه با نام PostgreSQL تحت عنوان نسخه 7 در سال 1997 عرضه شد. پس از آن نیز جامعه اپن سورس و گروه بزرگی از کاربران، توسعه Postgres را بر عهده گرفتند. نسخه PostgreSQL8.4 در تاریخ یکم ژوئیه 2009 عرضه شده است.

قابلیت ها
 

توابع، سیستم شاخص ها، Triggerها، MVCC، قوانین، انواع داده ای، و انواع داده ای (Data Type) قابل تعریف توسط کاربر، از مهم ترین قابلیت هایی هستند که Postgres در آنها با دیگر پایگاه های داده ای متفاوت است.
توابع امکان اجرای حجمی از کد توسط سرور را فراهم می سازند و با این که در حالت استاندارد، کدهای مذکور به زبان SQL نوشته می شوند اما PostgreSQL امکان کدنویسی به زبان هایی مانند PL/pgSQL که شبیه زبان رویه ای PL/SQL اوراکل است، زبان های اسکریپتی، PL/Perl, PL/PHP, PL/Python, PL/Ruby، زبان های کامپایل شده C++,C و PL/Java و زبان آماری R با استفاده از PL/R را فراهم می کند. این توابع، امکان بازگرداندن مقادیری از داده ها را به صورت جدول دارند و می توان آنها را با تنظیم حقوق دسترسی کاربر اجراکننده آن یا کاربر سازنده آن محدود کرد. همان طور که می دانید، Tiggerها، رویدادهایی هستند که در صورت اجرای اتفاقی خاص در سیستم، اجرا می شوند. Postgers Tiggerها می توانند به جز viewها به اشیاء مختلف تخصیص یابند و توابعی از جنس PL/pgSQL یا PL/Perl را اجرا کنند.
قابلیت همزمانی سیستم از طریق MVCC یا Multi-Version Concurreny Control انجام می شود که با تخصیص یک Snapshot از پایگاه داده به هر کاربر، تغییرات را به طور موقت به آن اعمال کرده و از مشاهده تغییرات اعمال شده کاربر در پایگاه داده قبل از اجرای موفقیت آمیز تراکنش وی خودداری می کند. این قابلیت، قفل های خواندن یا Readlockهای عظیم را حذف کرده و در عین حال، اصول ACID را به خوبی برآورده می کند.
نرم افزار PostgreSQL مانند بسیاری از پایگاه های داده از طیف وسیعی از انواع داده ها همچون آرایه هایی با طول متغیر (تا یک گیگابایت)، مقادیر رقمی با دقت های مختلف، آدرس های IPv4 و IPv6، بلوک های CIDR,XML و UUID پشتیبانی می کند. به علاوه، کاربران می توانند انواع داده های جدیدی در سیستم ایجاد کنند که داده های پیشرفته GIS مثالی از این انواع هستند.
از دیگر ویژگی های خاص Postgres قابلیت تعریف طیف وسیعی از شیءها در پایگاه داده است. در این نرم افزار می توان اشیاء جدیدی مانند Cost, Conversion, Data Type, Domain, Function Index, Operator و Procedural Language تعریف و استفاده کرد.
از دیگر قابلیت های این سیستم می توان به Referential integrity constraints, Sub-Select، پشتیبانی از اکثر قابلیت های SQL2008, اتصال رمزنگاری شده با SSL، پشتیبان گیری آنلاین، TOAST, TableSpace, SavePoint (سرنام The Oversized-Attribute Storage Technique) و Commit (اعمال نهایی تغییرات در پایگاه داده) در دو مرحله اشاره کرد. در جدول 1 می توانید، فهرستی از الحاقیه های PostgreSQL را مشاهده کنید.

نام

توضیحات

مجوز

PostGIS

ذخیره سازی داده های جغرافیایی

GPL

pgRouting

پیاده سازی الگوریتم کوتاه ترین مسیر در داده های جغرافیایی

GPL

Tsearch2

جست و جوی متنی پیشرفته

BSD

OpenFTS

جست و جوی متنی پیشرفته

GPL

pgCLuster

سیستم Replication  در حالت synchronous و Multi-Master

BSD

Postgres-R

سیستم Replication در حالت Multi-Master

BSD

Londiste

سیستم Replication در حالت asynchronous و master/slave

BSD

Mammoth Replicator

سیستم Replication در حالت asynchronous و Master/Slave

BSD

PGPool-II

Connection Pooling, Replication, Load Balancing, Parallel Query

BSD

جدول 1- الحاقیه های مهم PostgreSQL

نرم افزارهای مدیریتی PostgreSQL
 

رابط اصلی Postgres، یک برنامه خط فرمانی با نام psql است که امکان وارد کردن پرس و جوهای SQL یا اجرای آنها از طریق یک فایل را فراهم می کند. به علاوه، psql از مجموعه بزرگی از Meta-Commandها پشتیبانی کرده و امکان استفاده از قابلیت های جدید خط فرمانی را برای اتوماسیون وظایف فراهم می کند.
نرم افزار PgAdmin، یکی دیگر از نرم افزارهای رابط Postgers است، که یک رابط گرافیکی است و نسخه های آن برای بیشتر پلتفرم های رایج امروزی توسعه داده شده و قابل اجرا است. این نرم افزار آزاد، تحت مجوز Artistic عرضه شده و از بیش از دوازده زبان پشتیبانی می کند. اولین نسخه از این نرم افزار با نام pgManager، همراه با PostgreSQL6.3.2 در سال 1998 عرضه شد. نسخه بعدی آن در سال 2002 تحت عنوان pgAdmin II عرضه شد و نسخه نهایی آن همراه PostgreSQL8.3 عرضه می شود و pgAdmin III نام دارد (شکل 2).
علاوه بر دو نرم افزار فوق، نرم افزاری برای مدیریت PostgreSQL از طریق وب نیز وجود دارد که phpPgAdmin نام دارد. همان طور که از نام آن پیدا است، این رابط به زبان PHP نوشته شده و برپایه رابط وب معروف phpMyAdmin که برای مدیریت MySQL از طریق وب به کار می رود، توسعه داده شده است.
همچنین، در این میان، تعدادی نرم افزار تجاری و اختصاصی (غیر آزاد) برای مدیریت PostgreSQL نیز وجود دارد که از آنها می توان به Navicat, SQl Maestro و ابزارهای مدل سازی داده ها مانند Dezign for Database یا ModelRight اشاره کرد.

ارزیابی عملکرد
 

آزمایش های بسیاری برای ارزیابی سرعت و کارایی PostgreSQL در دنیا انجام شده است. با این حال، اولین آزمایش استاندارد در ابعاد صنعتی روی آن، در سال 2007 و با استفاده از Sun Java System Application Server 9.0 Platform Edition انجام شد که در آن، سیستم به سرعت JOPS778 دست یافت. این مقدار به طرز قابل توجهی با مقدار 874JOPS به دست آمده توسط Oracle10 روی سرورهای ایتانیوم با HP-UX قابل مقایسه است.
JOPS (سرنام jAppServer Operations Per Second) است و توسط آزمایشی که SPECjAppServer2004 نامیده می شود به دست می آید. این آزمایش برای ارزیابی چندبعدی عملکرد سرورها برپایه J2EE طراحی شده و کارایی فناوری هایی نظیر JSP, EJB2.0, JMS، مدیریت تراکنش و اتصال به پایگاه داده را ارزیابی می کند. در این سرور، هزینه برای هر JOPS هفتاد دلار بوده که بسیار قابل توجه است و از آنچه که اوراکل عرضه می کند، بسیار پایین تر است.
در جدول 2، می توانید فهرستی از آزمایش های انجام شده را روی مجموعه های مختلف مشاهده کنید. البته، این توضیح لازم است که باید در این جدول به سخت افزار سرورها توجه کنید و هزینه برای هر JOPS را نیز در نظر داشته باشید.

J2EEServer

JOPS

System Title

136 cores, 68 chips, 2cores/chip

28463.03

Oracle WebLogic Server Standard Edition Release 10.3 on HP-UX Integrity BL870c

104cores, 52chips, 2cores/chip

19613.33

Oracle WebLogic Server Standard Edition Release 10.3 on HP_UX Integrity BL870c Server Blade Cluster

48cores, 6chips

8439.36

Sun Java System Application Server 9.1 on Fujitsu SPARC Enterprise T5120 contain-ers

80cores, 10chips

8253.21

BEA WebLogic Server 10.0 on Sun Blade 6000 Modular System Using Solaris Contain-ers

8cores, 2chips (4cores/chips)

1197.1

Sun Glass Fish Enterprise Server v2 Update2, SunFire X4150 Cluster with MySQL 5.0on OpenSolaris 2008.o5

4cores, 2chips, 2cores/chip (HT on)

874.17

Oracle Application Server 10g Release 10.1.3.2-Java Edition on Hp-UX rx2660

8cores, 4chips (2cores/chip)

813.73

Sun Java (TM) System Application Server 9.1 with Postgres 8.2

4cores, 2chips, 2cores/chip

802.61

Oracle Application Server 10g Release 10.1.3.2-Java Edition on HP-UX rx2660

8cores, 1chip

801.7

BEA WebLogic Server 9.2 on Fujitsu SPARC Enterprise T2000

8cores, 1chip

801.7

BEA WebLogic Server 9.2 on Sun   Enterprise T2000

4cores, 2chip (SMT on)

618.38

WebSphere 6.1 Application Server on IBM System p5 505Q

جدول 2- نتایج آزمایش SPECjAppServer2004  روی مجموعه سرورهای مختلف. به سخت افزار سرورها نیز توجه داشته باشید.

کابران نام آشنا
 

معروف ترین کاربر PostgreSQL یاهو است که ادعا می کند با استفاده از آن، دو پتابایت اطلاعات ذخیره کرده است. نسخه مورد استفاده یاهو، نسخه ای کاملا اختصاصی و تغییریافته از PostgreSQL است که موتور ذخیره سازی ستونی و لایه پردازش پرس و جوی آن کاملا متفاوت بوده و بازنویسی شده است. نقشه Open Street Map که یک پروژه مشترک برای ایجاد نقشه ویرایش پذیر جهان است نیز از دیگر کاربران PostgreSQL است. از دیگر کاربران PostgreSQL می توان به Afilias (ثبت کننده دامین های org و Sony Online, BASF, Info و hi5.com, Skype, Sun xVM, Evergreen, NetBus, Snooth The Weather Channel اشاره کرد.

PostgreSQL در برابر رقبا
 

رقبای PostgreSQL را می توان به دو دسته تقسیم کرد. رقبای غیررایگان و تجاری نظیر اوراکل و رقبای اپن سورس مانند MySQL. در زمینه رقابت با اوراکل و دیگر پایگاه های داده تجاری، یکی از مهم ترین نقاط قوت Postgre اپن سورس بودن و هزینه بسیار پایین آن برای ایجاد یک سیستم ذخیره سازی کامل است. به علاوه، توسعه دهندگان آن، برای مجموعه ای بزرگ از کاربران و برنامه نویسانی هستند که خود از کاربران سیستم به حساب می آیند. به همین دلیل، سرعت رشد و پویایی آن در مقابل مشکلات احتمالی و قابلیت های جدید، بسیار بالا است. با این حال، اوراکل به دلیل خدمات پشتیبانی بهتر و فراگیرتر بودن، از Postgre جلوتر است و به همین دلیل، علاقه به استفاده از آن بیشتر است. شرایط اوراکل و Postgre در دنیا، به نوعی مشابه شرایط ویندوز و لینوکس است و کاربران و شرکت ها طبق عادت، علاقه بیشتری به استفاده از سیستم فراگیرتر دارند.
اما زورآزمایی با رقیب هم جنسی مانند MySQL برای Postgres مشکل تر است. پایگاه داده MySQL مانند Postgres اپن سورس بوده و به صورت رایگان قابل استفاده است. به علاوه، معماری و ساختار آن ساده تر بوده و کاربرانی که با حجم عظیمی از داده ها سروکار ندارند، ترجیح می دهند از آن استفاده کنند. به علاوه، MySQL به دلیل سبکی و سادگی، نسبت به Postgres سریع تر است و همین، استفاده از آن را گسترش داده است. در مقابل، Postgres به دلیل ماهیت بسیار پیشرفته تر خود، برای استفاده در محیط های بزرگ مناسب تر است و امکانات بسیار بیشتری در اختیار کاربر می گذارد. به علاوه، با اعمال تغییرات در نسخه های اخیر Postgres، سرعت عملکرد آن به شدت در حال بهبود بوده و به نظر می رسد در آینده، چیزی از MySQL کم نخواهد داشت. به طور کلی، PostgreSQL در دنیای اپن سورس معادل اوراکل محسوب می شود و به همین دلیل، تنها در محیط های بزرگ مورد استفاده قرار می گیرد. جدول 3 مقایسه ای سریع از پایگاه های داده ای موجود ارائه می دهد.

 

حداکثر اندازه پایگاه داده

حداکثر اندازه جدول ها

حداکثر اندازه سطرها

حداکثر تعداد ستون ها برای هر سطر

حداکثر اندازه داده های کاراکتری

حداکثر اندازه داده های عددی

DB2

512TB (512TiB)

512TB

32.677B

1012

32KB (32 KiB)

64 bits

Ingres

Unlimited

Unlimited

256KB

1024

32,000B

64 bits

Microsoft Access

2GB

2GB

16MB

255

255B (text field)

32 bits

Microsoft Visual Foxpro

Unlimited

2GB

65,500B

255

16MB

32 bits

Microsoft SQL server

524,258TB (32.767 files*16TB Max file size)

524,528TB

Unlimited

30000

2GB 6

126 bits 2

MySQL5

Unlimited

2GB (Win32 FAT32 to 16TB (Solaris)

64KB 3

4096 4

46KB (text)

64 bits

Oracle

Unlimited 4GB * block size per tablespace

4GB*block size (with BIGFILE tablespace)

Unlimited

1000

4000B

126 bits

PostgreSQL

Unlimited

32TB

1.6TB

250-1600 depending on type

1GB

Unlimited

SQLite

32TB (230Pages*32KB max Page size)

?

?

32767

1GB

64 bits

جدول 3- محدودیت های پایگاه های داده مشهور

جمع بندی
 

با توجه به توضیحات بالا و قابلیت های ذاتی مطرح شده، PostgreSQL یکی از بهترین نرم افزارهای پایگاه داده برای حجم عظیمی از داده ها به شمار می آید که هر روز شاهد گسترش استفاده از آن هستیم.
این پایگاه داده، با توجه به قابلیت های جدید و پیشرویی که دارد، از بسیاری از راه حل های تجاری موجود بهتر بوده و در عین حال اپن سورس و رایگان است. به همین دلیل، در بحبوحه بحران اقتصادی و در حالی که شرکت های بزرگ به دنبال کاهش هزینه های خود هستند، Postgres می تواند به یکی از گزینه های اصلی برای قلب ذخیره سازی سیستم های آنها تبدیل شود. به علاوه، با استفاده از الحاقیه های پیشرفته ای مانند PostGIS و گسترش روزافزون استفاده از GIS و داده های مکانی در دنیا، PostgreSQL بیش از پیش در مقابل رقبا به قدرت نمایی خواهد پرداخت. در آینده، خبرهای بیشتری درباره PostgreSQL خواهید شنید.
منبع:نشریه شبکه- ش 102