يكشنبه 28 مرداد 1386, 4:58 بعدازظهر
اکثر برنامه های کاربردی تحت وبی که نوشته می شوند، برای ذخيره دائمی اطلاعات خود از بانک اطلاعاتی استفاده می کنند. هر گاه از بانک اطلاعاتی صحبتی می شود، برنامه نويس می بايست فاکتورهايی را برای انتخاب بانک در نظر بگيرد و با حلاجی آنها، بهترين انتخاب را انجام دهد. ويژگيهای مشترکی که هر برنامه نویس به دنبال آنهاست و در واقع حداقل نيازمندی های او از يک بانک اطلاعاتی است را می توان در سه صفت خلاصه کرد:
سرعت، پايداری و قابليت اطمينان
آيا MySQL و يا حتی فايلهای متنی ساده، تمام نيازمندی های ذخیره و بازيابی داده های شما را تامين می کنند؟!
در اين مقاله نگاهی به PostgreSQL می اندازيم که شاید بتوان آن را پدربزرگ بانک های اطلاعاتی کدباز دانست. (تلفظ PostgreSQL به صورت post-gress-q-l می باشد)
چرا PostgreSQL را انتخاب کنيم؟
اينجاست که جماعت متعصب کدباز، دستان خود را در هوا تاب می دهند و با هيجان ناشی از خشم خود فرياد بر می آورند!(چقدر ادبی شد! :D) البته شعف و هيجان آنها قابل درک است! wink
PostgreSQL يک بانک اطلاعاتی کدباز به معنای واقعی کلمه است که تحت جواز(Licence) ساده و قابل انتقال BSD منتشر شده است. در اينجا متن کوتاهی در مورد اين جواز یا پروانه بهره برداری نوشته شده است.
PostgreSQL کاملا مجانی هست. وقتی میگیم مجانیه نه اینکه صرفا هزینه ای نداره، بلکه همانند جواز GNU General Public License می توان کدهای آن را تغییر داده، دوباره بسته بندی کرده و اصلا به عنوان یک برنامه کاربردی Standalone یا تحت برنامه کاربردی که خودتون نوشتید، دوباره توزیع کرد.
PostgreSQL دارای امکانات ويژه ای هست و از استاندارهای ANSI SQL92 و SQL99 هم تبعيت کرده که يا در بانک های ديگه وجود نداره و اگر هم باشه، همچین کامل و شسته رفته نيست؛ علاوه بر اين کار با آبجکت ها و داده های سلسه مراتبی هم با اين بانک اطلاعاتی ميسر است.
البته، هیچ گلی بی عیب نیست. نخست، توانايی PostgreSQL را در زمينه آبجکت ها و داده های سلسه مراتبی را در نظر بگيريد. يه دقيقه صبر کنيد! ما همين الان اين امکان را برای محاسن اين بانک خرج کرديم! می بينم که دوستداران PostgreSQL همچين چپ چپ به بنده نگاه می کنند که چرا اين ويژگی خفن را جز معايب برشمردم. بنده برای تفسير اين گفته از فلسفه KISS* استفاده می کنم! cool
شما اگه بخواین یه تابلو به دیوار بزنین از میخ طویله استفاده می کنید؟!! خوب برادر من اگه صرفا بخوای یه مشت آدرس و شماره تلفن و آی دی در بانک ات ذخیره کنی، نیازی به یه بانک اطلاعاتی رابطه ای شی گرا(Objct Relational) نداری که! شاید برخی از شما در این زمینه بخواین جر و بحث کنید، اما حسابیش رو بخواین، PostgreSQL در شرایط low-load، به اندازه MySQL سریع نیست. البته جاهایی هم پیش میاد که طراحی قدرتمندتر PostgreSQL در مجموعه نتایج(Resultset) واقعا بزرگ، کارایی خودش رو به رخ MySQL می کشه؛ اما به طور متوسط MySQL برای بیشتر عملیات بازخوانی، رقیب خوبی هست. اگه نیاز شما صرفا یه ذخیره و بازیابی ساده است، بهتره دور و بر PostgreSQL آفتابی نشید.
حسن ختام اینه که PostgreSQL پیچیده تر و خفن تر از MySQL هست. مدیریت مجوزها به سادگی MySQL نیست. در ضمن PostgreSQL با امکاناتی که مهیا کرده، باعث میشه که کاربران مبتدی تا چند وقت همینطور گیج بزنند. شماها(Schemas) و رویه های ذخیره شده(Stored Procedures) با اینکه مفید هستند اما کاملا ضروری و واجب نیستند و شاید فکر کنید وجود اونها جز شلوغ و پلوغ کردن، خاصیتی نداره! بعضی ها هستند وقتی ملزومات کارشون روی میزشون نباشه، بهتر کار می کنند!(تفکرات عجیب غریب اما منطقی!)
همه اینا رو گفتم اما باید اذعان کرد PostgreSQL یک ابزار بسیار خوب حتی عالی برای اکثر کارهاست. ممکنه کاربران اون کمتر از کاربران MySQL باشند، اما همین کاربران محدوداش هم خیلی به اون وفادار هستند. بنده اینجا فرصتی برای توضیح کامل و جامع اون ندارم و صرفا جهت دهی می کنم.
بانک های اطلاعاتی Object Relational یا ORDBMS در مقایسه با بانک های اطلاعاتی رابطه ای که در اوایل دهه ۷۰ میلادی توسعه پیدا کردند، محصولات تقریبا جدیدی هستند.
ORDBMSها علاوه بر بهره گیری از مدل رابطه ای، از بانک های اطلاعاتی آبجکتی هم، مفاهیمی را وام گرفته اند که این نوع بانکها توانایی هندل کردن داده های زنجیره ای، فضایی و Media Objectها را دارند.
یک ORDBMS با بکارگیری خصایص یا پراپرتی های یک آبجکت روی مولفه های یک بانک اطلاعاتی رابطه ای، از مزایای هر دو(رابطه و آبجکت) سود می برد.
در نتیجه با توجه به امکانات آبجکتی جدید PHP 5، این دو ابزار می توانند تقابل خوبی با هم داشته باشند.
این بدان معنی است که انتخاب PostgreSQL، دست توسعه دهنده را به مراتب بازتر گذاشته چنانکه امکان تعریف و افزودن نوع داده های جدید، توابع، عملگرها و حتی تعیین شیوه های شاخص گذاری برای توسعه دهنده امکان پذیر است. خوب از این گفته میشه اینطور نتیجه گرفت که مقایسه پرفورمنس یا کارایی و تلاش برای میزون کردن بانک، کمی دور از دسترس هست؛ بخصوص وقتی با ساختارهای داده پیچیده سرکار داریم.
در سطح ساختار داده، جداول و آبجکت های PostgreSQL، می توانند از توارث ایستا و پویا بهره مند شوند. یعنی اینکه، یک آبجکت فرزند که از آبجکت والد ساخته می شود، می تواند تمام ویژگی های والد خود را به ارث ببرد. حالا این ارث بری یا یکبار در زمان ایجاد آبجکت انجام می شود یا اینکه می توان آن را همیشگی کرد؛ یعنی هر تغییری که در آبجکت والد صورت پذیرد، بچه آبجکت بی نصیب نمونه و خصوصیات عینا منتقل بشه.
در قسمت بعدی در مورد نحوه نصب و کارکردن با این بانک اطلاعاتی توضیحاتی می دهم.
*) KISS = Keep It Simple Stupid
منبع: [ جهت مشاهده لينك عضو شويد ! ]
سرعت، پايداری و قابليت اطمينان
آيا MySQL و يا حتی فايلهای متنی ساده، تمام نيازمندی های ذخیره و بازيابی داده های شما را تامين می کنند؟!
در اين مقاله نگاهی به PostgreSQL می اندازيم که شاید بتوان آن را پدربزرگ بانک های اطلاعاتی کدباز دانست. (تلفظ PostgreSQL به صورت post-gress-q-l می باشد)
چرا PostgreSQL را انتخاب کنيم؟
اينجاست که جماعت متعصب کدباز، دستان خود را در هوا تاب می دهند و با هيجان ناشی از خشم خود فرياد بر می آورند!(چقدر ادبی شد! :D) البته شعف و هيجان آنها قابل درک است! wink
PostgreSQL يک بانک اطلاعاتی کدباز به معنای واقعی کلمه است که تحت جواز(Licence) ساده و قابل انتقال BSD منتشر شده است. در اينجا متن کوتاهی در مورد اين جواز یا پروانه بهره برداری نوشته شده است.
PostgreSQL کاملا مجانی هست. وقتی میگیم مجانیه نه اینکه صرفا هزینه ای نداره، بلکه همانند جواز GNU General Public License می توان کدهای آن را تغییر داده، دوباره بسته بندی کرده و اصلا به عنوان یک برنامه کاربردی Standalone یا تحت برنامه کاربردی که خودتون نوشتید، دوباره توزیع کرد.
PostgreSQL دارای امکانات ويژه ای هست و از استاندارهای ANSI SQL92 و SQL99 هم تبعيت کرده که يا در بانک های ديگه وجود نداره و اگر هم باشه، همچین کامل و شسته رفته نيست؛ علاوه بر اين کار با آبجکت ها و داده های سلسه مراتبی هم با اين بانک اطلاعاتی ميسر است.
البته، هیچ گلی بی عیب نیست. نخست، توانايی PostgreSQL را در زمينه آبجکت ها و داده های سلسه مراتبی را در نظر بگيريد. يه دقيقه صبر کنيد! ما همين الان اين امکان را برای محاسن اين بانک خرج کرديم! می بينم که دوستداران PostgreSQL همچين چپ چپ به بنده نگاه می کنند که چرا اين ويژگی خفن را جز معايب برشمردم. بنده برای تفسير اين گفته از فلسفه KISS* استفاده می کنم! cool
شما اگه بخواین یه تابلو به دیوار بزنین از میخ طویله استفاده می کنید؟!! خوب برادر من اگه صرفا بخوای یه مشت آدرس و شماره تلفن و آی دی در بانک ات ذخیره کنی، نیازی به یه بانک اطلاعاتی رابطه ای شی گرا(Objct Relational) نداری که! شاید برخی از شما در این زمینه بخواین جر و بحث کنید، اما حسابیش رو بخواین، PostgreSQL در شرایط low-load، به اندازه MySQL سریع نیست. البته جاهایی هم پیش میاد که طراحی قدرتمندتر PostgreSQL در مجموعه نتایج(Resultset) واقعا بزرگ، کارایی خودش رو به رخ MySQL می کشه؛ اما به طور متوسط MySQL برای بیشتر عملیات بازخوانی، رقیب خوبی هست. اگه نیاز شما صرفا یه ذخیره و بازیابی ساده است، بهتره دور و بر PostgreSQL آفتابی نشید.
حسن ختام اینه که PostgreSQL پیچیده تر و خفن تر از MySQL هست. مدیریت مجوزها به سادگی MySQL نیست. در ضمن PostgreSQL با امکاناتی که مهیا کرده، باعث میشه که کاربران مبتدی تا چند وقت همینطور گیج بزنند. شماها(Schemas) و رویه های ذخیره شده(Stored Procedures) با اینکه مفید هستند اما کاملا ضروری و واجب نیستند و شاید فکر کنید وجود اونها جز شلوغ و پلوغ کردن، خاصیتی نداره! بعضی ها هستند وقتی ملزومات کارشون روی میزشون نباشه، بهتر کار می کنند!(تفکرات عجیب غریب اما منطقی!)
همه اینا رو گفتم اما باید اذعان کرد PostgreSQL یک ابزار بسیار خوب حتی عالی برای اکثر کارهاست. ممکنه کاربران اون کمتر از کاربران MySQL باشند، اما همین کاربران محدوداش هم خیلی به اون وفادار هستند. بنده اینجا فرصتی برای توضیح کامل و جامع اون ندارم و صرفا جهت دهی می کنم.
بانک های اطلاعاتی Object Relational یا ORDBMS در مقایسه با بانک های اطلاعاتی رابطه ای که در اوایل دهه ۷۰ میلادی توسعه پیدا کردند، محصولات تقریبا جدیدی هستند.
ORDBMSها علاوه بر بهره گیری از مدل رابطه ای، از بانک های اطلاعاتی آبجکتی هم، مفاهیمی را وام گرفته اند که این نوع بانکها توانایی هندل کردن داده های زنجیره ای، فضایی و Media Objectها را دارند.
یک ORDBMS با بکارگیری خصایص یا پراپرتی های یک آبجکت روی مولفه های یک بانک اطلاعاتی رابطه ای، از مزایای هر دو(رابطه و آبجکت) سود می برد.
در نتیجه با توجه به امکانات آبجکتی جدید PHP 5، این دو ابزار می توانند تقابل خوبی با هم داشته باشند.
این بدان معنی است که انتخاب PostgreSQL، دست توسعه دهنده را به مراتب بازتر گذاشته چنانکه امکان تعریف و افزودن نوع داده های جدید، توابع، عملگرها و حتی تعیین شیوه های شاخص گذاری برای توسعه دهنده امکان پذیر است. خوب از این گفته میشه اینطور نتیجه گرفت که مقایسه پرفورمنس یا کارایی و تلاش برای میزون کردن بانک، کمی دور از دسترس هست؛ بخصوص وقتی با ساختارهای داده پیچیده سرکار داریم.
در سطح ساختار داده، جداول و آبجکت های PostgreSQL، می توانند از توارث ایستا و پویا بهره مند شوند. یعنی اینکه، یک آبجکت فرزند که از آبجکت والد ساخته می شود، می تواند تمام ویژگی های والد خود را به ارث ببرد. حالا این ارث بری یا یکبار در زمان ایجاد آبجکت انجام می شود یا اینکه می توان آن را همیشگی کرد؛ یعنی هر تغییری که در آبجکت والد صورت پذیرد، بچه آبجکت بی نصیب نمونه و خصوصیات عینا منتقل بشه.
در قسمت بعدی در مورد نحوه نصب و کارکردن با این بانک اطلاعاتی توضیحاتی می دهم.
*) KISS = Keep It Simple Stupid
منبع: [ جهت مشاهده لينك عضو شويد ! ]