امروزه، نرم افزارهاي مديريت پايگاه داده بسياري ساخته شده اند که هر کدام مزايا و معايب خود را دارند. روند ذخيره سازي داده از زمان ذخيره داده ها در فايل متني تا پايگاه داده پيشرفته اي مانند اوراکل، بسيار طولاني و پرفراز و نشيب بوده است. پايگاه هاي داده و زبان امروزي پرس و جو از آنها، 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