diff options
author | Peter Eisentraut | 2009-07-21 19:20:33 +0000 |
---|---|---|
committer | Peter Eisentraut | 2009-07-21 19:20:33 +0000 |
commit | f3f45c87d23b800913fb8ea88fe2d713f6b9dd74 (patch) | |
tree | fc823ac6d3faebdf23dd8bb4fff7c35a4ab6a136 /doc/FAQ_farsi | |
parent | f7ad9cab30aad86d60c5826cceeb7a6be4298cc8 (diff) |
Remove translated FAQs
The English FAQ has been moved to the wiki, so the translated versions should
have been removed at that point as well.
The FAQ_MINGW.html should have been removed when the platform FAQs were
integrated into the documentation (or earlier).
applied to both 8.4 and 8.5
Diffstat (limited to 'doc/FAQ_farsi')
-rw-r--r-- | doc/FAQ_farsi | 1256 |
1 files changed, 0 insertions, 1256 deletions
diff --git a/doc/FAQ_farsi b/doc/FAQ_farsi deleted file mode 100644 index 95b28bb9b6..0000000000 --- a/doc/FAQ_farsi +++ /dev/null @@ -1,1256 +0,0 @@ -PostgreSQL FAQسوالاتي كه اغلب در مورد PostgreSQL‌ -پرسيده مي شوند -تاريخ آخرين Ø§ØµÙ„Ø§Ø Ø§ÙŠÙ† ÙØ§ÙŠÙ„: 28 شهریور 1383 هجری -شمسی -نگهدارنده اصلي ÙØ§ÙŠÙ„ (زبان انگليسي)در ØØ§Ù„ -ØØ§Ø¶Ø± : 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-2004, 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 مي‌باشد. P‌ostgreSQL‌ همچنين امكان -ارتباط به صورت ODBC‌ را نيز دارد. -Server -با Ø§Ø³ØªÙØ§Ø¯Ù‡ از Cygwin‌ Ùˆ كتابخانه Cygnus مي‌توان -پايگاه داده را روي ويندوز NT Ùˆ يا Win2K اجرا -كرد.براي ديدن اطلاعات بيشتر ÙØ§ÙŠÙ„ pgsql/doc/FAQ_MSWIN -‌را كه بهمراه توزبع‌هاي PostgreSQL آمده است -ببينيد Ùˆ يا اينكه به اين ØµÙØÙ‡ -http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN مراجعه كنيد. -در ØØ§Ù„ ØØ§Ø¶Ø± يك عمليات انتقال PostgreSQL به روي -سكوهاي Win NT/2000/XP در جريان است. براي ديدن وضعيت -اين پروژه به سايت‌هاي -http://momjian.postgresql.org/main/writings/pgsql/win32.htm Ùˆ -http://techdocs.postgresql.org/guides/Windows مراجعه كنيد. -همچنين يك عمليات انتقال بر روي Novell Netware 6 نيز -در ØØ§Ù„ انجام است كه در سايت http://forge.novell.com -مي‌توانيد اطلاعات بيشتر را ببينيد. -1.5) PostgreSQL را از كجا مي‌توانم بگيرم؟ -PostgreSQL‌ را از سايت اصلي آن ftp://ftp.PostgreSQL.org/pub -مي‌توانيد بگيريد. در ØµÙØÙ‡ اصلي سايت ليست -ساير آدرسهايي كه مي‌توانيد PostgreSQL‌ را از -آنها بگيريد آمده است. -1.6) از كجا خدمات پشتيباني بگيرم؟ -گروه پستي اصلي pgsql-general@PostgreSQL.org مي‌باشد. اين -گروه براي Ø¨ØØ« در مورد موضوعات مختل٠در زمينه -PostgreSQL است. براي عضو شدن در اين گروه پستي يك -نامه الكترونيكي به آدرس گروه با Ù…ØØªÙˆÙŠØ§ØªÛŒ كه -در ادامه آمده است ارسال كنيد. در قسمت Subject -چيزي ننويسيد. - subscribe - end -آدرس گروه: pgsql-general-request@PostgreSQL.org -همچنين يك گروه پستي هم به صورت ارسال چكيده -پيامها وجود دارد. براي عضو شدن در اين گروه يك -نامه با Ù…ØØªÙˆÙŠØ§Øª زير به این آدرس ارسال كنيد. -pgsql-general-digest-request@PostgreSQL.org - subscribe - end -در اين گروه هر موقع ØØ¬Ù… نامه‌ها به 30 -كيلوبايت رسيد براي تمام اعضاء ارسال مي‌شود. -گروه پستي بررسي Ø§ÙØ´ÙƒØ§Ù„ات هم وجود دارد. براي -عضو شدن در اين گروه يك نامه با Ù…ØØªÙˆÙŠØ§Øª زير به -pgsql-bugs-request@PostgreSQL.org ارسال كنيد. - subscribe - end -گروه پستي مخصوص توسعه دهندگان -(برنامه‌نويسان) نيز وجوددارد. براي عضويت در -اين گروه يك نامه به آدرس زير با Ù…ØØªÙˆÙŠØ§Øª مشخص -شده ارسال كنيد. pgsql-hackers-request@PostgreSQL.org - subscribe - end -گروههاي پستي ديگري نيز در زمينه PostgreSQL‌ وجود -دارد كه مي‌توانيد در سايت http://www.postgresql.org -ببينيد. -همچنين يك كانال IRC روي Freenode Ùˆ EFNet بنام PostgreSQL# -وجود دارد. شما مي‌توانيد از ÙØ±Ù…ان يونيكسي irc --c '#PostgreSQL' "$USER" irc.phoenix.net. يا irc -c '#PostgreSQL' "$USER" -irc.freenode.net Ø§Ø³ØªÙØ§Ø¯Ù‡ كنيد. -ليست شركتهايي كه از طريق آنها مي‌توانيد -خدمات پشتيباني تجاري در زمينه PostgreSQL Ø¯Ø±ÙŠØ§ÙØª -كنيد در اين آدرس http://techdocs.postgresql.org/companies.php -موجود است. -1.7) آخرين نسخه اعلام شده چيست؟ -آخرين نسخه PostgreSQL‌ كه وجود دارد 7.4.3 است. -هد٠ما آن است كه هر 6 ماه تا 8 ماه يك نسخه جديد -ارائه شود. -1.8) Ú†Ù‡ مستندات Ùˆ راهنمائيهايي وجود دارند؟ -چندين كتابچه Ùˆ ØµÙØØ§Øª راهنما Ùˆ مثالهاي كوچك -همراه با متن اصلي PostgreSQL‌ در شاخه doc وجود -دارد. براي ديدن ØµÙØØ§Øª راهنما مي‌توانيد به -سايت http://www.PostgreSQL.org/docs نيز مراجعه نماييد. -دو كتاب در زمينه PostgreSQL‌ در آدرس‌هاي -http://www.PostgreSQL.org/docs/awbook.htm Ùˆ http://www.commandprompt.com/ppbook -وجود دارد. ليستي از كتابهايي كه قابل خريد -است در آدرس http://techdocs.PostgreSQL.org/techdocs/bookreviews.php -وجود دارد. همچنين ليستي از مقالات Ùني در -مورد PostgreSQL در آدرس http://techdocs.PostgreSQL.org وجود -دارد. -برنامه psql يك دستور d\ دارد كه اطلاعاتي در -مورد انواع داده‌هاي قابل تعري٠و عملگر‌ها -Ùˆ توابع Ùˆ ... به ما نشان مي‌دهد. در سايت اصلي -ما اطلاعات بيشتري را مي‌توانيد پيدا كنيد. -1.9) چگونه مي‌توانم ازاشكالات شناخته شده Ùˆ يا -امكاناتي كه در اين پايگاه داده وجود ندارد -مطلع شوم؟ -PostgreSQL يك زير مجموعه Ù¾ÙŠØ´Ø±ÙØªÙ‡ از SQL-92 را -پشتيباني مي‌كند. در ليست TODO Ø§ÙØ´ÙƒØ§Ù„ات -شناخته شده يا امكاناتي كه وجود ندارد Ùˆ يا -برنامه‌‌هاي آينده آمده است. -1.10) چگونه مي‌توانم زبان SQL را ياد بگيرم؟ -كتاب PostgreSQL در آدرس SQL http://www.PostgreSQL.org/docs/awbook.html -‌را آموزش مي‌دهد. همچنين يك كتاب در آدرس -http://www.commandprompt.com/ppbook وجود دارد. يك راهنماي -خيلي خوب هم در سايت‌هاي -http://www.intermedia.net/support/sql/sqltut.shtm Ùˆ -http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM Ùˆ -http://sqlcourse.com در مورد SQL وجود دارد. -كتاب ديگري كه مي‌توان براي يادگيري SQL از آن -Ø§Ø³ØªÙØ§Ø¯Ù‡ كرد كتاب "SQL را در 21 روز ياد بگيريد،‌ -ويرايش دوم" در سايت -http://members.tripod.com/er4ebus/sql/index.htm مي‌باشد. -تعداد زيادي از كاربران كتاب The Practical SQL را -ØªØ±Ø¬ÙŠØ Ù…ÙŠâ€ŒØ¯Ù‡Ù†Ø¯. كتاب ديگر The Complete Refrence SQL -انتشارات McGraw-Hill مي‌باشد. -1.11) آيا PostgreSQL مشكل Y2K‌ دارد يا خير؟ -خير،‌PostgreSQL‌ با تاريخ‌هاي قبل Ùˆ بعد از 2000 -مشكلي ندارد. -1.12) چگونه مي‌توانم به تيم برنامه نويس PostgreSQL -ملØÙ‚ شوم؟ -ابتدا،‌آخرين سورس را دونلود كرده Ùˆ مستندات -مربوط به برنامه‌نويسي PostgreSQL را در سايت -مطالعه كنيد. سپس به گروههاي پستي ‌ pgsql-patches Ùˆ -pgsql-hackers عضو شويد. در مرØÙ„Ù‡ آخر وصله‌هاي با -كيÙيت بالا را به pgsql-patches ارسال كنيد. -تعداد زيادي از برنامه‌نويسان وجود دارند كه -امتياز انجام تغييرات در cvs‌ را دارند. هر -كدام از آنها تعداد زيادي وصله‌‌ با كيÙيت -بالا به گروه ارسال كرده‌اند كه اعتماد -گردانندگان PostgreSQL را به دست آورده‌اند. -1.13) چگونه مي‌توانم يك Ø§ÙØ´ÙƒØ§Ù„ را به گروه -برنامه نويس اعلام كنم؟ -Ù„Ø·ÙØ§Ù‹ ØµÙØÙ‡ مربوط به Ø§ÙØ´ÙƒØ§Ù„ات PostgreSQL را در -سايت http://www.PostgreSQL.org/bugs/bugs.php مشاهده‌ كنيد. در -اين سايت Ù†ØÙˆÙ‡ گزارش Ùˆ ارسال يك اشكال ØªÙˆØ¶ÙŠØ -داده شده است. - همچنين براي ديدن نسخه‌هاي جديدتر PostgreSQL Ùˆ -يا وجود يك وصله جديد از سايت ftp://ftp.PostgreSQL.org/pub -بازديد كنيد. -1.14) وضعيت PostgreSQL‌ در مقايسه با ساير DBMSها به -Ú†Ù‡ صورت است؟ -راههاي مختلÙÙŠ براي اندازه‌گيري Ùˆ مقايسه -Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø±Ù‡Ø§ وجود دارد كه عبارتند از -امكانات، كارايي، قابليت اعتماد، پشتيباني Ùˆ -قيمت - امكانات - PostgreSQL بيشتر امكانات موجود در سيستم‌هاي - پايگاه داده تجاري بزرگ نظير transactions, subselets, - triggers, views, foreign key referential integrity Ùˆ sophisticated - locking‌ را دارد. در PostgreSQL‌‌ امكاناتي وجود - دارد كه پايگاههاي داده ديگر آن را ندارند - نظير user-defined types‌و Inheritance‌و rules‌و multi-version - concurrency control - - كارايي - كارايي PostgreSQL در ØØ¯ بقيه سيستم‌هاي - تجاري Ùˆ متن باز است. در بعضي موارد سريعتر Ùˆ - در بعضي موارد از آنها كندتر است. در مقايسه - با MySQL براي كاربران بيشتر Ùˆ درخواست‌هاي - پيچيده Ùˆ بار زياد خواندن/نوشتن سريعتر است. - در درخواست‌هاي ساده SELECT‌ از MySQL كندتر است. - البته MySQL خيلي از امكانات PostgreSQL كه در بالا - به آن اشاره شد را ندارد. هد٠اصلي ما امكانات - Ùˆ قابليت اعتماد بالاست در ضمن آنكه تلاش - مي‌كنيم تا كارايي آن نيز بهبود يابد. در - آدرس http://openacs.org/philosophy/why-not-mysql.html يك مقايسه - جالب بين MySQL Ùˆ PostgreSQL وجود دارد. از طر٠ديگر - MySQL‌ يك شركت است كه Ù…ØØµÙˆÙ„ خود را به صورت متن - باز ارائه مي‌كند ولي براي Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø± غير - متن باز خود Ø§ØØªÙŠØ§Ø¬ به ليسانس تجاري دارد بر - خلا٠PostgreSQL كه يك گروه كاملاً متن باز هستند. - - قابليت اطمينان - ما Ùكر مي‌كنيم كه يك سيستم پايگاه - داده‌اي كه مطمئن نباشد ارزشي ندارد. ما - تمام تلاشمان را براي ارائه كدهاي پايداري - كه به خوبي تست شده باشند Ùˆ كمترين Ø§ÙØ´ÙƒØ§Ù„ات - را داشته باشند مي‌كنيم. هر نسخه جديدي كه - ارائه مي‌شود ØØ¯Ø§Ù‚Ù„ يك ماه را در مرØÙ„Ù‡ تست - بتا مي‌گذراند. ما بر اين باور هستيم كه - قابليت اطمينان PostgreSQL‌ در مقايسه با ساير - سيستم‌هاي پايگاه داده قابل توجه است Ùˆ - نسخه‌هايي كه تاكنون ارائه شده است نشان - مي‌دهد كه ما توانايي ارائه يك سيستم قوي Ùˆ - Ù…ØÙƒÙ… Ùˆ مطمئن را كه آماده بهره‌برداري است - داريم. - پشتيباني - گروههاي پستي ما امكان ارتباط Ùˆ تماس به - گروه بزرگي از برنامه نويسان Ùˆ كاربران را - مي‌دهد كه مي‌توانند در ØÙ„ مشكلات به - ديگران كمك كنند. دسترسي مستقيم به - برنامه‌نويسان Ùˆ گروههاي كاربران Ùˆ - راهنماها Ùˆ كداصلي باعث مي‌شود كه - پشتيباني PostgreSQL نسبت به ساير پايگاههاي - داده به Ù†ØÙˆ بهتري انجام شود. همچنين امكان - ارائه خدمات پشتيباني به صورت تجاري نيز - وجود دارد. براي ديدن اطلاعات بيشتر به FAQ - section 1.6 مراجعه كنيد. - قيمت - هم براي Ø§Ø³ØªÙØ§Ø¯Ù‡ تجاري Ùˆ هم غير تجاري هيچ - هزينه‌اي نبايد پرداخت شود. هيچ Ù…ØØ¯ÙˆØ¯ÙŠØªÙŠ - براي انجام تغييرات در PostgreSQL توسط Ø§Ø³ØªÙØ§Ø¯Ù‡ - كنندگان وجود ندارد به جز مواردي كه در - ليسانس BSD به آن اشاره شده است. -1.15) من چگونه مي‌توانم از نظر مالي به PostgreSQL -كمك كنم؟ -PostgreSQL داراي يك ساختار تشكيلاتي درجه اول است -كه آن را مديون Marc Fournier‌ است كه اين ساختار را -ايجاد كرده است. -كيÙيت يك ساختار براي يك پروژه متن باز بسيار -اهميت دارد. يك ساختار خوب مي‌تواند مانع از -ØÙˆØ§Ø¯Ø«ÙŠ Ø´ÙˆØ¯ كه در ØØ±ÙƒØª روبه‌جلوي پروژه خللي -وارد مي‌كنند. -البته اين ساختار تشكيلاتي ارزان نيست. -هزينه‌هاي ثابت ماهانه Ùˆ روزمره براي -نگهداري Ùˆ ØÙظ اين ساختار مورد نياز است. اگر -شما يا شركت شما مايل است كه از نظر مالي به -اين ØØ±ÙƒØª كمك كند Ù„Ø·ÙØ§Ù‹ به سايت -http://store.pgsql.com/shopping مراجعه كرده Ùˆ كمك خود را -اهدا كنيد. -هر چند در ØµÙØÙ‡ اصلي عبارت PostgreSQL,Inc‌ ذكر شده -است ولي مشاركت عمدتاً براي پشتيباني از -پروژه PostgreSQL‌ مي باشد Ùˆ نه براي يك شركت مشخص. -اگر ØªØ±Ø¬ÙŠØ Ù…ÙŠâ€ŒØ¯Ù‡ÙŠØ¯ مي‌توانيد يك Ú†Ùƒ به آدرس -مشخص شده ارسال كنيد. -اگر يك Ø§Ø³ØªÙØ§Ø¯Ù‡ موÙÙ‚ از PostgreSQL سراغ داريد -Ù„Ø·ÙØ§Ù‹ آن را به سايت http://advocacy.postgresql.org گزارش -دهيد. - - - -سوالات مربوط به Ø§Ø³ØªÙØ§Ø¯Ù‡ از پايگاه داده -2.1) آيا هيچ درايور ODBC‌ براي PostgreSQL وجود دارد؟ -دو درايور ODBC بنامهاي psqlODBC‌ Ùˆ OpenLink براي -PostgreSQL‌ وجود دارد. -براي Ú¯Ø±ÙØªÙ† psqlODBC به سايت -http://gborg.postgresql.org/project/psqlodbc/projdisplay.php مراجعه -كنيد. -OpenLlink را از اين سايت http://www.openlinksw.com -مي‌توانيد بگيريد. اين درايور با -Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø±Ù‡Ø§ÙŠ Ù…Ø®ØªÙ„Ù ODBC كار مي‌كند بنابراين -شما قادر خواهيد بود با Ø§Ø³ØªÙØ§Ø¯Ù‡ از OpenLink روي -اكثر سكو‌هايي كه Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø±ODBC‌دارند بدون -مشكل به PostgreSQL نيز متصل شويد. -اين Ù…ØØµÙˆÙ„ به كساني كه Ø§ØØªÙŠØ§Ø¬ به خدمات -پشتيباني تجاري دارند ÙØ±ÙˆØ®ØªÙ‡ مي‌شود. ولي -نسخه آزاد اين Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø± هميشه در درسترس -مي‌باشد. براي كسب اطلاعات بيشتر سوالات خود -را به آدرس postgres95@openlink.co.uk ‌ارسال نماييد. -2.2) Ú†Ù‡ ابزارهايي براي Ø§Ø³ØªÙØ§Ø¯Ù‡ از PostgreSQL‌ با -ØµÙØØ§Øª وب وجود دارد؟ -در سايت http://www.webreview.com براي Ø§Ø³ØªÙØ§Ø¯Ù‡ از -PostgreSQL‌ در ØµÙØØ§Øª وب راهنماييهاي خوبي وجود -دارد. -براي تركيب Ùˆ Ø§Ø³ØªÙØ§Ø¯Ù‡ در ØµÙØØ§Øª وب زبان PHP‌ يك -واسط بسيار مناسب است. اطلاعات بيشتر راجع به -PHP‌در سايت http://www.php.net وجود دارد. -مثالهايي نيز با Ø§Ø³ØªÙØ§Ø¯Ù‡ از Perl‌ Ùˆ CGI.pm Ùˆ mod_perl -وجود دارد. -2.3) آيا PostgreSQL‌ يك واسط كاربري گراÙيكي دارد؟ -چند نرم Ø§ÙØ²Ø§Ø± گراÙيكي براي PostgreSQL‌ وجود دارد -كه شامل pgAccess درسايت http://www.pgaccess.org Ùˆ pgAdmin III در -سايت http://www.pgadmin.org Ùˆ RHDB Admin در سايت -http://sources.redhat.com/rhdb Ùˆ Rekall در سايت -http://www.thekompany.com/products/rekall مي‌باشد. همچنين يك -phpPgAdmin هم در سايت http://phppgadmin.sourceforge.net وجود -دارد كه يك واسط وبي براي مديريت PostgreSQL -مي‌باشد. -براي ديدن اطلاعات بيشتر راجع به -Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø±Ù‡Ø§ÙŠ Ú¯Ø±Ø§Ùيكي براي PostgreSQL به آدرس -http://techdocs.postgresql.org/guides/GUITools مراجعه كنيد. -2.4) با Ú†Ù‡ زبانهاي برنامه‌نويسي مي‌توان با -PostgreSQL‌ ارتباط برقرار كرد؟ -بيشتر زبانهاي برنامه‌نويسي مي‌توانند با -PostgreSQL‌ ارتباط برقرار كنند. به همراه سورس -PostgreSQL تعدادي از واسطهاي مورد نياز براي -ارتباط با پايگاه داده از طريق زبانهاي مختل٠-آمده است كه در زير ليست آنها را مشاهده -مي‌كنيد. - C (libpq) - Embedded C (ecpg) - Java (jdbc) - Python (PyGreSQL) - TCL (libpgtcl) -واسطهاي ديگر در سايت http://gborg.postgresql.org در قسمت -Drivers/Interfaces وجود دارد. - - - -سوالات مديريتي -3.1) چگونه مي‌توانم PostgreSQL‌ را در شاخه‌اي غير -از /usr/local/pgsql/ نصب كنم؟ -موقع اجراي دستور configure از گزينه prefix-- Ø§Ø³ØªÙØ§Ø¯Ù‡ -كنيد. -3.2) چرا موقعي كه من برنامه postmaster‌ را اجرا مي -كنم پيام Bad system call‌ Ùˆ يا core dump ‌مي‌گيرم؟ -به دلايل مختل٠ممكن است اين Ø§ØªÙØ§Ù‚ Ø¨ÙŠÙØªØ¯. اما -در قدم اول شما مطمئن شويد كه كه امكانات -اضاÙÙ‡ System V‌ در كرنل شما نصب شده باشد. PostgreSQL -براي اجرا شدن نياز به Ø§Ø³ØªÙØ§Ø¯Ù‡ از امكانات -ØØ§Ùظه مشترك Ùˆ سماÙورها دارد. -3.3) چرا موقعي كه من سعي مي‌كنم برنامه postmaster‌ -را اجرا كنم خطاي IpcMemoryCreate مي‌گيرم؟ -Ø§ØØªÙ…الاً‌ قسمت ايجاد ØØ§Ùظه مشترك در كرنل به -درستي تنظيم نشده است Ùˆ يا اينكه بايد ÙØ¶Ø§ÙŠ -ØØ§Ùظه اشتراكي در كرنل را زياد كرد. ميزان -دقيق ØØ§Ùظه مشترك مورد نياز بسته به معماري Ùˆ -Ù†ØÙˆÙ‡ Ø§Ø³ØªÙØ§Ø¯Ù‡ از Ø¨Ø§ÙØ±Ù‡Ø§ توسط برنامه postmaster -دارد. براي بيشتر سيستم‌ها كه با تنظيمات -Ù¾ÙŠØ´â€ŒÙØ±Ø¶ كار مي‌كنند مقدار اين ØØ§Ùظه ØØ¯ÙˆØ¯ 1 -مگابايت است. براي ديدن اطلاعات بيشتر راجع به -ØØ§Ùظه مشترك Ùˆ سماÙور به PostgreSQL Administrator's Guide -مراجعه كنيد. -3.4) چرا موقعي كه من سعي مي‌كنم برنامه postmaster‌ -را اجرا كنم خطاي IpcSemaphoreCreate مي‌گيرم؟ -اگر پيغام خطا (‌pcSemaphoreCreate: semget failed (No space left on -device باشد به اين معني است كه تعداد سماÙورهاي -تنظيم شده در كرنل كاÙÙŠ نيست. PostgreSQL‌ براي هر -ÙØ±Ø§ÙŠÙ†Ø¯ÙŠ ÙƒÙ‡ در backend اجرا مي‌شود به يك سماÙور -نياز دارد. يك راه ØÙ„ موقت براي اين مسئله آن -است كه postmaster را با اعمال Ù…ØØ¯ÙˆØ¯ÙŠØª روي تعداد -ÙØ±Ø§ÙŠÙ†Ø¯Ù‡Ø§ÙŠÙŠ ÙƒÙ‡ مي‌تواند ايجاد كند اجرا كنيم. -براي اينكار از گزينه N- Ùˆ يك عدد كمتر از 32 -Ø§Ø³ØªÙØ§Ø¯Ù‡ كنيد. راه ØÙ„ دائمي اين مشكل آن است كه -پارامترهاي SEMMNS, SEMMNI كرنل را Ø§ÙØ²Ø§ÙŠØ´ دهيم. -در زمان دسترسي خيلي زياد به پايگاه داده، ‌ -سماÙورهاي نامعتبر مي‌توانند باعث crash‌ كردن -سيستم شوند. -اگر پيغام خطا چيز ديگري باشد Ø§ØØªÙ…الاً به -دليل آن است كه كرنل از سماÙورها پشتيباني -نمي‌كند. براي ديدن اطلاعات بيشتر راهنماي -مديريتي PostgreSQL را مطالعه كنيد. -3.5) چگونه مي‌توانم اتصالات ساير ماشينها را -كنترل كنم؟ -به صورت پيش ÙØ±Ø¶ Ùقط از ماشيني كه PostgreSQL روي آن -در ØØ§Ù„ اجراست مي‌توان با Ø§Ø³ØªÙØ§Ø¯Ù‡ از -سوكت‌هاي يونيكسي به آن متصل شد. ساير -ماشين‌ها قادر نيستند به PostgreSQL متصل شوند مگر -آنكه گزينه tcp_sockets در ÙØ§ÙŠÙ„ postgresql.conf ÙØ¹Ø§Ù„ شده Ùˆ -همچنين با Ø§ØµÙ„Ø§Ø ÙØ§ÙŠÙ„ PGDATA/ph_hba.conf هويت‌شناسي -مبتني بر ميزبان نيز ÙØ¹Ø§Ù„ شود. با اين كار -مي‌توان اتصالات TCP/IP به PostgreSQL‌ ايجاد كرد. -3.6) براي كارايي بالاتر Ùˆ بهتر پايگاه داده من -Ú†Ù‡ تنظيماتي را بايد انجام دهم؟ -به طور ØØªÙ… Ø§Ø³ØªÙØ§Ø¯Ù‡ از انديس‌ها باعث بالا -Ø±ÙØªÙ† سرعت پاسخ‌گويي به درخواست‌ها خواهد -شد. دستور EXPLAIN ANALYZE به شما امكان ديدن Ù†ØÙˆÙ‡ -پردازش يك دستور توسط PostgreSQL را مي‌دهد. -اگر شما تعداد زيادي INSERT‌ داريد سعي كنيد -آنها را با قرار دادن در يك ÙØ§ÙŠÙ„ با دستور COPY‌ -اجرا كنيد. اين دستور به مراتب از INSERT سريعتر -است. ØØªÙŠâ€ŒØ§Ù„امكان سعي كنيد از تراكنشها -Ø§Ø³ØªÙØ§Ø¯Ù‡ نكنيد. تراكنشها مجموعه دستوراتي -هستند كه بيند BEGIN Ùˆ â€COMMIT مي‌آيند. اگر يك -دستور به صورت عادي اجرا شود PostgreSQL خود آن -دستور را به صورت يك تراكنش مستقل نگاه كرده Ùˆ -اجرا مي‌كند. موقعی كه تغييرات زيادي در -پايگاه داده انجام مي‌شود انديسهاي قبلي را -ØØ°Ù Ùˆ مجدداً‌ ايجاد كنيد. -Ø§Ø³ØªÙØ§Ø¯Ù‡ از گزينه o -F- در ÙØ±Ù…ان postmaster باعث غير -ÙØ¹Ø§Ù„ كردن ()fsync مي‌شود. اين دستور بعد از هر -تراكنش اطلاعات را روي هاردديسك منتقل -مي‌كند. -براي Ø§ÙØ²Ø§ÙŠØ´ تعداد Ø¨Ø§ÙØ±Ù‡Ø§ÙŠ ØØ§Ùظه اشتراكي از -گزينه B- به همراه ÙØ±Ù…ان postmaster Ø§Ø³ØªÙØ§Ø¯Ù‡ كنيد. -توجه كنيد كه اگر اين عدد خيلي بزرگ باشد ممكن -است postmaster اصلاً‌ اجرا نشود. هر Ø¨Ø§ÙØ± 8 كيلو -بايت ØØ§Ùظه نياز دارد Ùˆ تعداد Ø¨Ø§ÙØ±Ù‡Ø§ به طور -پيش ÙØ±Ø¶ 64 است. -همچنين مي‌توان با گزينه S- ميزان ØØ§Ùظه‌اي -كه براي مرتب‌سازي‌هاي موقت توسط PostgreSQL -Ø§Ø³ØªÙØ§Ø¯Ù‡ مي‌شود را Ø§ÙØ²Ø§ÙŠØ´ داد. مقدار پيش ÙØ±Ø¶ -512 كيلو بايت است. -Ø§Ø³ØªÙØ§Ø¯Ù‡ از دستور CLUSTER نيز براي بالا بردن -كارايي موثر ا ست. دستور راهنماي CLUSTER اطلاعات -بيشتري در اين زمينه به شما مي‌دهد. -3.7) Ú†Ù‡ امكاناتي براي پيدا كردن اشكال‌ وجود -دارد؟ -PostgerSQL‌ امكانات مختلÙÙŠ براي گزارش دادن -وضعيت خود دارد كه براي اشكال زدايي مي‌توان -از آنها Ø§Ø³ØªÙØ§Ø¯Ù‡ كرد. -با Ø§Ø³ØªÙØ§Ø¯Ù‡ از گزينه enable-assert-- تعداد زيادي -()assert براي مونيتور كردن Ùˆ توق٠برنامه در صورت -بروز خطاهاي ناخواسته ÙØ¹Ø§Ù„ مي‌شود. -هم Postmaster Ùˆ هم postgres گزينه‌هاي زيادي براي -اشكال زدايي دارند. موقعي كه postmaster را اجرا -مي‌كنيد خروجي استاندارد Ùˆ خطا را سمت ÙØ§ÙŠÙ„ log -ارسال كنيد. - cd /usr/local/pgsql - ./bin/postmaster >server.log 2>&1 & -اين كار يك ÙØ§ÙŠÙ„ log در بالاترين شاخه PostgreSQL‌ -ايجاد مي‌كند. اين ÙØ§ÙŠÙ„ ØØ§ÙˆÙŠ Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ù…Ùيدي -در مورد مسائل Ùˆ خطاهايي است كه براي سرور -Ø§ØªÙØ§Ù‚ Ø§ÙØªØ§Ø¯Ù‡ است. براي ديدن جزئيات بيشتر -مي‌توان از d- به همراه ÙØ±Ù…ان postmaster‌ Ø§Ø³ØªÙØ§Ø¯Ù‡ -كرد. گزينه d- همچنين يك عدد مي‌گيرد كه نشان -دهنده Ø³Ø·Ø Ø¬Ø²Ø¦ÙŠØ§ØªÙŠ است كه در Logâ€ŒÙØ§ÙŠÙ„ نوشته -مي‌شود. با بالابردن اين عدد ØØ¬Ù… اطلاعات -توليد شده در LogÙØ§ÙŠÙ„ نيز Ø§ÙØ²Ø§ÙŠØ´ مي‌يابد. -اگر postmaster در ØØ§Ù„ اجرا نباشد، مي‌توانيم postgres -را به طور مستقيم از خط ÙØ±Ù…ان اجرا كرده Ùˆ -دستورات SQL را به آن بدهيم. اين كار Ùقط براي -اشكال‌يابي توصيه مي‌شود. توجه كنيد كه در -اين ØØ§Ù„ت يك دستور با كاراكتر newline خاتمه پيدا -مي‌كند Ùˆ نه با ;. اگر postmaster را با امكانات -اشكال‌يابي كامپيل كرده باشيد مي‌توانيد با -Ø§Ø³ØªÙØ§Ø¯Ù‡ از يك برنامه اشكال‌ياب اجراي -برنامه را مونيتور كنيد. -اگر postmaster در ØØ§Ù„ اجرا باشد با دستور psql -مي‌توان به postgres متصل شد. با پيدا كردن PID -ÙØ±Ø§ÙŠÙ†Ø¯ postgres كه psql به آن متصل شده است مي‌توان -آن را مونيتور كرد. براي اينكار بايد يك -برنامه اشكال‌ياب را به آن pid متصل كرد. اگر -بخواهيم بالا آمدن postgres را مونيتور كنيم كاÙÙŠ -است "PGOPTIONS="-W n Ùˆ psql را اجرا كنيم. اين كار باعث -مي‌شود كه postgres با n ثانيه تاخير اجرا شود Ùˆ در -اين ÙØ§ØµÙ„Ù‡ شما مي‌توانيد برنامه اشكال‌ياب -را به آن متصل كرده Ùˆ با قرار دادن يك نقطه -توق٠روند اجراي آن را مونيتور كنيد. -postgres گزينه‌هاي s-‌ Ùˆ A- Ùˆ t-‌ دارد كه براي -پيدا كردن اشكالات بسيار مناسب هستند. -شما مي‌توانيد postgreSQL را با امكانات profiling -كامپيل كنيد. اين كار باعث مي‌شود كه زمان -اجراي دقيق هر تابع در برنامه مشخص شود. -خروجي‌هاي توليد شده در اين ØØ§Ù„ت در ÙØ§ÙŠÙ„ -DLINUX_PROFILE. ريخته مي‌شود. -3.8) چرا موقعي كه من مي‌خواهم به پايگاه داده -وصل شوم پيام "Sorry, too many clients" ‌مي‌گيرم؟ -شما بايد ØØ¯Ø§ÙƒØ«Ø± تعداد ÙØ±Ø§ÙŠÙ†Ø¯Ù‡Ø§ÙŠ Ù‡Ù…Ø²Ù…Ø§Ù† -postmaster را Ø§ÙØ²Ø§ÙŠØ´ دهيد. مقدار پيش ÙØ±Ø¶ 32 است. -براي Ø§ÙØ²Ø§ÙŠØ´ آن مي‌توان از گزينه N- Ø§Ø³ØªÙØ§Ø¯Ù‡ -كرد Ùˆ يا ÙØ§ÙŠÙ„ postgresql.conf را Ø§ØµÙ„Ø§Ø Ù†Ù…ÙˆØ¯ -توجه كنيد كه اگر N- مقداري بيشتر از 32 داشته -باشد بايد مقدار B- را نيز Ø§ÙØ²Ø§ÙŠØ´ دهيم. اين -مقدار بايد ØØ¯Ø§Ù‚Ù„ دو برابر مقدار N-‌ باشد. -براي اعداد خيلي بالا بايد بعضي از -پارامترهاي كرنل را نيز Ø§ØµÙ„Ø§Ø ÙƒØ±Ø¯. -پارامترهايي نظير ØØ¯Ø§ÙƒØ«Ø± اندازه ØØ§Ùظه -اشتراكي SHMMAX ØŒ ØØ¯Ø§ÙƒØ«Ø± تعداد سماÙورها SEMMNI‌ Ùˆ -SEMMNS ØŒ ØØ¯Ø§ÙƒØ«Ø± تعداد ÙØ±Ø§ÙŠÙ†Ø¯Ù‡Ø§ NPROCØŒ ØØ¯Ø§ÙƒØ«Ø± -ÙØ±Ø§ÙŠÙ†Ø¯Ù‡Ø§ÙŠ ÙŠÙƒ كاربر MAXUPRC Ùˆ ØØ¯Ø§ÙƒØ«Ø± ÙØ§ÙŠÙ„هاي باز -NFILE Ùˆ NINODE. يكي از دلايلي كه تعداد اتصالات -همزمان postgreSQL Ù…ØØ¯ÙˆØ¯ است آن است كه نيازهاي -PostgreSQL بيش از منابع موجود سيستم نباشد. -3.9) در شاخه pgsql_tmp Ú†Ù‡ چيزي قرار دارد؟ -دراين شاخه ÙØ§ÙŠÙ„هاي موقتي قرار دارد كه با -اجراي درخواستها به وجود آمده است. به عنوان -مثال اگر براي اجراي دستور order by نياز به انجام -مرتب سازي باشد Ùˆ در صورتي كه ØØ§Ùظه مشخص شده -با گزينه S- براي اينكار كاÙÙŠ نباشد سيستم يك -ÙØ§ÙŠÙ„ موقت در اين شاخه ايجاد مي‌كند تا عمل -مرتب سازي را انجام دهد. -ÙØ§ÙŠÙ„هاي موقت معمولاً به صورت اتوماتيك پاك -مي‌شود اما اگر postgreSQL در ØÙŠÙ† مرتب سازي crash‌ -كند آن ÙØ§ÙŠÙ„ها باقي مي‌مانند. با stop Ùˆ start كردن -برنامه postmaster اين ÙØ§ÙŠÙ„ها پاك مي‌شوند. -3.10) چرا براي به روز كردن نسخه پايگاه داده من -بايد كل داده ها را dump‌ Ùˆ مجدداً restore كنم؟ -تيم برنامه نويس postgreSQL در نسخه‌هاي ارائه شده -كه Ùقط minor آنها Ù…ØªÙØ§ÙˆØª است Ùقط تغييرات كوچكي -اعمال مي‌كنند؛ بنابراين براي به روز كردن از -نسخه 7.2‌به 7.2.1 نيازي به dump Ùˆ restore نيست. اما در -نسخه‌هايي كه major آنها تغيير مي‌كند غالباً -ساختار داخلي جداول Ùˆ ÙØ§ÙŠÙ„هاي داده تغيير -مي‌كند. اين تغييرات معمولاً‌ پيچيده هستند. -براي انتقال داده‌هاي موجود در پايگاه داده -در اين ØØ§Ù„ت بايد ‌از dump Ùˆ restore Ø§Ø³ØªÙØ§Ø¯Ù‡ كرد. -در نسخه‌هايي كه ساختار روي ديسك تغييري -نمي‌كند مي توان از برنامه pg_upgrade براي به روز -كردن پايگاه داده Ø§Ø³ØªÙØ§Ø¯Ù‡ كرد بدون اينكه -نيازي به Ø§Ø³ØªÙØ§Ø¯Ù‡ از dump Ùˆ restore باشد. در -يادداشتي كه به همراه هر توزيع مي‌آيد ذكر -شده است كه آيا برنامه pg_upgrade براي اين توزيع -وجود دارد يا خير. -3.11) از Ú†Ù‡ سخت Ø§ÙØ²Ø§Ø±ÙŠ Ø¨Ø§ÙŠØ¯ Ø§Ø³ØªÙØ§Ø¯Ù‡ كنم؟ - -چون اكثر Ø³Ø®Øªâ€ŒØ§ÙØ²Ø§Ø±Ù‡Ø§ÙŠ PC سازگار هستند مردم -Ùكر مي‌كنند كه كيÙيت آنها نيز يكسان است. در -ØØ§Ù„يكه اينطور نيست. Ø§Ø³ØªÙØ§Ø¯Ù‡ از هاردهاي SCSI Ùˆ -ØØ§Ùظه‌هاي ECC Ùˆ مادربردهاي با كيÙيت بالا -نسبت به سخت Ø§ÙØ²Ø§Ø±Ù‡Ø§ÙŠ Ø§Ø±Ø²Ø§Ù†ØªØ± نتايج بهتري از -نظر كارايي Ùˆ پايداري سيستم بهمراه خواهد -داشت. PostgreSQL روي بيشتر سخت Ø§ÙØ²Ø§Ø±Ù‡Ø§ اجرا -مي‌شود اما اگر كارايي Ùˆ اطمينان ÙØ§ÙƒØªÙˆØ±Ù‡Ø§ÙŠ -مهمي هستند بايد سخت Ø§ÙØ²Ø§Ø± مناسب Ø§Ø³ØªÙØ§Ø¯Ù‡ شود. -در گروههاي پستي در مورد سخت Ø§ÙØ²Ø§Ø± مناسب Ùˆ -انتخاب آن Ø¨ØØ« شده است. - - - -سوالات عملياتي -4.1) ØªÙØ§ÙˆØª بين binary cursors Ùˆ Normal cursors چيست؟ -راهنماي دستور DECLARE‌ را مطالعه كنيد. -4.2) من چگونه مي‌توانم Ùقط روي چند ردي٠اول يا -يك ردي٠تصادÙÙŠ درخواست SELECT‌ بزنم؟ -راهنماي دستور FETCH يا SELECT...LIMIT را ببينيد. -در واقع كل درخواست بايد بررسي Ùˆ ارزيابي شود -ØØªÙŠ Ø§Ú¯Ø± شما Ùقط چند ردي٠اول را بخواهيد. براي -مثال درخواست ORDER BY را در نظر بگيريد. اگر -انديس يا نمايه‌اي براي ORDER BY وجود داشته -باشد،‌postgreSQL‌ ممكن است بتواند Ùقط چند سطر -اول درخواستي را ارزيابي كند Ùˆ يا اينكه كل -درخواست پردازش شود تا تعداد رديÙ‌هاي -درخواستي توليد شود. -براي انتخاب يك سطر تصادÙÙŠ به روش زير عمل -مي‌كنيم: - SELECT col - FROM tab - ORDER BY random() - LIMIT 1; -4.3) من چگونه مي‌توانم ليستي از جداول يا ساير -چيزهايي كه در psql‌ وجود دارد را ببينم؟ -براي ديدن ليست جداول دستور dt\ را در برنامه -psql‌ Ø§Ø³ØªÙØ§Ø¯Ù‡ كنيد. براي ديدن ليست كامل -ÙØ±Ù…انها ?\ را اجرا كنيد. راه ديگر خواندن متن -برنامه psql‌ است كه در شاخه pgsql/src/bin/psql/describe.c -‌قرار دارد. اين ÙØ§ÙŠÙ„ ØØ§ÙˆÙŠ ÙØ±Ø§Ù…ين SQLيي است كه -خروجي را براي دستوراتي كه با \‌در psql شروع -مي‌شوند توليد مي‌كنند. راه ديگر اجراي psql با -گزينه E-‌است. اينكار باعث مي‌شود كه psql قبل -از اجرا هر دستور SQL‌متناظر آن را نشان دهد. -PostgreSQL‌همچنين يك برنامه SQLi دارد كه مي‌توان -با Ø§Ø³ØªÙØ§Ø¯Ù‡ از آن اطلاعات داخلي پايگاه داده -را استخراج كرد. -4.4) چگونه يك ستون جدول را ØØ°Ù مي‌كنيد؟ چگونه -نوع داده آن را عوض كنيم؟ -ØØ°Ù يك ستون در توزيع 7.3 با Ø§Ø³ØªÙØ§Ø¯Ù‡ از دستور -ALTER TABLE DROP COLUMN اضاÙÙ‡ شده است. در نسخه‌هاي -قبلي به روش زير عمل كنيد: - BEGIN; - LOCK TABLE old_table; - SELECT ... -- تمام ستونها غير از ستوني كه مي‌خواهيد آن را ØØ°Ù كنيد را در اينجا بياوريد - INTO TABLE new_table - FROM old_table; - DROP TABLE old_table; - ALTER TABLE new_table RENAME TO old_table; - COMMIT; -براي عوض كردن نوع داده يك ستون به روش زير عمل -كنيد: - BEGIN; - ALTER TABLE tab ADD COLUMN new_col new_data_type; - UPDATE tab SET new_col = CAST(old_col AS new_data_type); - ALTER TABLE tab DROP COLUMN old_col; - COMMIT; -4.5) ØØ¯Ø§ÙƒØ«Ø± اندازه يك Ø±Ø¯ÙŠÙØŒâ€Œ جدول Ùˆ خود -پايگاه داده چقدر است؟ -Ù…ØØ¯ÙˆØ¯ÙŠØªÙ‡Ø§ عبارتند از: - ØØ¯Ø§ÙƒØ«Ø± اندازه پايگاه داده Ù†Ø§Ù…ØØ¯ÙˆØ¯ (تا 32 ترابايت وجود دارد) - ØØ¯Ø§ÙƒØ«Ø± اندازه يك جدول 32 ترابايت - ØØ¯Ø§ÙƒØ«Ø± ا ندازه يك ردي٠1.6 ترابايت - ØØ¯Ø§ÙƒØ«Ø± اندازه يك Ùيلد 1 گيگا بايت - ØØ¯Ø§ÙƒØ«Ø± اندازه رديÙهاي يك جدول نا Ù…ØØ¯ÙˆØ¯ - ØØ¯Ø§ÙƒØ«Ø± ستونهاي يك جدول بسته به نوع جدول بين 250 تا 6000 - ØØ¯Ø§ÙƒØ«Ø± انديسهاي يك جدول نا Ù…ØØ¯ÙˆØ¯ -البته در ØØ§Ù„ت Ù†Ø§Ù…ØØ¯ÙˆØ¯ نيز ما Ù…ØØ¯ÙˆØ¯ به ØØ¬Ù… -هاردديسك Ùˆ ÙØ¶Ø§ÙŠ ØØ§Ùظه خواهيم بود. در صورتي -Ú©Ù‡ مقادير مشخص شده به عنوان Ù†Ø§Ù…ØØ¯ÙˆØ¯ به صورت -غير معمولي بزرك شوند كارايي سيستم كاهش -خواهد ÙŠØ§ÙØª. -براي ذخيره كردن جداول با اندازه خيلي بزرگ -نيازي نيست كه سيستم عامل امكان ايجاد -ÙØ§ÙŠÙ„هاي بزرگ را داشته باشد. بلكه جداول خيلي -بزرگ به صورت ÙØ§ÙŠÙ„هايي به ØØ¬Ù… يك گيگا بايت -نگاهداري مي‌شوند. -اگر اندازه بلوكهاي داده را برابر 32 كيلو بايت -قرار دهيم ØØ¯Ø§ÙƒØ«Ø± اندازه جدول Ùˆ ØØ¯Ø§ÙƒØ«Ø± تعداد -ستونها 4 برابر خواهد شد. -4.6) چقدر ÙØ¶Ø§ÙŠ Ø¯ÙŠØ³Ùƒ سخت براي ذخيره كردن -داده‌‌هاي يك ÙØ§ÙŠÙ„ متني مورد نياز است؟ -يك پايگاه داده PostgreSQL‌ تا 5 برابر ÙØ¶Ø§ÙŠÙŠ Ø±ÙˆÙŠ -هاردديسك براي نگاهداري يك ÙØ§ÙŠÙ„ متني نياز -دارد. -به عنوان مثال يك ÙØ§ÙŠÙ„ با 100000 خط را در نظر -بگيريد كه در هر خط يك عدد صØÙŠØ Ùˆ يك ØªÙˆØ¶ÙŠØ -متني آمده است. ÙØ±Ø¶ كنيد كه رشته متني به طور -متوسط 20 بايت باشد. اندازه ÙØ§ÙŠÙ„ برابر 2.8 مگا -بايت خواهد بود ولي PostgreSQL براي نگاهداري اين -ÙØ§ÙŠÙ„ به 6.4 مگا بايت اطلاعات نياز خواهد داشت. - 32 bytes: اندازه سرايند هر خط به طور تقريبي - 24 bytes: يك عدد صØÙŠØ Ùˆ يك رشته 24 بايتي - + 4 bytes: اشاره گر روي ØµÙØÙ‡ به يك چندتايي - ---------------------------------------- - 60 bytes در هر ردي٠- -اندازه ØµÙØØ§Øª داده در PostgreSQL برابر با 8 كيلو بايت است - 8192 تعداد بايت‌ها در هر ØµÙØÙ‡ - ------------------- = 136 تعداد رديÙ‌ها در يك ØµÙØÙ‡ پايگاه داده - 60 تعداد بايت‌هاي هر ردي٠- - 100000 تعداد رديÙها - -------------------- = ØªØ¹Ø¯Ø§Ø¯ØµÙØØ§Øª پايگاه داده - 128 تعداد رديÙها در هر ØµÙØÙ‡ - -735 تعداد ØµÙØØ§Øª * 8192 تعداد بايت‌هاي هر ØµÙØÙ‡ = 6,021,120 مگا بايت -سربار انديسها يا نمايه‌ها از اين مقدار كمتر -است ولي چون شامل خود داده‌ها هم هست ممکن است -اندازه آنها هم بزرگ شود. -NULLها به صورت bitmap ذخيره مي‌شوند Ùˆ از اينرو -ÙØ¶Ø§ÙŠ Ø¨Ø³ÙŠØ§Ø± كمي را اشغال مي‌كنند. -4.7) چگونه مي‌توانم بÙهمم كه Ú†Ù‡ كاربران،‌ -پايگاه داده،‌ نمايه Ùˆ جداولي در سيستم تعري٠-شده است؟ -psql تعداد زيادي دستور دارد كه با \ شروع -مي‌شوند Ùˆ اين اطلاعات را در اختيار ما قرار -مي‌دهند. براي ديدن آنها دستور ?\ را اجرا -كنيد. همچنين جداول سيستمي كه با نام آنها pg_ -‌شروع مي‌شود نيز اين اطلاعات را در خود -دارند. اجراي برنامه psql با گزينه l- نيز باعث -نشان دادن ليست تمام پايگاههاي داده مي‌شود. -همچنين ÙØ§ÙŠÙ„ pgsql/src/tutorial/syscat.source نيز ÙØ±Ù…انهاي -SELECT كه با Ø§Ø³ØªÙØ§Ø¯Ù‡ از آن مي‌توان اطلاعات -پايگاه داده را استخراج كرد Ø´Ø±Ø Ø¯Ø§Ø¯Ù‡ است. -4.8) چرا درخواستهاي من كند اجرا مي‌شوند يا -چرا از نمايه ها Ø§Ø³ØªÙØ§Ø¯Ù‡ نمي‌كنند؟ -به طور معمول براي درخواستها از نمايه‌ها -Ø§Ø³ØªÙØ§Ø¯Ù‡ نمي‌شود. تنها در صورتي از نمايه‌ها -Ø§Ø³ØªÙØ§Ø¯Ù‡ مي‌شود كه اندازه جدول از يك اندازه -ØØ¯Ø§Ù‚Ù„ بزرگتر باشد Ùˆ درخواست هم Ùقط قسمتي از -رديÙ‌هاي جدول را انتخاب كرده باشد. دليل اين -كار آن است كه دسترسي‌هاي تصادÙÙŠ به هاردديسك -كه به خاطر نمايه‌ها ايجاد مي‌شود ممكن است -از خواندن مستقيم جدول يا خواندن ترتيبي -ركوردها كندتر باشد. -براي تعيين اينكه از نمايه Ø§Ø³ØªÙØ§Ø¯Ù‡ شود يا -خير، PostgreSQL بايد اطلاعات آماري را در مورد يك -جدول بداند. اين اطلاعات توسط دستور ANALYZE Ùˆ VACUUM -ANALYZE به دست مي‌آيد. با Ø§Ø³ØªÙØ§Ø¯Ù‡ از اين -اطلاعات،‌ بهينه ساز از تعداد رديÙ‌هاي يك -جدول اطلاع پيدا مي‌كند Ùˆ بهتر مي‌تواند -تعيين كند كه آيا از نمايه Ø§Ø³ØªÙØ§Ø¯Ù‡ شود يا خير. -اطلاعات آماري همچنين براي تعيين ترتيب Ø§Ù„ØØ§Ù‚ -Ùˆ روشهاي Ø§Ù„ØØ§Ù‚ به صورت بهينه نيز كاربر دارد. -جمع آوري اطلاعات آماري بايد به صورت دوره‌اي -همزمان با تغيير داده‌هاي جدول انجام شود. -نمايه‌ها به طور معمول همراه با دستور ORDER BY -به كار برده نمي‌شوند. براي يك جدول بزرگ يك -پيمايش ترتيبي همراه با دستور مرتب سازي از به -كار بردن نمايه‌ها سريعتر خواهد بود. -اما اگر همراه با ORDER BY‌ از LIMIT Ø§Ø³ØªÙØ§Ø¯Ù‡ شود -اغلب از نمايه‌ها Ø§Ø³ØªÙØ§Ø¯Ù‡ مي‌شود چون Ùقط -قسمتي از جدول Ø§Ø³ØªÙØ§Ø¯Ù‡ مي‌شود. در ØÙ‚يقت هر -چند توابع ()MIN‌ Ùˆ ()MAX از نمايه‌ها Ø§Ø³ØªÙØ§Ø¯Ù‡ -نمي‌كنند ولي مي‌توانيم با Ø§Ø³ØªÙØ§Ø¯Ù‡ از دستور -زير با Ø§Ø³ØªÙØ§Ø¯Ù‡ از نمايه‌ها Ùˆ دستور ORDER BY Ùˆ -LIMIT‌ آنها را به دست آوريم. - SELECT col - FROM tab - ORDER BY col [ DESC ] - LIMIT 1; -اگر شما Ùكر مي‌كنيد كه بهينه ساز سيستم در -انتخاب پيمايش ترتيبي اشتباه كرده است با -دستور 'SET enable_seqscan TO 'off' مي‌توانيد ببينيد آيا -Ø§Ø³ØªÙØ§Ø¯Ù‡ از نمايه‌ها باعث Ø§ÙØ²Ø§ÙŠØ´ سرعت -درخواست‌ها خواهد شد. -Ø§Ø³ØªÙØ§Ø¯Ù‡ از نمايه‌ها هنگامي كه از علائم ويژه -نظير LIKE Ùˆ ~ Ø§Ø³ØªÙØ§Ø¯Ù‡ مي‌كنيد Ùقط در بعضي -شرايط خاصي كه در اينجا ذكر شده است ممكن است: - ابتداي رشته جستجو بايد به طور ØµØ±ÙŠØ Ù…Ø´Ø®Øµ - باشد براي مثال: - دستورات LIKE نبايد با علامت % شروع شوند - الگوهاي منظمي كه با ~ مي‌ايد ØØªÙ…اً بايد با - علامت ^ شروع شود - رشته جستجو نبايد با يك مجموعه از - كاراكتر‌ها مثل [a-e] شروع شود - جستجوهاي ØºÙŠØ±ØØ³Ø§Ø³ به متن مثل ILIKE‌ Ùˆ *~ از - نمايه‌ها Ø§Ø³ØªÙØ§Ø¯Ù‡ نمي‌كنند. در عوض از - توابع نمايه‌اي كه در قسمت 4.12 ØªÙˆØ¶ÙŠØ Ø¯Ø§Ø¯Ù‡ شد - Ø§Ø³ØªÙØ§Ø¯Ù‡ مي‌كنند. - مقدار پيش ÙØ±Ø¶ locale‌ بايد در initdb Ø§Ø³ØªÙØ§Ø¯Ù‡ شود. - -4.9) چگونه مي‌توانم Ù†ØÙˆÙ‡ بررسي درخواست را -توسط بهينه‌ساز درخواستها مشاهده كنم؟ -راهنماي دستور EXPLAIN را نگاه كنيد. -4.10) نمايه R-tree‌ چيست؟ -از نمايه R-Tree براي انديس كردن داده‌هاي -ÙØ§ØµÙ„ه‌اي Ø§Ø³ØªÙØ§Ø¯Ù‡ مي‌شود. يك نمايه hash -نمي‌توانند جستجوهاي Ù…ØØ¯ÙˆØ¯Ù‡â€ŒØ§ÙŠ Ø±Ø§ انجام -دهد. نمايه "B-tree" نيز براي انجام جستجوي -Ù…ØØ¯ÙˆØ¯Ù‡â€ŒØ§ÙŠ Ø¯Ø± يك جهت قابل Ø§Ø³ØªÙØ§Ø¯Ù‡ است. اما -R-Tree مي‌تواند داده‌هاي چند بعدي را نيز -پشتيباني كند. براي مثال Ø§Ø³ØªÙØ§Ø¯Ù‡ اگر از نمايه -R-tree‌ براي گونه Point Ø§Ø³ØªÙØ§Ø¯Ù‡ شود سرعت -درخواست‌هايي نظير "select all points within a bounding -rectangle" به مراتب Ø§ÙØ²Ø§ÙŠØ´ مي‌يابد. -مقاله‌اي كه طراØÙŠ R-tree را ØªÙˆØ¶ÙŠØ Ø¯Ø§Ø¯Ù‡ است -Guttman, A. "R-trees: A Dynamic Index Structure for Spatial Searching." -Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57. -R-tree‌ مي‌تواند چندضلعيها Ùˆ چند وجهي را -پشتيباني كند. در تئوري R-tree مي‌تواند تعداد -بعدهاي بالاتر ري نيز پشتيباني كند. در عمل -توسعه R-tree‌ نياز به كار بيشتري دارد. -4.11) بهينه ساز تكويني درخواست چيست؟ (Genetic Query -Optimizer) -Ø§Ø³ØªÙØ§Ø¯Ù‡ از GEQO سرعت بهينه سازي درخواست را -هنگاميكه تعداد زيادي جدول را با Ø§Ø³ØªÙØ§Ø¯Ù‡ از -الگوريتم ژنتيك Ø§Ù„ØØ§Ù‚ مي‌كنيم Ø§ÙØ²Ø§ÙŠØ´ -مي‌دهد. -4.12) چگونه از عبارات منظم براي جستجو Ø§Ø³ØªÙØ§Ø¯Ù‡ -كنم؟ چگونه جستجويي انجام دهم كه ØØ³Ø§Ø³ به متن -نباشد؟ چگونه براي يك جستجوي غير ØØ³Ø§Ø³ به متن -از نمايه Ø§Ø³ØªÙØ§Ø¯Ù‡ كنم؟ -براي جستجوي عبارت منظم از عملگر ~‌ Ø§Ø³ØªÙØ§Ø¯Ù‡ -مي‌كنيم. براي جستجوي غير ØØ³Ø§Ø³ به متن از -عملگر *~ Ùˆ يا ILIKE‌ Ø§Ø³ØªÙØ§Ø¯Ù‡ مي‌كنيم. -روش ديگر انجام جستجوي غير ØØ³Ø§Ø³ به متن در زير -نشان داده شده است. - SELECT * - FROM tab - WHERE lower(col) = 'abc'; -اين از نمايه‌هاي استاندارد Ø§Ø³ØªÙØ§Ø¯Ù‡ -نمي‌كند. ولي شما مي توانيد با دستور زير يك -نمايه ايجاد كنيد Ùˆ از آن Ø§Ø³ØªÙØ§Ø¯Ù‡ كنيد. - CREATE INDEX tabindex ON tab (lower(col)); -4.13) Iچگونه مي‌توانم در يك درخواست تشخيص دهم -كه يك Ùيلد NULL‌ است؟ -با Ø§Ø³ØªÙØ§Ø¯Ù‡ از توابع IS NULL Ùˆ IS NOT NULL مي‌توانيم -NULL بودن يك Ùيلد را تست كنيم. -4.14) ØªÙØ§ÙˆØª بين گونه‌هاي مختل٠character چيست؟ -Type Internal Name Notes --------------------------------------------------- -VARCHAR(n) varchar اندازه، ØØ¯Ø§ÙƒØ«Ø± طول را نشان مي دهد بدون اضاÙÙ‡ شدن كاراكتر اضاÙÙ‡ -CHAR(n) bpchar كاراكترهاي بلانك براي پر شدن طول مشخص شده Ø§Ø³ØªÙØ§Ø¯Ù‡ مي‌شود -TEXT text ØØ¯Ø§ÙƒØ«Ø± طول را مشخص نمي‌كند -BYTEA bytea آرايه‌اي از بايت با طول متغير -"char" char يك كاراكتر -نام داخلي گونه‌ها را در system catalogue ‌و بعضي از -پيغامهاي خطا مي‌توان ديد. -چهار گونه اول همگي از نوع varlena هستند (4 بايت -اول روي ديسك طول را مشخص مي‌كند كه به دنبال -آن داده‌ها قرار دارند.)‌بنابراين ÙØ¶Ø§ÙŠ -واقعي Ø§Ø³ØªÙØ§Ø¯Ù‡ شده روي ديسك از اندازه تعري٠-شده بيشتر است. اما اين گونه‌ها را مي‌توان -ÙØ´Ø±Ø¯Ù‡ كرد كه اينكار باعث مي‌شود ÙØ¶Ø§ÙŠ ÙƒÙ…ØªØ±ÙŠ -روي ديسك اشغال كنند. -براي ذخيره رشته‌هاي با طول متغير(VARCHAR(n‌ -بهترين انتخاب است. در اين گونه ØØ¯Ø§ÙƒØ«Ø± طول -رشته Ù…ØØ¯ÙˆØ¯ است بر خلا٠text كه هيچ Ù…ØØ¯ÙˆØ¯ÙŠØªÙŠ -روي ØØ¯Ø§ÙƒØ«Ø± اندازه رشته نمي‌گذارد.(در اين -گونه ØØ¯Ø§ÙƒØ«Ø± طول يك رشته يك گيگا بايت خواهد -بود) -گونه (CHAR(n براي ذخيره داده‌هاي با طول يكسان -است.يك گونه‌ي (CHAR(n با كاراكترهاي بلانك -(خالي) پر مي‌شود تا به طول مشخص شده برسد در -ØØ§Ù„يكه گونه VARCHAR كاراكترها را به همان صورت -كه هستند ذخيره مي‌كند. گونه BYTEA براي ذخيره -داده‌هاي باينري است به خصوص داده‌هاي -باينتري كه شامل بايت‌هاي NULL هستند. از نظر -كارايي تمام اين گونه‌ها يكسان هستند. -4.15.1) چگونه مي‌توانم يك Ùيلد سريال يا -Ø§ÙØ²Ø§ÙŠØ´ÙŠ Ø§ÙŠØ¬Ø§Ø¯ كنم؟ -PostgreSQL از داده‌هاي سريال پشتيباني مي‌كند. -براي ايجاد يك Ùيلد سريال (براي داشتن يك Ùيلد -Ù…Ù†ØØµØ± به ÙØ±Ø¯ براي هر ردي٠)به روش زير عمل -كنيد: - CREATE TABLE person ( - id SERIAL, - name TEXT - ); -دستور بالا به طور اتوماتيک به دستور زير -تبديل مي‌شود: - CREATE SEQUENCE person_id_seq; - CREATE TABLE person ( - id INT4 NOT NULL DEFAULT nextval('person_id_seq'), - name TEXT - ); -براي ديدن اطلاعات بيشتر به راهنماي دستور -create_sequence مراجعه كنيد. همچنين مي‌توان از -OID‌هر ردي٠به عنوان يك مقدار Ù…Ù†ØØµØ± به ÙØ±Ø¯ -Ø§Ø³ØªÙØ§Ø¯Ù‡ كرد. اما در اين ØØ§Ù„ت براي dump كردن Ùˆ -reload‌كردن پايگاه داده بايد دستور pg_dumps‌ را -با گزينه o-‌ اجرا كنيد. -4.15.2) چگونه مي‌توانم مقدار يك درج سريالي را -بدانم؟ -يك روش براي Ú¯Ø±ÙØªÙ† مقدار بعدي يك Ùيلد سريال -Ø§Ø³ØªÙØ§Ø¯Ù‡ از تابع ()nextval است. در شبه ÙƒÙØ¯ÙŠ ÙƒÙ‡ در -ادامه آمده است روش انجام اين كار نشان داده -شده است: - new_id = execute("SELECT nextval('person_id_seq')"); - execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')"); -با اجرا دستور Ùوق مقدار جديد را در متغير new_id -نيز خواهيدداشت كه مي‌توانيد آن را در بقيه -درخواست‌هاي نيز Ø§Ø³ØªÙØ§Ø¯Ù‡ كنيد. توجه داشته -باشيد كه نام SEQUENCEيي كه به طور اتوماتيك ايجاد -شده است به صورت table_serialcolumn_seq‌ خواهد بود. كه -در آن table‌ نام جدول Ùˆ serialcolumn نام Ùيلد سريال -جدول مي‌باشد. -براي ديدن مقدار نسبت داده شده به Ùيلد سريال -نيز مي‌توان از تابع () currval به صورت زير -Ø§Ø³ØªÙØ§Ø¯Ù‡ كرد. - execute("INSERT INTO person (name) VALUES ('Blaise Pascal')"); - new_id = execute("SELECT currval('person_id_seq')"); -Ùˆ سرانجام شما مي‌توانيد از مقدار OID كه خروجي -دستور INSERT است براي ديدن مقدار پيش ÙØ±Ø¶ -Ø§Ø³ØªÙØ§Ø¯Ù‡ كنيد. هر چند اين روش در همه Ù¾Ù„ØªÙØ±Ù…ها -قابل Ø§Ø³ØªÙØ§Ø¯Ù‡ نيست Ùˆ ضمن اينكه Ùيلد oid‌ بعد -از عدد 4 ميليارد دوباره ØµÙØ± مي‌شود. در زبان -perl با Ø§Ø³ØªÙØ§Ø¯Ù‡ از DBI Ùˆ DBD::Pg مقدار oid‌را -مي‌توانيد به شكل زير استخراج كنيد: بعد از -اجراي ()st->execute$ مقدار oid‌ در متغير sth->pg_oid_status$ -ذخيره خواهد شد. -4.15.3) آیا توابع ()nextval Ùˆ ()currval منجر به ایجاد -شرایط race برای سایر کاربران Ù…ÛŒ شوند؟ -خیر، Ø§Ø³ØªÙØ§Ø¯Ù‡ از این توابع شرایط race را به -وجود نمی آورد. -4.15.4) چرا اعداد سریالی مربوط به تراکنشهای abort -شده مجدداً Ø§Ø³ØªÙØ§Ø¯Ù‡ نمی شود؟ چرا بین اعداد -سریالی یک ÙØ§ØµÙ„Ù‡ خالی ایجاد Ù…ÛŒ شود؟ -برای بالا بردن امکان اجرای همزمان تراکنشها، -اعداد سریالی به Ù…ØØ¶ اجرای تراکنش به آنها -تخصیص Ù…ÛŒ یابد در این ØØ§Ù„ت اگر بعضی از -تراکنشها abort شوند بین اعداد سریالی Ø§Ø³ØªÙØ§Ø¯Ù‡ -شده یک ÙØ§ØµÙ„Ù‡ خالی به وجود Ù…ÛŒ آید. -4.16) OID Ùˆ TID Ú†Ù‡ هستند؟ -OID راه ØÙ„ PostgreSQL برای داشتن یک شناسه Ù…Ù†ØØµØ± به -ÙØ±Ø¯ برای هر ردی٠است. هر ردی٠جدیدی Ú©Ù‡ ایجاد -Ù…ÛŒ شود یک OID Ù…Ù†ØØµØ± به ÙØ±Ø¯ به آن اختصاص Ù…ÛŒ -یابد. تمام OIDهایی Ú©Ù‡ در ØÛŒÙ† initdb ایجاد Ù…ÛŒ شوند -از 16384 کمتر هستند Ùˆ OIDهایی بعداً تولید Ù…ÛŒ شود -از این عدد بزرگتر خواهد بود. نکته مهم آن است -Ú©Ù‡ OIDها نه تنها در یک جدول شبیه نیستند بلکه -در Ú©Ù„ پایگاه داده هیچ دو ردیÙÛŒ دارای OID یکسان -نخواهد بود. -PostgreSQL از OID در سیستم داخلی خود برای ایجاد -ارتباط بین ردیÙهای جداول Ù…Ø®ØªÙ„Ù Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ -کند. توصیه Ù…ÛŒ شود Ú©Ù‡ یک ستون از نوع OID برای -ذخیره این Ùیلد در جدول ایجاد کنید. ساختن یک -نمایه برای این Ùیلد باعث دسترسی سریعتر به آن -خواهد شد. -تمام پایگاههای داده در PostgreSQL برای Ú¯Ø±ÙØªÙ† OID -جدید از یک ناØÛŒÙ‡ مرکزی Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ کند. ولی -اگر بخواهیم OID را به روش دیگری بگیریم Ùˆ یا -اینکه در ØÛŒÙ† Ú©Ù¾ÛŒ کردن یک جدول بخواهیم OIDهای -اصلی آن تغییر نکند به روش زیر Ù…ÛŒ توانیم عمل -کنیم: - - CREATE TABLE new_table(mycol int); - SELECT oid AS old_oid, mycol INTO tmp_table FROM old_table; - COPY tmp_table TO '/tmp/pgtable'; - COPY new_table WITH OIDS FROM '/tmp/pgtable'; - DROP TABLE tmp_table; -OID یک عدد صØÛŒØ 4 بایتی است Ùˆ بنابراین ØØ¯Ø§Ú©Ø«Ø± -مقدار آن 4 میلیارد خواهد بود Ùˆ بعد از آن -مقدار آن سرریز خواهد شد. البته تا کنون برای -کسی این Ø§ØªÙØ§Ù‚ Ù†ÛŒÙØªØ§Ø¯Ù‡ است Ùˆ تصمیم گرداندگان -PostgreSQL آن است Ú©Ù‡ قبل از آنکه این Ø§ØªÙØ§Ù‚ رخ دهد -این مشکل را برطر٠کنند. -TIDها برای شناسایی Ù…ØÙ„ Ùیزیکی یک ردی٠بر اساس -بلوک Ùˆ Ø¢ÙØ³Øª Ù…ÛŒ باشد. TIDها بعد از تغییر پیدا -کردن یک ردی٠و یا بازخوانی آن عوض Ù…ÛŒ شوند. -TIDها توسط نمایه ها Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ شوند. -4.17) معني بعضي از ترمها Ùˆ كلماتي كه در PostgreSQL‌ -Ø§Ø³ØªÙØ§Ø¯Ù‡ مي‌شود چيست؟ -لیست برخی از ترمها Ùˆ کلماتی Ú©Ù‡ Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ -شوند: - table, relation, class :کلاس، رابطه، جدول - row, record, tuple چندتایی، رکورد، ردی٠- column, field, attribute ØµÙØªØŒ Ùیلد، ستون - retrieve, select انتخاب، خواندن - replace, updateبه روز کردن، جایگزینی - append, insert درج، اضاÙÙ‡ کردن - OID, serial value مقدار سریال - portal, cursor - range variable, table name, table alias -یک لیست عمومی از ترمهای مورد Ø§Ø³ØªÙØ§Ø¯Ù‡ در -پایگاه داده در آدرس -http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.htm -وجود دارد. -4.18) چرا من خطاي "ERROR: Memory exhausted in AllocSetAlloc" -مي‌گيرم؟ -این خطا Ø§ØØªÙ…الاً یا به خاطر تمام شدن ØØ§Ùظه -مجازی سیستم شماست Ùˆ یا اینکه کرنل برای -برنامه ها در مورد میزان Ø§Ø³ØªÙØ§Ø¯Ù‡ از ØØ§Ùظه -مجازی Ù…ØØ¯ÙˆØ¯ÛŒØª اعمال کرده است. قبل از اجرای -برنامه اصلی یکی از دستورات زیر را اجرا کنید. - ulimit -d 262144 - limit datasize 256m -بسته به نوع شل یکی از این دستورات ممکن است با -موÙقیت اجرا شود. با اجرای آن دستور Ù…ØØ¯ÙˆØ¯ÛŒØª -ØØ§Ùظه مجازی برای برنامه ها برداشته شده Ùˆ با -این کار Ø§ØØªÙ…الاً درخواستی Ú©Ù‡ قبلاً خطا Ù…ÛŒ -داده است اجرا خواهد شد. -4.19) از كجا تشخيص دهم كه ويرايش يا نسخه -PostgreSQLيي كه من Ø§Ø³ØªÙØ§Ø¯Ù‡ مي‌كنم چيست؟ -با اجرای دستور ()SELECT version -4.20) چرا در ØÛŒÙ† اجرای عملیات روی large-objectها -خطای "invalid large obj descriptor"به وجود Ù…ÛŒ آید؟ -شما باید قبل از شروع دستوراتی Ú©Ù‡ با large-objectها -کار Ù…ÛŒ کنند از BEGIN Ùˆ بعد از آنها هم یک END -بگذارید. در ØØ§Ù„ ØØ§Ø¶Ø± PostgreSQL هندل large-objectها را -در زمان نهایی شدن تراکنش (commitشدن) Ù…ÛŒ بندد. به -همین دلیل اولین تلاش برای انجام هر کاری با -هندل منجر به خطای invalid large obj descriptor خواهد شد. -برای جلوگیری از این خطا ØØªÙ…اً باید از یک -تراکنش Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید. این کار همانطور Ú©Ù‡ -قبلاً Ú¯ÙØªÙ‡ شد با Ø§Ø³ØªÙØ§Ø¯Ù‡ از قرار دادن BEGIN Ùˆ END -در ابتدا Ùˆ انتهای دستورات انجام Ù…ÛŒ شود. -اگر این خطا را در ØÛŒÙ† Ø§Ø³ØªÙØ§Ø¯Ù‡ از یک درایور ODBC -Ø¯Ø±ÛŒØ§ÙØª کردید Ø§ØØªÙ…الاً باید این دستور را -اجرا کنید: set auto-commit off -4.21) چگونه يك ستون ايجاد كنم كه مقدار زمان -جاري را به عنوان مقدار Ù¾ÙŠØ´â€ŒÙØ±Ø¶ داشته باشد؟ -از CURRENT_TIMESTAMP Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید در مثال زیر Ù†ØÙˆÙ‡ -انجام این کار نشان داده شده است: -CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP ); - -4.22) چرا "زير درخواستهايي" كه از IN Ø§Ø³ØªÙØ§Ø¯Ù‡ -مي‌كنند كند هستند؟ -در نسخه های قبل از 7.4 عمل Ø§Ù„ØØ§Ù‚ زیر درخواست Ùˆ -درخواست اصلی به این صورت انجام Ù…ÛŒ شود Ú©Ù‡ -نتایج به دست آمده از زیر درخواست به صورت -ترتیبی برای هر ردی٠اعمال Ù…ÛŒ شود. اگر -زیردرخواست ردی٠های Ú©Ù…ÛŒ را به عنوان خروجی -برگرداند Ùˆ درخواست بیرونی ردی٠های زیادی را -شامل شود Ø§Ø³ØªÙØ§Ø¯Ù‡ از IN بهترین روش است در غیر -اینصورت بهتر است از EXISTS Ø§Ø³ØªÙØ§Ø¯Ù‡ شود - SELECT * - FROM tab - WHERE col IN (SELECT subcol FROM subtab); -به: - SELECT * - FROM tab - WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col); -برای اجرای سریع این درخواست باید برای ستون -subcol نمایه ایجاد شده باشد. -در نسخه های بعد از 7.4 IN برای Ø§Ù„ØØ§Ù‚ از همان -تکنیک پیچیده مورد Ø§Ø³ØªÙØ§Ø¯Ù‡ در دستورات معمولی -Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ کند Ùˆ بنابراین Ø§Ø³ØªÙØ§Ø¯Ù‡ از آن نسبت -به EXISTS ارجØÛŒØª دارد. -4.23) چگونه مي‌توانم يك Ø§Ù„ØØ§Ù‚ خارجي (outer join) -انجام دهم؟ -برای انجام Ø§Ù„ØØ§Ù‚ خارجی به روش زیر عمل کنید: - SELECT * - FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col); -یا - SELECT * - FROM t1 LEFT OUTER JOIN t2 USING (col); -درخواستهای بالا t1.col , t2.col را به هم Ø§Ù„ØØ§Ù‚ Ù…ÛŒ -کند Ùˆ همچنین ردیÙهای t1 Ú©Ù‡ نظیر آنها در t2 -نبوده است را نیز برمی گرداند. اگر از RIGHT -Ø§Ø³ØªÙØ§Ø¯Ù‡ شود نتیجه بر عکس است. یعنی ردیÙهای t2 -Ú©Ù‡ نظیر آنها در t1 نباشد را نشان Ù…ÛŒ دهد Ùˆ اگر -از FULL Ø§Ø³ØªÙØ§Ø¯Ù‡ شود نتیجه هم شامل ردیÙهای t1 -است Ùˆ هم شامل ردیÙهای t2. Ø§Ø³ØªÙØ§Ø¯Ù‡ از کلمه OUTER -اختیاری است چرا Ú©Ù‡ این کلمه به طور ضمنی -دستورهای LEFT, RIGHT, FULL وجود دارد. -در نسخه های قبلی پایگاه داده Ù…ÛŒ توانیم Ø§Ù„ØØ§Ù‚ -خارجی را به Ú©Ù…Ú© دستورهای UNION, NOT IN شبیه سازی -کنیم. این کار در مثال زیر نشان داده شده است: - - SELECT tab1.col1, tab2.col2 - FROM tab1, tab2 - WHERE tab1.col1 = tab2.col1 - UNION ALL - SELECT tab1.col1, NULL - FROM tab1 - WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2) - ORDER BY col1 -4.24) چگونه مي‌توان درخواستهايي از چند پايگاه -داده توليد كرد؟ -در ØØ§Ù„ ØØ§Ø¶Ø± این کار امکان پذیر نیست. PostgreSQL -Ùقط امکان درخواست از پایگاه داده ای را Ù…ÛŒ -دهد Ú©Ù‡ در ØØ§Ù„ ØØ§Ø¶Ø± به آن متصل باشید Ùˆ نمی -توان به طور همزمان از دو پایگاه داده Ø§Ø³ØªÙØ§Ø¯Ù‡ -کرد. البته یک برنامه کاربردی خود Ù…ÛŒ تواند به -طور همزمان دو پایگاه داده را مورد Ø§Ø³ØªÙØ§Ø¯Ù‡ -قرار داده Ùˆ نتایج را با هم ترکیب کند ولی نمی -تواند در یک درخواست به هر دو پایگاه داده -رجوع کند. -4.25) چگونه خروجي يك تابع مي‌تواند چند ردي٠-يا ستون باشد؟ -در نسخه 7.3 خروجی یک تابع Ù…ÛŒ تواند چند ردی٠یا -چند ستون باشد. برای دیدن اطلاعات بیشتر به -سایت زیر مراجعه -کنید:http://techdocs.postgresql.org/guides/SetReturningFunctions -4.26) در توابع PL/PgSQL چرا نمي‌توان با اطمينان -جداول موقت را ايجاد يا ØØ°Ù كرد؟ -PL/PgSQL Ù…ØØªÙˆØ§ÛŒ توابع را ذخیره (cache) Ù…ÛŒ کند. یک -اثر بد جانبی این کار آن است Ú©Ù‡ اگر در تابع از -یک جدول موقت Ø§Ø³ØªÙØ§Ø¯Ù‡ شود Ùˆ بعداً آن جدول ØØ°Ù -Ùˆ یک جدول جدید به جای آن ایجاد شود، در -ÙØ±Ø§Ø®ÙˆØ§Ù†ÛŒ مجدد آن تابع، Ù…ØØªÙˆØ§ÛŒ ذخیره شده -تابع هنوز به جدول قدیمی اشاره Ù…ÛŒ کند Ùˆ -بنابراین اجرای تابع با اشکال مواجه Ù…ÛŒ شود. -راه ØÙ„ این مشکل آن است Ú©Ù‡ برای جداول موقت از -دستور EXECUTE Ø§Ø³ØªÙØ§Ø¯Ù‡ شود Ú©Ù‡ این کار سبب Ù…ÛŒ شود -Ú©Ù‡ درخواست برای هر بار اجرا مجدداً پیمایش Ùˆ -ØªÙØ³ÛŒØ± شود. -4.27) Ú†Ù‡ گزينه‌هايي براي تكرار (replication) وجود -دارد؟ -There are several master/slave replication options available. These allow only -the master to make database changes and the slave can only do database reads. -The bottom of http://gborg.PostgreSQL.org/genpage?replication_research lists -them. A multi-master replication solution is being worked on at -http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php. -4.28) Ú†Ù‡ گزينه‌هايي براي رمزنگاري وجود دارد؟ - contrib/pgcrypto شامل توابع رمزنگاری زیادی است Ú©Ù‡ - Ù…ÛŒ توان از آنها در دستورات SQL Ø§Ø³ØªÙØ§Ø¯Ù‡ کرد. - برای رمز کردن ارتباط بین client Ùˆ server ØŒ پایگاه - داده ØØªÙ…اً گزینه SSL را بر روی پایگاه داده - ÙØ¹Ø§Ù„ کنیم. - در نسخه 7.3 به بعد کلمات عبور کاربران به طور - اتوماتیک به صورت رمز شده ذخیره Ù…ÛŒ شود ولی - در نسخه های قبلی باید گزینه PASSWORD_ENCRYPTION در - ÙØ§ÛŒÙ„postgresql.conf ÙØ¹Ø§Ù„ کنیم. - Ù…ÛŒ توان پایگاههای داده را روی یک ÙØ§ÛŒÙ„ سیستم - رمزشده نگاهداری کرد - - - -Extending PostgreSQL -5.1) من يك تابع نوشته‌ام. چگونه آن را در psql -اجرا كنم؟ چرا با اجراي آن core dump مي‌گيرم؟ -دلایل مختلÙÛŒ Ù…ÛŒ تواند باعث بروز این مشکل -شود. اما قبل از همه تابع خود را به صورت جدا -تست کنید. -5.2) چگونه مي‌توانم در توليد نوع‌ها Ùˆ توابع -جديد Ùˆ جالب براي PostgreSQL‌ همكاري Ùˆ مشاركت -داشته باشم؟ -کد خود را به گروه پستی pgsql-hackers ارسال کنید. -5.3) چگونه مي‌توانم يك تابع به زبان C بنويسم -كه خروجي آن يك ‌tuple (چند تايي) باشد؟ -در نسخه های 7.3 به بعد یک تابع Ù…ÛŒ تواند یک جدول -را به عنوان خروجی برگرداند. این ویژگی در -توابعی Ú©Ù‡ به زبانهای C Ùˆ PL/PgSQL نوشته Ù…ÛŒ شوند -به طور کامل وجود دارد. راهنما برنامه نویسان -را مطالعه کنید. یک مثال از Ù†ØÙˆÙ‡ برگرداندن یک -جدول به عنوان خروجی در contrib/tablefunc آمده است. -5.4) من يك ÙØ§ÙŠÙ„ منبع را عوض كرده ام چرا در -عمليات كامپيل مجدد آن تغيير ديده نمي‌شود؟ -Makefile برای ÙØ§ÛŒÙ„های include شده وابستگیها را به -درستی نشان نمی دهد. برای اطمینان از اینکه -ÙØ§ÛŒÙ„ÛŒ Ú©Ù‡ عوض کرده اید ØØªÙ…اً دوباره کامپیل Ù…ÛŒ -شود دستور make clean را اجرا کنید. اگر از کامپیلر -gcc Ø§Ø³ØªÙØ§Ø¯Ù‡ Ù…ÛŒ کنید Ù…ÛŒ توانید از گزینه -enable-depend-- در موقع اجرای برنامه configure Ø§Ø³ØªÙØ§Ø¯Ù‡ -کنید این گزینه باعث Ù…ÛŒ شود Ú©Ù‡ وابستگیها به -طور اتوماتیک تولید شود.
\ No newline at end of file |