بخشی از مقاله
مروري بر سيستمهاي بانك اطلاعاتي و مزاياي Oracle
* مقدمه
دانش بشر در گستره علوم و فنون ، طي پنجاه سال گذشته از رشدي بéسابقه برخوردار بوده است و اين رشد و تكامل سريع و بيمانند را بايد متأثر از تماسك علوم مختلف و استفاده پژوهشگران از نتايج دستاوردهاي يكديگر دانست . امروز ديگر كمتر كشف و اختراعي است كه اتفاقي و تصادفي باشد و تقريبا كليه نوآوريها در يافتن ارتباط صحيح بين اطلاعات موجود بشر در عرصههاي گوناگون خلاصه شود . از اينروست كه در نيمه دوم قرن بيستم شاهد هستيم كه كشورهاي توسعه يافته بيش از هر زمان به اطلاعات و سازماندهي و مديريت آنها بها دادهاند . مبالغ هزينه شده در مراكز تحقيقاتي و دانشگاهي ، خود گواه بر اين ادعاست و اين توجه ، پاسخي است به پديده " انفجار اطلاعات " در چند دهه اخير .
در طي سالهاي اخير ، شاهد تحولات عميق در نحوه مديريت سازمانها بر اساس نظريه نوين مديريت سيستماتيك بوده و همگام با آن بطور پيوسته ناظر بر افزايش نياز مديران به اطلاعات و منابع اطلاعاتي هستيم .گفته شود نود درصد از احتياجات لازم براي اخذ يك تصميم را اطلاعات تشكيل دهد و ده درصد باقي مانده تابع انگيزه و سليقه باشد و در اين راستا پيشرفت بشر در زمينه تكنولوژي اطلاعاتي را بطور قطع بايد مرهون كامپيوتر و علوم انفورماتيك دانست .
اين مقاله حاصل مطالعه تجربيات در امر تجزيه و تحليل سيستمهاي گردش اطلاعات و برنامهنويسي كاربردي باشد و حاوي مطالبي اجمالي پيرامون شناخت و نحوه طراحي " سيستمهاي اطلاعاتي " و در نهايت مروري بر بانكهاي اطلاعاتي توسعه يافته در ORACLE باشد .
با گسترش تكنولوژي كامپيوتر ، افزايش سرعت پردازش آنها و كاهش قيمت ، در حقيقت بهتر و بهتر شدن نسبت عملكرد به قيمت ( Price / Performance ) ، تمامي فعاليتهاي علمي ، تكنولوژي ، مالي ، تجاري ، مديريتي و حتي توان تفكر و مرزهاي ذكاوت و انديشه انسان ، افق جديدي يافته است . از همان ابتداي تولد تكنولوژي كامپيوتر ، دانشمندان و محققين زيادي در نقاط مختلف جهان درصدد رسيدن به يك هدف متعالي بودهاند و آن هدف عبارت بوده است از ساخت كامپيوترهايي كه خروجي آن داراي خصوصيتي باشد كه نتوان آنرا با نتيجه تلاش فكري يك انسان متخصص و متفكر فرق نهاد .
بدون شك ، نتيجه چنين خصوصيت و توانايي وراي تصور باشد . فقط توان گفت ، تأثر آن در تراوشات فكري بشر ، توسعه علوم و تكنولوژي فوقالعاده خواهد بود . مگر نه اين است كه انقلاب اول صنعتي فقط توان بازوان انسان را افزايش داد و نه تفكر .
از دنياي كامپيوتر ، بخشهاي سنتي نرمافزاري و سختافزاري آن براي جامعه علمي و صنعتي كشورمان آشناست . اما ، جاي خالي بخشهاي حيــاتي ، توانمنــد و مهمي چـون هـوش مصنوعـي ( Artifical Intelligence - AI ) ، سيستمهـــاي خبــــــره ( Expert or Knowledge Base Systems ) ، تكنـــولــــوژي اطــــلاعـــــــات ( Information Technology - IT ) ، پردازش مـــوازي ( Parallel Prrocessing ) ، مديريت بانكهاي اطلاعاتـي (Database Computer Aided Instruction , Multimedia , Management Systems - DBMS ) Virtual Reality - VR ,، . . . ، و از بين زبانهاي برنامهنويسي ، جاي اكثر زبانهاي هوش مصنوعي و بالاخره زبان Ada ، خاليست .
* مديريت بانكهاي اطلاعاتي
تعاريف متعددي براي بانك اطلاعاتي ( Database ) وجود دارد. يك تعريف نوعي تواند به صورت ذيل باشد :
" يك بانك اطلاعاتي عبارتست از ، مجموعهاي مرتبط از اطلاعات با اضافاتي قابل كنترل ( Controlled Redundancy ) بمنظور بكارگيري در يك يا چند كاربرد بصورت انتخابي و اختياري ، اين اطلاعات طوري جمعآوري شده و تشكيل مجموعه دهند كه مستقل از برنامههايي كه آنها را مورد استفاده قرار خواهند داد باشند. روش افزايش اطلاعات به بانك اطلاعاتي و فراخواني اطلاعات موجود طبق يك روش تعريف شده صورت گيرد . "
مديريت اطلاعات موجود در بانك اطلاعاتي توسط نرمافزار جانبي ديگري صورت گيرد ( Database Management System - DBMS ) . يك نرمافزار مديريت بانكهاي اطلاعاتي اصولا بايد خصوصيات ذيل را داشته باشد :
ـ مستقــــل از نـــوع اطلاعـــات موجـــود در بانك اطلاعاتـي باشــــد ( Data Independence ) . يعنــي نرمافــزار بايد خصوصيت يا تـوان پردازش اطلاعات ( Data Processing ) را از خــود اطلاعــــات ( Data ) تميز دهد .
ـ توان انجام تستهاي لازم بمنظور حصول اطمينان از همگوني اطلاعات ، بايد در بيان آنها منظور شده باشد . به بيان ديگر ، نرمافزار مديريت بانك اطلاعاتي ، تضمين لازم در اين رابطه را ايجاد نموده و در نهايت انسجام اطلاعات ( Data Integrity ) ، در بانك اطلاعاتي حفظ شود .
ـ همزماني و همگوني اطلاعات ( Data Concurrency & Consistency ) ـ از آنجائيكه بانكهاي اطلاعاتي منابعي هستند كه چند كاربر مختلف نياز به دسترسي به اطلاعات موجود در آنها دارند ، نرمافزار مديريت بانك اطلاعاتي بايد همزماني و همگوني اطلاعات در اختيار قرار گرفته شده را ميسر سازد . به عبارت ديگر كاربران مختلف قادر باشند به يك اطلاعات خاص ، بطور همزمان و همگون دسترسي داشته باشند .
ـ قابليت احيا و بازبافت ( Data Recovery ) ـ يك نرمافزار مديريت بانك اطلاعاتي كليه تغييرات اعمال شده روي بانك اطلاعاتي توسط استفاده كنندگان مختلف را پيگيري و ثبت كند ، و پس از پايان كار هر استفاده كننده ، بايد كليه تغييرات اعمال شده بطور اتوماتيك به حالت اول برگردانده شود . از طرفي ، نرمافزار مديريت بانك اطلاعاتي بايد در فواصل زماني معين كليه اطلاعات موجود در بانك را كپي و حفظ نمايـد ( Copy & Back - Up ) .
ـ كنترل دسترسي ( Access Control ) ـ نرمافزار مديريت بانك اطلاعاتي بايد دسترسي افراد مختلف به بخشهاي بانك را كنترل نموده و تشخيص لازم را در رابطه با مجوزهاي مربوطه براي هر كاربر يعني اجازه خواندن ( Read ) و تغيير دادن ( Modify ) اطلاعات را بدهد .
ـ كنترل متمركز ( Centralised Control ) ـ نرمافزار DBMS بايد اطلاعات موجود در بانك اطلاعاتي را يك سرمايه گرانبها و اصلي شركت به حساب آورد . از طرف ديگر ، بايد توان اعمال استاندارهايي از قبيل قفل كردن ركوردها ، جداول و سطوح تنظيم شده اطلاعات را هنگام اعمال چكهاي لازم بمنظور به روز كردن اطلاعات ( Up - dating ) و يافتن اشتباهات ، داشته باشد .
ـ نگهداري ، تعمير و تعميم اطلاعات DBMS - ( Data Maintenance ) بايد قابليت سوار و پياده كردن اطلاعات و سازماندهي مجدد آنها را داشته باشد .
وقتي كه تعداد و نوع اطلاعات چه ساده و يا پيچيده در يك سيستم ، محدود باشد ، امكانات چنداني از طرف نرمافزار مديريت بانك اطلاعاتي براي ثبت و حفظ اطلاعات مورد نياز نيست . اما ، با افزايش گستردگي ، پيچيدگي و تنوع اطلاعات و تعداد كاربران بانك اطلاعاتي ، وجود خصوصيات فوق ضروريست .
* انواع سيستمهاي مديريت بانكهاي اطلاعاتي
اساسا به 5 نوع سيستم مديريت بانك اطلاعاتي توان اشاره كرد :
1 ـ ترتيبي Hierarchic
2 ـ شبكهاي Network
3 ـ مرتبطي Relational
4 ـ متن آزاد Free Text
5 ـ موضوعي Oriented Object
ـ سيستم مديريت ترتيبي بانك اطلاعاتي ( Hierarchic ) ، داراي واحدهاي مختلف اطلاعات ( Data Units ) بصورت ركورد يا ليست است كه در يك ساختار شجرهاي يا شاخهاي مربوط به يك ساختار خاص سازمان يافتهاند . هر واحد اطلاعات فقط و فقط به يـــك شاخــــه قبـــل از خود وابسته باشد ( يك مالك يا صاحب دارد) .امــــا ، ممكــن است داراي چند واحد عضـو باشد . سيستـــم مديريت اطلاعـــات ( Information Management System ) شــــــركــت ( IMS ) , IBM و يــــــا ( Virtual Storage ) , VM ، از اين نوع سيستم مديريت بانك اطلاعاتي است .
ـ سيستم شبكهاي ( Network DBMS ) مديريت اطلاعات تصويري شبكهاي از اطلاعات را در يك شبكه كامپيوتري ارائه دهد . ركورد و يا ليستهاي اطلاعات ممكن است از نظر داخلي بهم مربوط و مرتبط بوده و يا حتي داراي روابط ترتيبي باشند . كه در اينصورت ، از يك ساختار قابل انعطافتري برخوردار خواهند بود . با اين حال ، وقتي كه يك ساختار شبكهاي بصورت بانك اطلاعاتي ، پياده شود ، اعمال تغييرات بعدي روي آن بسيار مشكــل خواهــد بود . سيستــم مديــريت بانــك اطلاعاتــي منســجم ( Integrated Database Management System - IDMS ) ، كه روي ماشينهاي ICL و تحت سيستم عامل VME قابل اجراست ، يك سيتم مديريت بانك اطلاعاتي شبكهاي است كه اكثرا توسط سازمانهاي دولتي بكار گرفته شود .
ـ سيستمهــــــــاي مديـــريت مرتبطـــي بانكهـــــاي اطلاعــاتـــي ( Relational DBMS ) ، طوري در نظر گرفته شدهاند كه اطلاعات را بصورت ركـــــورد ( ليستهاي ) يا جداول دو بعدي در خود نگهدارند . طوري كه هر جدول قابل تصوير روي يك ليست كه شامل چندين ستون و رديف اطلاعات است باشد . ارتباط بين اطلاعات موجود در ستونها و رديف هر ليست توسط نشانگرهاي خاصي حفظ شود . ايجاد جداول جديد ، با انتخاب رديف و ستونهايي از جداول پيشين امكانپذير است .
سيستم مديريت بانكهاي اطلاعاتي مرتبطي ، داراي قابليت انعطاف بسيار زياد از نظر توان دسترسي و همچنين سهولت تغيير ساختاري است . البته به علت ضعف ناشي از قابليت انعطاف زياد ، توان عملكرد ( Performance ) تقريبا پائين است . ولي بايد توجه داشت كه اين مشكل روز به روز با ارائه نسخههاي جديدتر حل خواهد شد و نمونههاي زيادي از قبيل سيستمهاي مديريت بانكهاي اطلاعاتي وجود دارند كه Oracle و Ingres از همه شاخصتر باشند .
ـ بانك اطلاعاتي با متن آزاد ( Free Text Database ) ، همانطوري كه از نامش پيداست ، امكان حفظ ، بازنگري و جستجوي اطلاعات متني را كه به زبان انگليسي بوده و يا از يــك ساختار آزاد ( Free Format ) برخوردار باشند را ، ممكن سازد . در حقيقت هر ركورد يا ليست ، شامل خطوط و مجموعه جملاتي است كه متن را تشكيل دهند . اكثر بانكهاي اطلاعات متني ، داراي ساختاري ترتيبي هستند .
مانند ، كتابها ، كاتالوگها ، نامهها روزنامهها كه هر يك به نوبه خود از بخشها ، پاراگرافها ، جملات و نهايتا كلمات تشكيل يافتهاند . ساختار هر يك از بانكهاي اطلاعات متني ، بسته به نوع محصول ، متفاوت است . اما ، عليالاصول داراي فايلهاي متن و ايندكس كه به نوبه خود شامل كلمات كليدي و نشانگرهاي خاص است ، ميباشند . اين گونه بانكهاي اطلاعاتي بيشتر براي بازيافت و فراخواني اطلاعات ( Retrieval ) بكار روند ، مانند بانكهاي اطلاعاتي بـــراي فراخوانـــي اطلاعـــات كمكـــي در يك كتابخانه . بانكهاي اطلاعاتي CAIRS , STATUS و BASIS از اين نوع ، قابل ذكر هستند .
* هوش مصنوعي ( Artificial Intelligence - AI )
هوش مصنوعي عبارتست از ايدههاي مطرح در علم كامپيوتر كه هدف آن طراحي سيستمهاي كامپيوتري باهوش است . هدف نهايي آن است كه اين سيستمها خصوصيت ذاتي انسان مانند ايجاد ارتباط از طريق تجربه و هنر حل مسائل و غيره را دارا شوند . به عبارت ديگر ، هوش مصنوعي عبارتست از مجموعه ايدههايي كه به كامپيوتر كمك كند كه باهوش يا ذكاوت شود . اما هوش يا ذكاوت چيست ؟ آيا توانايي طرح دليل است ؟ توانايي كسب و بكارگيري دانش است ؟ و يا توانايي درك ، جابجايي و بكارگيري هر آنچه كه در دنياي فيزيكي است باشد ؟ بدون شك تمامي اينها ، بخشي از هوش و ذكاوت بوده ولي تمامي آن چيزي كه بتوان هوش و ذكاوت ناميد نيست .
باهوش كردن كامپيوترها ، به ما امكان درك بهتر پديده هوش و ذكاوت را دهد . انسان به دلايل زيادي نيازمند باهوش كردن كامپيوترهاست . سادهترين دليل پيچيدهتر شدن زندگي بشر در كره زمين و گسترش ارتباطات و پارامترها و متغيرهايي است كه زندگي او را تحت تأثير قرار دهد . اتخاذ تصميمات به موقع و با بهترين و كاملترين اطلاعات ، مستلزم داشتن توان دسترسي نه تنها به حجم وسيع اطلاعات ، بلكه در نظر گرفتن تأثيرات متقابل آنهاست . مديريت انرژي جهان ، تغذيه و منابع انساني از جمله مواردي است كه بدون بكارگيري توان پردازش كامپيوترها و همچنين كمك از ذكاوتي كه در استنتاجات و تصميمگيريها به انسان كمك كند امكانپذير نيست .
كامپيوتر نه تنها بايد در محاسبات ساده و مهندسي كمك كند ، بلكه بايد در محاسباتي كه نشانگر نوعي هوش و ذكاوت است به عنوان ابزاري قابل اعتماد در كنار انسان باشد . به عنوان مثال در :
** تجارت :
پيشنهاد استراتژي مالي ، ارائه راهنمائيها يا توصيههاي بازاريابي ، ارجاع مسائل خاص به گروههاي تخصصي مربوطه ، خلاصه كردن اخبار ، تصحيح املائي ، انشايي و تدوين نهايي گزارشات .
** مهندسي طراحي :
چك كردن روشهاي طراحي ، فراخواني و بازيابي طراحيهاي انجام شده ، ارائه توصيههايي در جهت بهينهسازي با استفاده از تجارب گذشته بمنظور افزايش قابليت اعتماد و كيفيت محصول همچنين ، كاهش زمان طراحي و كمك در ايجاد محصول و يا محصولات جديد .
** مهندسي توليد :
تدوين فرآيندهاي ساخت ، مطالعه روش مونتاژ و كنترل كيفيت و ساير فعاليتهاي پشتيباني توليد .
** مهندسي كشاورزي :
تدوين برنامه و زمان ضهزني و سمپاشي ، كوددهي ، در تمامي فعاليتهاي كشت ، داشت و برداشت ، مخصوصا برداشت محصولات مختلط و متنوع از يك مزرعه خاص .
** آموزش و تدريس :
بعنوان بهترين ابزار قابل انعطاف آموزشي و كتابي بزرگ در تمامي رشتههاي علوم و مهندسي ، ابزاري مطمئن و جايگزين انواع ميزها ، تابلوها و آزمايشگاههاي برزگ در صنايع .
** بهداشت و درمان :
كمك در تشخيص بيماري و نوع درمان ، انتخاب بهترين آلترناتيو درمان ، مراقبتهاي ويژه از بيماران و ساير فعاليتهاي درماني خصوصا تدوين روش در جراحيهاي پيچيده مانند جراحي انواع تومورها ، جراحي در قاعده جمجمه و يا جراحي روي سلسله عصبي .
* سيستمهاي خبره ( Expert or Knowledge Base System )
خبره كيست ؟ خبره ، كسي است كه قادر است يك نوع مسئله خاص را حل كند . حلي مطمئن و قابل اعتماد . منشاء خبرهگي و مهارت آنها ، نتيجه تجربه ساليان ، كسب دقيق يك دانش خاص با جزئيات گسترده باشد . نمونه اين گونه افراد پزشكان عمومي با سابقه ، جراحان حاذق ، طراحان ماشين مجرب ، و تحليلگران نتايج آزمايشات در اكتشافات معادن تعميركاران تجهيزات تكنولوژيك و ... باشند .
متخصصيــن علوم كامپيوتر تعاريف متفاوتي را براي سيستمهاي خبره ارائه نمودهاند . به زبان ساده ، ميتوان گفت يك سيستم خبره عبارتست از
سيستمي كه :
1ـ بتواند يك مسئله واقعي دنياي امروز در زمينه مهندسي ، علوم ، سياسي ، مالي و ... را كه حل آن مستلــزم بكارگيـري و مشــاوره با افــراد خبره است ، تجزيــه و تحليل نمايد .
2ـ بتواند مسئلهاي با خصوصيات فوق را با بكارگيري يك برنامه كامپيوتري كه حاوي تجربه ، روش تجزيه و تحليل و استدلالات يك خبره در آن زمينه خاص است ، به همان نتيجه برسد كه يك فرد خبره رسد ، ( اگر مسئله به او ارجاع شد ) .
در حقيقت در طراحي و ايجاد يك سيستم خبره تلاش بر اين است كه ، برنامهاي كامپيوتري تهيه شود ، كه بتواند جزئيات تجربيات يك فرد خبره يا در حالت ايدهآل ، تجربه بشري در يك زمينه خاص را جمعآوري نموده و طبق يك نظام قانونمند به همان طريقي كه در حافظه يك انسان خبره قرار دارد ، آنها را دستهبندي نموده ، و مجددا به همان روش استدلالي كه فرد خبره آن تجربيات و دانش را بكار گرفت تا به يك راه حل خاص براي يك مسئله تخصصي معين برسد ، استدلال نموده و با خبرهگي و مهارت ارائه طريق نمايد .
در بيست سال گذشته گروههاي تحقيقاتي زيادي در زمينه هوش مصنوعي ، سيستمهاي خبره متعددي كه نيازمند تخصص و تجربه افراد خبره براي حل مسائل خاص باشند ، طراحي و توسعه دادهاند . از جمله ، در زمينههاي تشخيص بيماري و تعيين روش درمان ( Medical Diagnosis & Treatment ) ، آناليز تركيبات و ساختارهاي شيميائـــــي ( Chemical Structure Analysis ) ، اكتشافــــات زميـنشناســــي ( Geological Exploration ) ، انتخــاب نوع پيكربنــدي و ساختـــاري كامپيوتــــر ( Computer Configuration Seclection ) ، تشخيـص و تعمير نوع عيوب كامپيوتــــر ( Computer Fault Diagnosis & Repair ) .
انتخاب موارد كاربردي براي طراحي و توسعه سيستمهاي خبره بسيار زياد است . در حقيقت هر زمان كه تخصص يا دانش در يك زمينه يا زمينههاي خاص مورد نياز شديد بوده ولي تعداد مورد نياز متخصص در دسترس نباشد ، سيستمهاي خبره كامپيوتري توانند با ارائه مشاوره و راه حل ، دانش و تخصص مورد نياز را در اختيار طيف بسيار گستردهتري قرار داده و رفع كمبود نمايند .
از جمله سيستمهاي خبرهاي كه به ميزان قابل توجهي مورد استفاده قرار گرفتهاند موارد ذيل قابل ذكرند :
1ـ سيستــــم PUFF ، با كاربـــرد در زمينه تستهـــاي عملكــرد ريـــوي ( Pulmonary FunctionTests ) تهيه شده در مركز درماني پاسفيك دانشگــاه استنفورد ( Stanford / Pacific Medical Center ) .
2ـ سيستـــم MYCIN ، در زمينـــه معالجــــه بيماريهــاي ميكروبــــي ( Antimicrobial Therapy ) تهيه شده در استنفورد .
3ـ سيستم RI ، براي انتخاب پيكربندي يا ساختار كامپيوترهاي VAX كه توسط شركت DEC و دانشگاه كارنيگـــي ( CMU ) تهيه شده است .
4ـ سيستم ACE ، براي كمك در زمينه تعميرات كابلهاي تلفن كه توسط آزمايشگاههاي بل تهيه شده ( Bell Labs ) است .
* نتيجـــه :
توسعه صنايع ، همراه با گسترش سازمانهاي مختلف ديگري كه براي تأمين نيازمنديهاي روزافزون اجتماع پا به عرصه وجود نهادهاند ، مسائل سازماني و مديريت متعددي را ايجاد كرده است كه حل و فصل آنها با ديد علمي جامع و جهاني مديريــــت" ارتباط مستقيم دارد . با توجه به كمبود نيروي انساني و منابع انساني و منابع مادي و توسعه مراكز خدماتي و توليدي و به اقتضاي پيشرفت تكنولوژي و تكامل ارزشهاي فرهنگي ، استفاده از كامپيوتر بيش از هر زمان ديگر مورد توجه قرار گرفته است .
نرمافزار ORACLE از جمله ابزارهايي است كه بمنظور استفاده هر چه بيشتر از امكانات كامپيوتري اين مراكز ، مورد توجه تحليلگران سيستم و برنامهنويسان كاربردي قرار گرفته است .
ORACLE برنامهاي است كه توسط شركت ORACLE كه سازنده نرمافزارهاي پايگاه دادههاي رابطهاي كامپيوترهاي بزرگ و كوچك باشد ، تهيه گرديده است و كاربران كامپيوترهاي APPLE و يا IBM و سازگار با آن را قادر سازد به دادههاي پايگاههاي اطلاعاتي بسيار بزرگ بطور مشترك دسترسي يابند .
اغلب برنامهنويسان در دنياي كامپيوترهاي بزرگ و كوچك ، ORACLE را بعنوان يكي از سيستمهاي مديريت پايگاه دادههاي رابطهاي و پيشرو DBMSميشناسند . با استفاده از نسخههاي متعدد ORACLEبراي كامپيوترهاي شخصي ، كساني كه با لوتوس Dimension , Super Card , Hyper Card , ( 123 ) و يا dBASE III PIUS كار كنند ، ميتوانند به پايگاههاي دادههاي كامپيوترهاي بزرگ مانند SQL / DS , DB2 , ORACLE دسترســـــي پيــــدا نماينـــد . نرمافــــزار ORACLE با توجه به امكانات SQL ( Structured Query Language ) ، و تمامي فرامين آن را پشتيباني كند و قبل از هر مقدمهاي ، بايد با مفاهيم جديد در SQL * PLUS و ابزارهــاي جانبي آن مانند SQL * Forms و ... آشنا گرديد .
SQL در سيستمهاي مديريت پايگاه داده يك زبان پرسوجوي IBM است كه بطور گسترده در كامپيوترهاي بزرگ و كوچك بكار رود . اين زبان بطور روزافزونــي در شبكههاي Client / Server بعنوان راهي براي ايجاد امكان در كامپيوترهاي شخصي بمنظور دسترسي به منابع مشترك پايگاه داده ، استفاده شود .
SQL كه اصلا توسط ر.د چمبرلين ( D.D . Chamberlin ) و ديگر پژوهشگران مركز تحقيقات IBM تهيه شده است ، ميتواند با انواع مختلف نرمافزارهاي پايگاه دادهاي ، مورد استفاده قرار گيرد .
در اين مقاله تلاش شد كه نرمافزار ORACLE بطور اجمالي معرفي و موارد كاربردي آن همراه با مثالهاي متعدد در اختيار قرار گيرد .
مأخذ: مديريت بانكهاي اطلاعاتي در ORACLE
http://www.docs.hbi.ir/docs/db/rport/doc/database-report-v01.DOC
2) معــرفـي POSGRESQL :
معــرفـي POSGRESQL با سوالاتي كه اغلب در مورد PostgreSQL پرسيده مي شوند:
نگهدارنده اصلي فايل (زبان انگليسي)در حال حاضر : Bruce Momjian pgman@candle.pha.pa.us
نگهدارنده فايل به زبان فارسي: m.taghizadeh@imenafzar.net محمود تقيزاده مهرجردي
آخرين نسخه اين فايل را ميتوانيد از اين آدرس بگيريد http://www.PostgreSQL.org/docs/faqs/FAQ.html
سوالاتي كه در مورد يك سكوي(پلتفرم) خاص است در اين آدرس جواب داده شده اند http://www.PostgreSQL.org/docs/index.html
--------------------------------------------------------------------------------
سوالات عمومي
1.1) PostgreSQL چيست و چگونه بايد آن را تلفظ كرد؟
1.2) قانون كپي رايت (حقوق معنوي) در مورد PostgreSQL به چه صورت است؟
1.3) PostgreSQL روي چه نوع يونيكسهايي اجرا ميشود؟
1.4) روي چه محيطهاي غير يونيكسي ميتوان آن را اجرا كرد؟
1.5) PostgreSQL را از كجا ميتوانم بگيرم؟
1.6) از كجا خدمات پشتيباني بگيرم؟
1.7) آخرين نسخه اعلام شده چيست؟
1.8) چه مستندات و راهنمائيهايي وجود دارند؟
1.9) چگونه ميتوانم ازاشكالات شناخته شده و يا امكاناتي كه در اين پايگاه داده وجود ندارد مطلع شوم؟
1.10) چگونه ميتوانم زبان SQL را ياد بگيرم؟
1.11) آيا PostgreSQL مشكل Y2K دارد يا خير؟
1.12) چگونه ميتوانم به تيم برنامه نويس PostgreSQL ملحق شوم؟
1.13) چگونه ميتوانم يك اشكال را به گروه برنامه نويس اعلام كنم؟
1.14) وضعيت PostgreSQL در مقايسه با ساير DBMSها به چه صورت است؟
1.15) من چگونه ميتوانم از نظر مالي به PostgreSQL كمك كنم؟
سوالات مربوط به استفاده از پايگاه داده
2.1) آيا هيچ درايور ODBC براي PostgreSQL وجود دارد؟
2.2) چه ابزارهايي براي استفاده از PostgreSQL با صفحات وب وجود دارد؟
2.3) آيا PostgreSQL يك واسط كاربري گرافيكي دارد؟
2.4) با چه زبانهاي برنامهنويسي ميتوان با PostgreSQL ارتباط برقرار كرد؟
سوالات مربوط به راهبري
3.1) چگونه ميتوانم PostgreSQL را در شاخهاي غير از /usr/local/pgsql/ نصب كنم؟
3.2) چرا موقعي كه من برنامه postmaster را اجرا مي كنم پيام Bad system call و يا core dump ميگيرم؟
3.3) چرا موقعي كه من سعي ميكنم برنامه postmaster را اجرا كنم خطاي IpcMemoryCreate ميگيرم؟
3.4) چرا موقعي كه من سعي ميكنم برنامه postmaster را اجرا كنم خطاي IpcSemaphoreCreate ميگيرم؟
3.5) چگونه ميتوانم اتصالات ساير ماشينها را كنترل كنم؟
3.6) براي كارايي بالاتر و بهتر پايگاه داده من چه تنظيماتي را بايد انجام دهم؟
3.7) چه امكاناتي براي پيدا كردن اشكال وجود دارد؟
3.8) چرا موقعي كه من ميخواهم به پايگاه داده وصل شوم پيام "Sorry, too many clients" ميگيرم؟
3.9) در شاخه pgsql_tmp چه چيزي قرار دارد؟
3.10) چرا براي به روز كردن نسخه پايگاه داده من بايد كل داده ها را dump و مجدداً restore كنم؟
3.11) از چه سخت افزاري بايد استفاده كنم؟
سوالات عملياتي
4.1) تفاوت بين binary cursors و Normal cursors چيست؟
4.2) من چگونه ميتوانم فقط روي چند رديف اول يا يك رديف تصادفي درخواست SELECT بزنم؟
4.3) من چگونه ميتوانم ليستي از جداول يا ساير چيزهايي كه در psql وجود دارد را ببينم؟
4.4) چگونه يك ستون جدول را حذف ميكنيد؟ چگونه نوع داده آن را عوض كنيم؟
4.5) حداكثر اندازه يك رديف، جدول و خود پايگاه داده چقدر است؟
4.6) چقدر فضاي ديسك سخت براي ذخيره كردن دادههاي يك فايل متني مورد نياز است؟
4.7) چگونه ميتوانم بفهمم كه چه كاربران، پايگاه داده، نمايه و جداولي در سيستم تعريف شده است؟
4.8) چرا درخواستهاي من كند اجرا ميشوند يا چرا از نمايه ها استفاده نميكنند؟
4.9) چگونه ميتوانم نحوه بررسي درخواست را توسط بهينهساز درخواستها مشاهده كنم؟
4.10) نمايه R-tree چيست؟
4.11) بهينه ساز تكويني درخواست چيست؟ (Genetic Query Optimizer)
4.12) چگونه از عبارات منظم براي جستجو استفاده كنم؟ چگونه جستجويي انجام دهم كه حساس به متن نباشد؟ چگونه براي يك جستجوي غير حساس به متن از نمايه استفاده كنم؟
4.13) چگونه ميتوانم در يك درخواست تشخيص دهم كه يك فيلد NULL است؟
4.14) تفاوت بين گونههاي مختلف character چيست؟
4.15.1) چگونه ميتوانم يك فيلد سريال يا افزايشي ايجاد كنم؟
4.15.2) چگونه ميتوانم مقدار يك درج سريالي را بدانم؟
4.15.3) آيا توابع ()nextval و ()currval منجر به ايجاد شرايط race براي ساير كاربران مي شوند؟
4.15.4) چرا اعداد سريالي مربوط به تراكنشهاي abort شده مجدداً استفاده نمي شود؟ چرا بين اعداد سريالي يك فاصله خالي ايجاد مي شود؟
4.16) OID و TID چه هستند؟
4.17) معني بعضي از ترمها و كلماتي كه در PostgreSQL استفاده ميشود چيست؟
4.18) چرا من خطاي "ERROR: Memory exhausted in AllocSetAlloc" ميگيرم؟
4.19) از كجا تشخيص دهم كه ويرايش يا نسخه PostgreSQLيي كه من استفاده ميكنم چيست؟
4.20) چرا در حين اجراي عمليات روي large-objectها خطاي "invalid large obj descriptor"به وجود مي آيد؟
4.21) چگونه يك ستون ايجاد كنم كه مقدار زمان جاري را به عنوان مقدار پيشفرض داشته باشد؟
4.22) چرا زير درخواستهايي كه از IN استفاده ميكنند كند هستند؟
4.23) چگونه ميتوانم يك الحاق خارجي (outer join) انجام دهم؟
4.24) چگونه ميتوان درخواستهايي از چند پايگاه داده توليد كرد؟
4.25) چگونه خروجي يك تابع ميتواند چند رديف يا ستون باشد؟
4.26) در توابع PL/PgSQL چرا نميتوان با اطمينان جداول موقت را ايجاد يا حذف كرد؟
4.27) چه گزينههايي براي تكرار (replication) وجود دارد؟
4.28) چه گزينههايي براي رمزنگاري وجود دارد؟
توسعه PostgreSQL
5.1) من يك تابع نوشتهام. چگونه آن را در psql اجرا كنم؟ چرا با اجراي آن core dump ميگيرم؟
5.2) چگونه ميتوانم در توليد نوعها و توابع جديد و جالب براي PostgreSQL همكاري و مشاركت داشته باشم.
5.3) چگونه ميتوانم يك تابع به زبان C بنويسم كه خروجي آن يك tuple (چند تايي) باشد؟
5.4) من يك فايل منبع را عوض كرده ام چرا در عمليات كامپيل مجدد آن تغيير ديده نميشود؟
--------------------------------------------------------------------------------
سوالات عمومي
1.1) PostgreSQL چيست و چگونه آن را بايد تلفظ كرد؟
PostgreSQL به صورت Post-Gres-Q-L تلفظ ميشود. يك فايل صوتي در آدرس http://www.postfresql.org/postgresql.mp3 براي كساني كه مايلند تلفظ صحيح را بشنوند وجود دارد.
PostgreSQL از روي سيستم مديريت پايگاه داده POSTGRES توسعه داده شده است (هنوز هم بعضي مواقع براي سادگي به آن Postgres گفته ميشود) كه يك نمونه تحقيقاتي از پايگاه دادههاي نسل بعد است. PostgreSQL همان الگوي داده قوي و انواع داده را حفظ كرده است ولي زبان PostQuel را با يك زيرمجموعه پيشرفته از SQL جايگزين كرده است. PostgreSQL متن باز بوده و متن كامل آن در دسترس است.
PostgreSQL توسط يك تيم برنامهنويس كه همگي در گروه پست الكترونيك برنامهنويسان PostgreSQL عضو هستند، انجام ميشود. هماهنگ كننده اصلي در حال حاضر Marc G. Fournier به آدرس scrappy@PostgreSQL.org ميباشد. (براي ديدن نحوه ملحق شدن به اين تيم قسمت 1.6 را ببينيد). اين تيم در حاضر مسئوليت تمام مسائل مربوط به برنامهنويسي PostgreSQL را بر عهده دارد. اين يك پروژه گروهي است و تحت كنترل هيچ شركتي نيست. براي اطلاعات بيشتر در مورد اين تيم به آدرس http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html مراجعه كنيد.
اولين نسخه PostgreSQL توسط Andrew Yu and Jolly Chen به وجود آمد. افراد بسياري در توسعه و رفع اشكال و انتقال آن شركت كردهاند. متن اصلي Postgres كه PostgreSQL از روي آن نوشته شده است، توسط تعداد زيادي دانشجوي كارشناسي ارشدو دانشجوي كارشناسي و تيم برنامهنويسي كه تحت نظر پروفسور Michael Stonebrake در دانشگاه بركلي،كاليفرنيا كار ميكردهاند نوشته شده است.
نام اصلي نرم افزار در دانشگاه بركلي Postgres بود. در سال 1995 بعد از اضافه شدن SQL نام آن به Postgres95 تغيير داده شد. در سال 1996 نام آن به PostgreSQL تغيير داده شد.
1.2) قوانين كپي رايت در مورد PostgreSQL به چه صورت است؟
PostgreSQL تحت قانون كپي رايت زير قرار دارد:
PostgreSQL Data Base Management System
Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group Portions Copyright (c) 1994-6 Regents of the University of California
Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies.
IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
قانون بالا ليسانس BSD كه يك ليسانس كلاسيك براي متنهاي باز است ميباشد. هيچ محدوديتي در مورد نحوه استفاده از متن در آن ديده نميشود. ما آن را دوست داريم و هيچ قصدي براي تغيير آن نداريم.
1.3) PostgreSQL روي چه نوع يونيكسهايي اجرا ميشود؟
در حالت كلي PostgreSQL روي هر پلتفرم (سكوي) سازگار با يونيكس اجرا ميشود. ليست پلتفرمهايي كه تاكنون PostgreSQL روي آنها نصب و تست شده است درقسمت دستورالعملهاي نصب آمده است.
1.4) روي چه محيطهاي غير يونيكسي ميتوان آن را اجرا كرد؟
Client
ميتوان psql, كتابخانه libpq و ساير واسطها و برنامههاي كاربردي را طوري كامپيل كرد كه روي محيطهاي ويندوز نيز اجرا شوند. در اين حالت Client روي ويندوز اجرا ميشود و از طربق شبكه و پروتكل TCP/IP با يك سرور كه روي يك پلتفرم لينوكس در حال اجراست ارتباط برقرار ميكند.يك فايل win32.mak همراه با كدهاي PostgreSQL وجود دارد كه براي كامپيل كردن كتابخانه libpq و برنامه psql ميباشد. PostgreSQL همچنين امكان ارتباط به صورت ODBC را نيز دارد.