PostgreSQL یک سیستم مدیریت پایگاه داده پیشرفته و آزاد
در نتیجه به منظور برآورده کردن نیازهای روزافزون بشر به فناوی های جدیدی در زمینه ذخیره سازی داده ها و بازیابی و جست و جوی آنها، پروژه های بسیاری در نقاط مختلف جهان و با اهداف مختلف تعریف شده و پی گیری می شوند.
یکی از این پروژه های موفق که در برکلی کلید خورد، ایجاد یک سیستم مدیریت پایگاه داده جدید با نام PostgreSQL بود که به ایجاد یکی از پیشرفته ترین پایگاه های داده اپن سورس جهان منجر شد. سیستم مدیریت پایگاه داده علاوه بر داشتن قابلیت های پیشرفته ای برای رقابت با اوراکل، از نظر سرعت نیز رقیب سرسختی برای MySQL ساده و چابک محسوب می شود.
پایگاه داده PostgreSQL یک سیستم مدیریتی پایگاه داده رابطه ای شیء یا ORDBMS است. این نرم افزار تحت مجوزی شبیه به BSD عرضه شده و به همین دلیل، یک نرم افزار آزاد به شمار می آید. مانند دیگر پروژه های اپن سورس، شرکت خاصی پی گیر بحث توسعه آن نیست و جامعه ای از توسعه دهندگان به توسعه و بهینه سازی آن مشغول هستند.
تاریخچه
نرم افزار 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 عرضه شده است.
قابلیت ها
توابع امکان اجرای حجمی از کد توسط سرور را فراهم می سازند و با این که در حالت استاندارد، کدهای مذکور به زبان 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
نرم افزار 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 اشاره کرد.
ارزیابی عملکرد
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 در برابر رقبا
اما زورآزمایی با رقیب هم جنسی مانند 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- محدودیت های پایگاه های داده مشهور |
جمع بندی
این پایگاه داده، با توجه به قابلیت های جدید و پیشرویی که دارد، از بسیاری از راه حل های تجاری موجود بهتر بوده و در عین حال اپن سورس و رایگان است. به همین دلیل، در بحبوحه بحران اقتصادی و در حالی که شرکت های بزرگ به دنبال کاهش هزینه های خود هستند، Postgres می تواند به یکی از گزینه های اصلی برای قلب ذخیره سازی سیستم های آنها تبدیل شود. به علاوه، با استفاده از الحاقیه های پیشرفته ای مانند PostGIS و گسترش روزافزون استفاده از GIS و داده های مکانی در دنیا، PostgreSQL بیش از پیش در مقابل رقبا به قدرت نمایی خواهد پرداخت. در آینده، خبرهای بیشتری درباره PostgreSQL خواهید شنید.
منبع:نشریه شبکه- ش 102
/ج