mirror of
https://github.com/postgres/postgres.git
synced 2025-05-09 18:21:05 +03:00
1511 lines
262 KiB
HTML
1511 lines
262 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
<!-- saved from url=(0122) -->
|
|
<HTML dir="ltr"><HEAD><TITLE>PostgreSQL FAQ</TITLE>
|
|
<META content="Microsoft FrontPage 6.0" name=GENERATOR>
|
|
<META http-equiv=Content-Type content="text/html; charset=windows-1252"></HEAD>
|
|
<BODY text=#000000 vLink=#a00000 aLink=#0000ff link=#ff0000 bgColor=#ffffff>
|
|
<h1 dir="rtl"><span lang="fa"><font face="Tahoma">سوالاتي كه اغلب در مورد </font>
|
|
</span><font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma">‌
|
|
پرسيده مي شوند</font></span></h1>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">تاريخ آخرين اصلاح اين فايل:
|
|
28 شهریور 1383 هجری شمسی</span></font></p>
|
|
<P dir="rtl"><span lang="fa"><font face="Tahoma">نگهدارنده اصلي فايل (زبان
|
|
انگليسي)در حال حاضر </font></span><font face="Tahoma">: Bruce Momjian
|
|
<A
|
|
href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A></font></P>
|
|
<P dir="rtl"><span lang="fa"><font face="Tahoma">نگهدارنده فايل به زبان فارسي:
|
|
</font></span><font face="Tahoma"><a href="mailto:m.taghizadeh@imenafzar.net">
|
|
m.taghizadeh@imenafzar.net</a> </font><span lang="fa"><font face="Tahoma"> محمود
|
|
تقي‌زاده مهرجردی</font></span><font face="Tahoma"><BR></font></P>
|
|
<P dir="rtl"><span lang="fa"><font face="Tahoma">آخرين نسخه اين فايل را
|
|
مي‌توانيد از اين آدرس بگيريد </font></span><font face="Tahoma"> <A
|
|
href="http://www.postgresql.org/docs/faqs/FAQ.html">http://www.PostgreSQL.org/docs/faqs/FAQ.html</A></font></P>
|
|
<P dir="rtl"><span lang="fa"><font face="Tahoma">سوالاتي كه در مورد يك
|
|
سکوی(پلتفرم)
|
|
خاص است در اين آدرس جواب داده شده اند </font></span><font face="Tahoma"> <A
|
|
href="http://www.postgresql.org/docs/index.html">http://www.PostgreSQL.org/docs/index.html</A></font></P>
|
|
<HR dir="rtl">
|
|
|
|
<H2 align=center dir="rtl"><font face="Tahoma"><span lang="fa">سوالات عمومي</span></font></H2>
|
|
<p dir="rtl"><font face="Tahoma"><a href="#1.1">1.1</a>)
|
|
PostgreSQL</font><span lang="fa"><font face="Tahoma"> چيست و چگونه بايد آن را
|
|
تلفظ كرد؟</font></span><font face="Tahoma"><BR><A
|
|
href="#1.2">1.2</A>)
|
|
<span lang="fa">قانون كپي رايت‌ (حقوق معنوي) در مورد </span>PostgreSQL
|
|
<span lang="fa"> به چه صورت است؟</span><BR><A
|
|
href="#1.3">1.3</A>)<span lang="fa">
|
|
</span>PostgreSQL</font><span lang="fa"><font face="Tahoma">‌ روي چه نوع
|
|
يونيكسهايي اجرا مي‌شود؟</font></span><font face="Tahoma"><BR><A
|
|
href="#1.4">1.4</A>)
|
|
</font><span lang="fa"><font face="Tahoma">روي چه محيطهاي غير يونيكسي مي‌توان آن
|
|
را اجرا كرد؟</font></span><font face="Tahoma"><BR><A
|
|
href="#1.5">1.5</A>) PostgreSQL</font><span lang="fa"><font face="Tahoma">
|
|
را از كجا مي‌توانم بگيرم؟</font></span><font face="Tahoma"><BR><A
|
|
href="#1.6">1.6</A>)
|
|
</font><span lang="fa"><font face="Tahoma">از كجا خدمات پشتيباني بگيرم؟</font></span><font face="Tahoma"><BR><A
|
|
href="#1.7">1.7</A>)</font><span lang="fa"><font face="Tahoma">
|
|
آخرين نسخه اعلام شده چيست؟</font></span><font face="Tahoma"><BR><A
|
|
href="#1.8">1.8</A>)
|
|
</font><span lang="fa"><font face="Tahoma">چه مستندات و راهنمائيهايي وجود دارند؟</font></span><font face="Tahoma"><BR><A
|
|
href="#1.9">1.9</A>)
|
|
<span lang="fa">چگونه مي‌توانم ازاشكالات شناخته شده و يا امكاناتي كه در اين
|
|
پايگاه داده وجود ندارد مطلع شوم؟</span><BR><A
|
|
href="#1.10">1.10</A>)
|
|
</font><span lang="fa"><font face="Tahoma">چگونه مي‌توانم زبان </font></span>
|
|
<font face="Tahoma">SQL</font><span lang="fa"><font face="Tahoma"> را ياد بگيرم؟</font></span><font face="Tahoma"><BR><A
|
|
href="#1.11">1.11</A>)</font><span lang="fa"><font face="Tahoma">
|
|
آيا </font></span><font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma">
|
|
مشكل </font></span><font face="Tahoma">Y2K</font><span lang="fa"><font face="Tahoma">‌
|
|
دارد يا خير؟</font></span><font face="Tahoma"><BR><A
|
|
href="#1.12">1.12</A>)
|
|
</font><span lang="fa"><font face="Tahoma">چگونه مي‌توانم به تيم برنامه نويس
|
|
</font></span><font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma">
|
|
ملحق شوم؟</font></span><font face="Tahoma"><BR><A
|
|
href="#1.13">1.13</A>)
|
|
<span lang="fa">چگونه مي‌توانم يك اشكال را به گروه برنامه نويس اعلام كنم؟</span><BR><A
|
|
href="#1.14">1.14</A>)
|
|
</font><span lang="fa"><font face="Tahoma"> وضعيت </font></span>
|
|
<font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma">‌ در
|
|
مقايسه با ساير </font></span><font face="Tahoma">DBMS<span lang="fa">ها به چه
|
|
صورت است؟</span><BR><A
|
|
href="#1.15">1.15</A>)
|
|
<span lang="fa">من چگونه مي‌توانم از نظر مالي به </span>PostgreSQL<span lang="fa">
|
|
كمك كنم؟</span><BR>
|
|
</font></p>
|
|
<h2 align="center" dir="rtl"><font face="Tahoma"><span lang="fa">سوالات مربوط به
|
|
استفاده از پايگاه داده</span></font></h2>
|
|
<p dir="rtl"><font face="Tahoma"><A
|
|
href="#2.1">2.1</A>)
|
|
<span lang="fa">آيا هيچ درايور </span>ODBC</font><span lang="fa"><font face="Tahoma">‌
|
|
براي </font></span><font face="Tahoma">PostgreSQL</font><font face="Tahoma"><span lang="fa">
|
|
وجود دارد؟</span><BR><A
|
|
href="#2.2">2.2</A>)
|
|
<span lang="fa">چه ابزارهايي براي استفاده از </span>PostgreSQL<span lang="fa">‌
|
|
با صفحات وب وجود دارد؟</span><BR><A
|
|
href="#2.3">2.3</A>)
|
|
<span lang="fa">آيا </span>PostgreSQL<span lang="fa">‌ يك واسط كاربري گرافيكي
|
|
دارد؟</span><BR><A
|
|
href="#2.4">2.4</A>)
|
|
<span lang="fa">با چه زبانهاي برنامه‌نويسي مي‌توان با </span>PostgreSQL<span lang="fa">‌
|
|
ارتباط برقرار كرد؟</span><BR>
|
|
</font></p>
|
|
<h2 align="center" dir="rtl"><span lang="fa"><font face="Tahoma">سوالات مربوط به
|
|
راهبري</font></span></h2>
|
|
<p dir="rtl"><font face="Tahoma"><A
|
|
href="#3.1">3.1</A>)
|
|
<span lang="fa">چگونه مي‌توانم </span>PostgreSQL<span lang="fa">‌ را در شاخه‌اي
|
|
غير از </span>/usr/local/pgsql/<span lang="fa"> نصب كنم؟</span><BR><A
|
|
href="#3.2">3.2</A>)
|
|
<span lang="fa">چرا موقعي كه من برنامه </span>postmaster<span lang="fa">‌ را
|
|
اجرا مي كنم پيام </span>Bad system call<span lang="fa">‌ و يا </span>core dump
|
|
<span lang="fa">‌مي‌گيرم؟</span><BR><A
|
|
href="#3.3">3.3</A>)
|
|
<span lang="fa">چرا موقعي كه من سعي مي‌كنم برنامه </span>postmaster<span lang="fa">‌
|
|
را اجرا كنم خطاي</span> <I>IpcMemoryCreate</I> <span lang="fa">مي‌گيرم؟</span><BR><A
|
|
href="#3.4">3.4</A>)<I><span lang="fa">
|
|
</span></I><span lang="fa">چرا موقعي كه من سعي مي‌كنم برنامه </span>postmaster<span lang="fa">‌
|
|
را اجرا كنم خطاي</span> <I><span lang="fa"> </span>IpcSemaphoreCreate<span lang="fa">
|
|
</span></I><span lang="fa">مي‌گيرم؟</span><BR><A
|
|
href="#3.5">3.5</A>)
|
|
<span lang="fa">چگونه مي‌توانم اتصالات ساير ماشينها را كنترل كنم؟</span><BR><A
|
|
href="#3.6">3.6</A>)
|
|
<span lang="fa">براي كارايي بالاتر و بهتر پايگاه داده من چه تنظيماتي را بايد
|
|
انجام دهم؟</span><BR><A
|
|
href="#3.7">3.7</A>)
|
|
<span lang="fa">چه امكاناتي براي پيدا كردن اشكال‌ وجود دارد؟</span><BR><A
|
|
href="#3.8">3.8</A>)
|
|
<span lang="fa">چرا موقعي كه من مي‌خواهم به پايگاه داده وصل شوم پيام</span> <I>"Sorry, too many clients"
|
|
<span lang="fa">‌</span></I><span lang="fa">مي‌گيرم؟</span><BR><A
|
|
href="#3.9">3.9</A>)<span lang="fa">
|
|
در شاخه </span> <I>pgsql_tmp</I> <span lang="fa"> چه چيزي قرار دارد؟</span><BR><A
|
|
href="#3.10">3.10</A>)
|
|
<span lang="fa">چرا براي به روز كردن نسخه پايگاه داده من بايد كل داده ها را
|
|
</span>dump<span lang="fa">‌ و مجدداً </span>restore<span lang="fa"> كنم؟</span><BR><A
|
|
href="#3.11">3.11</A>)
|
|
<span lang="fa">از چه سخت افزاري بايد استفاده كنم؟</span><BR>
|
|
</font></p>
|
|
<H2 align=center dir="rtl"><span lang="fa"><font face="Tahoma">سوالات عملياتي</font></span></H2>
|
|
<p dir="rtl"><font face="Tahoma"><A
|
|
href="#4.1">4.1</A>)
|
|
تفاوت بين <span lang="en-us">binary cursors</span> و <span lang="en-us">Normal
|
|
cursors</span> چيست؟<BR><A
|
|
href="#4.2">4.2</A>)
|
|
<span lang="fa">من چگونه مي‌توانم فقط روي چند رديف اول
|
|
يا يك رديف تصادفي درخواست </span>SELECT<span lang="fa">‌
|
|
بزنم؟</span><BR><A
|
|
href="#4.3">4.3</A>)
|
|
<span lang="fa">من چگونه مي‌توانم ليستي از جداول يا ساير چيزهايي كه در </span>
|
|
psql<span lang="fa">‌ وجود دارد را ببينم؟</span><BR><A
|
|
href="#4.4">4.4</A>)
|
|
<span lang="fa">چگونه يك ستون جدول را حذف مي‌كنيد؟ چگونه نوع داده آن را عوض
|
|
كنيم؟</span><BR><A
|
|
href="#4.5">4.5</A>)
|
|
<span lang="fa">حداكثر اندازه يك رديف،‌ جدول و خود پايگاه داده چقدر است؟</span><BR><A
|
|
href="#4.6">4.6</A>)
|
|
<span lang="fa">چقدر فضاي ديسك سخت براي ذخيره كردن داده‌‌هاي يك فايل متني مورد
|
|
نياز است؟</span><BR><A
|
|
href="#4.7">4.7</A>)
|
|
<span lang="fa">چگونه مي‌توانم بفهمم كه چه كاربران،‌ پايگاه داده،‌ نمايه و
|
|
جداولي در سيستم تعريف شده است؟</span><BR><A
|
|
href="#4.8">4.8</A>)
|
|
<span lang="fa">چرا درخواستهاي من كند اجرا مي‌شوند يا چرا از نمايه ها استفاده
|
|
نمي‌كنند؟</span><BR><A
|
|
href="#4.9">4.9</A>)
|
|
<span lang="fa">چگونه مي‌توانم نحوه بررسي درخواست را توسط بهينه‌ساز درخواستها
|
|
مشاهده كنم؟</span><BR><A
|
|
href="#4.10">4.10</A>)
|
|
<span lang="fa">نمايه </span>R-tree<span lang="fa">‌ چيست؟</span><BR><A
|
|
href="#4.11">4.11</A>)
|
|
<span lang="fa">بهينه ساز تكويني درخواست چيست؟</span> (Genetic Query Optimizer)<BR><A
|
|
href="#4.12">4.12</A>)
|
|
<span lang="fa">چگونه از عبارات منظم براي جستجو استفاده كنم؟ چگونه جستجويي انجام
|
|
دهم كه حساس به متن نباشد؟ چگونه براي يك جستجوي غير حساس به متن از نمايه استفاده
|
|
كنم؟</span><BR><A
|
|
href="#4.13">4.13</A>)
|
|
<span lang="fa">چگونه مي‌توانم در يك درخواست تشخيص دهم كه يك فيلد </span>NULL<span lang="fa">‌
|
|
است؟</span><BR><A
|
|
href="#4.14">4.14</A>)
|
|
<span lang="fa">تفاوت بين گونه‌هاي مختلف </span>character<span lang="fa"> چيست؟</span><BR><A
|
|
href="#4.15.1">4.15.1</A>)
|
|
<span lang="fa">چگونه مي‌توانم يك فيلد سريال يا افزايشي ايجاد كنم؟</span><BR><A
|
|
href="#4.15.2">4.15.2</A>)
|
|
<span lang="fa">چگونه مي‌توانم مقدار يك درج سريالي را بدانم؟</span><BR><A
|
|
href="#4.15.3">4.15.3</A>) <span lang="fa">آیا توابع ()</span>nextval<span lang="fa">
|
|
و ()</span>currval<span lang="fa"> منجر به ایجاد شرایط </span>race<span lang="fa">
|
|
برای سایر کاربران می شوند؟</span><BR><A
|
|
href="#4.15.4">4.15.4</A>)
|
|
<span lang="fa">چرا اعداد سریالی مربوط به تراکنشهای </span>abort<span lang="fa">
|
|
شده مجدداً استفاده نمی شود؟ چرا بین اعداد سریالی یک فاصله خالی ایجاد می شود؟</span><BR><A
|
|
href="#4.16">4.16</A>)
|
|
OID<span lang="fa"> و </span>TID<span lang="fa"> چه هستند؟</span><BR><A
|
|
href="#4.17">4.17</A>)
|
|
<span lang="fa">معني بعضي از ترمها و كلماتي كه در </span>PostgreSQL<span lang="fa">‌
|
|
استفاده مي‌شود چيست؟</span><BR><A
|
|
href="#4.18">4.18</A>)<span lang="fa">
|
|
چرا من خطاي </span><i>"ERROR: Memory exhausted in AllocSetAlloc"</i><span lang="fa">
|
|
مي‌گيرم؟</span><BR><A
|
|
href="#4.19">4.19</A>)
|
|
<span lang="fa">از كجا تشخيص دهم كه ويرايش يا نسخه </span>PostgreSQL<span lang="fa">يي
|
|
كه من استفاده مي‌كنم چيست؟</span><BR><A
|
|
href="#4.20">4.20</A>) <span lang="fa">چرا در حین اجرای عملیات روی </span>
|
|
large-object<span lang="fa">ها خطای </span>"<I>invalid large obj descriptor</I>"<span lang="fa">به
|
|
وجود می آید؟</span><BR><A
|
|
href="#4.21">4.21</A>)
|
|
<span lang="fa">چگونه يك ستون ايجاد كنم كه مقدار زمان جاري را به عنوان مقدار
|
|
پيش‌فرض داشته باشد؟</span><BR><A
|
|
href="#4.22">4.22</A>)
|
|
<span lang="fa">چرا زير درخواستهايي كه از </span>IN<span lang="fa"> استفاده
|
|
مي‌كنند كند هستند؟</span><BR><A
|
|
href="#4.23">4.23</A>)
|
|
<span lang="fa">چگونه مي‌توانم يك الحاق خارجي (</span>outer join<span lang="fa">)
|
|
انجام دهم؟</span><BR><A
|
|
href="#4.24">4.24</A>)
|
|
<span lang="fa">چگونه مي‌توان درخواستهايي از چند پايگاه داده توليد كرد؟</span><BR><A
|
|
href="#4.25">4.25</A>)
|
|
<span lang="fa">چگونه خروجي يك تابع مي‌تواند چند رديف يا ستون باشد؟</span><BR><A
|
|
href="#4.26">4.26</A>)
|
|
<span lang="fa">در توابع </span>PL/PgSQL<span lang="fa"> چرا نمي‌توان با اطمينان
|
|
جداول موقت را ايجاد يا حذف كرد؟</span><BR><A
|
|
href="#4.27">4.27</A>)
|
|
<span lang="fa">چه گزينه‌هايي براي تكرار (</span>replication<span lang="fa">)</span>
|
|
<span lang="fa">وجود دارد؟</span><BR><A
|
|
href="#4.28">4.28</A>)
|
|
<span lang="fa">چه گزينه‌هايي براي رمزنگاري وجود دارد؟</span><BR>
|
|
</font></p>
|
|
<h2 align="center" dir="rtl"><font face="Tahoma"><span lang="fa">توسعه </span>
|
|
PostgreSQL</font></h2>
|
|
<p dir="rtl"><font face="Tahoma"><A
|
|
href="#5.1">5.1</A>)
|
|
<span lang="fa">من يك تابع نوشته‌ام. چگونه آن را در </span>psql<span lang="fa">
|
|
اجرا كنم؟ چرا با اجراي آن </span>core dump<span lang="fa"> مي‌گيرم؟</span><BR><A
|
|
href="#5.2">5.2</A>)
|
|
<span lang="fa">چگونه مي‌توانم در توليد نوع‌ها و توابع جديد و جالب براي </span>
|
|
PostgreSQL<span lang="fa">‌ همكاري و مشاركت داشته باشم.</span><BR><A
|
|
href="#5.3">5.3</A>)
|
|
<span lang="fa">چگونه مي‌توانم يك تابع به زبان </span>C<span lang="fa"> بنويسم
|
|
كه خروجي آن يك</span> <span lang="fa">‌</span>tuple<span lang="fa"> </span> <span lang="fa">(چند
|
|
تايي) باشد؟</span><BR><A
|
|
href="#5.4">5.4</A>)
|
|
<span lang="fa">من يك فايل منبع را عوض كرده ام چرا در عمليات كامپيل مجدد آن
|
|
تغيير ديده نمي‌شود؟</span><BR>
|
|
</font></p>
|
|
<HR dir="rtl">
|
|
|
|
<H2 align=center dir="rtl"><font face="Tahoma"><span lang="fa">سوالات عمومي</span></font></H2>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=1.1>1.1</A>) <span lang="en-us">
|
|
PostgreSQL</span> چيست و چگونه آن را بايد تلفظ كرد؟</font></H4>
|
|
<p dir="rtl"><span lang="en-us">PostgreSQL</span> به صورت <span lang="en-us">
|
|
Post-Gres-Q-L</span>‌ تلفظ مي‌شود. يك فايل صوتي در آدرس
|
|
<a href="http://www.postfresql.org/postgresql.mp3‌"><span lang="en-us">
|
|
http://www.postfresql.org/postgresql.mp3</span>‌</a> براي كساني كه مايلند تلفظ
|
|
صحيح را بشنوند وجود دارد.</p>
|
|
<P dir="rtl"><span lang="en-us">PostgreSQL</span> از روي سيستم مديريت پايگاه
|
|
داده <span lang="en-us">POSTGRES</span> توسعه داده شده است (هنوز هم بعضي مواقع
|
|
براي سادگي به آن <span lang="en-us">Postgres</span> گفته مي‌شود) كه يك نمونه
|
|
تحقيقاتي از پايگاه داده‌هاي نسل بعد است. <span lang="en-us">PostgreSQL</span>
|
|
همان الگوي داده قوي و انواع داده را حفظ كرده است ولي زبان
|
|
<span lang="en-us">PostQuel</span> را با يك زيرمجموعه پيشرفته از
|
|
<span lang="en-us">SQL</span> جايگزين كرده است. <span lang="en-us">PostgreSQL</span>
|
|
متن باز بوده و متن كامل آن در دسترس است.</P>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL </span> توسط
|
|
يك تيم برنامه‌نويس كه همگي در گروه پست الكترونيك برنامه‌نويسان
|
|
<span lang="en-us">PostgreSQL</span> عضو هستند، انجام مي‌شود. هماهنگ كننده
|
|
اصلي در حال حاضر <span lang="en-us">Marc G. Fournier</span>‌ به آدرس
|
|
<span lang="en-us"><a href="mailto:scrappy@PostgreSQL.org">
|
|
scrappy@PostgreSQL.org</a></span> مي‌باشد. (براي ديدن نحوه ملحق شدن به اين
|
|
تيم قسمت <A
|
|
href="#1.6">1.6</A>
|
|
را ببينيد). اين تيم در حاضر مسئوليت تمام مسائل مربوط به برنامه‌نويسي
|
|
<span lang="en-us">PostgreSQL</span> را بر عهده دارد. اين يك پروژه گروهي است و
|
|
تحت كنترل هيچ شركتي نيست. براي اطلاعات بيشتر در مورد اين تيم به آدرس
|
|
<A
|
|
href="http://www.postgresql.org/docs/faqs/FAQ_DEV.html">http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html</A>
|
|
مراجعه كنيد.</font></P>
|
|
<P dir="rtl"><font face="Tahoma">اولين نسخه <span lang="en-us">PostgreSQL</span>‌
|
|
توسط Andrew Yu and Jolly Chen به وجود آمد. افراد بسياري در توسعه و رفع اشكال و
|
|
انتقال آن شركت كرده‌اند. متن اصلي <span lang="en-us">Postgres</span> كه
|
|
<span lang="en-us">PostgreSQL</span> از روي آن نوشته شده است، توسط تعداد زيادي
|
|
دانشجوي كارشناسي ارشدو دانشجوي كارشناسي و تيم برنامه‌نويسي كه تحت نظر پروفسور
|
|
Michael Stonebrake در دانشگاه بركلي،‌كاليفرنيا كار مي‌كرده‌اند نوشته شده است.</font></P>
|
|
<P dir="rtl"><font face="Tahoma">نام اصلي نرم افزار در دانشگاه بركلي
|
|
<span lang="en-us">Postgres</span>‌ بود. در سال 1995 بعد از اضافه شدن
|
|
<span lang="en-us">SQL</span> نام آن به<span lang="en-us"> Postgres95</span>
|
|
تغيير داده شد.<span lang="en-us"> </span>در سال 1996 نام آن به
|
|
<span lang="en-us">PostgreSQL</span> تغيير داده شد.</font></P>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=1.2>1.2</A>) قوانين كپي رايت در مورد
|
|
<span lang="en-us">PostgreSQL</span> به چه صورت است؟</font></H4>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL</span> تحت قانون
|
|
كپي رايت زير قرار دارد:</font></p>
|
|
<P dir="ltr"><font face="Tahoma">PostgreSQL Data Base Management System</font></P>
|
|
<P dir="ltr"><font face="Tahoma">Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
|
Portions Copyright (c) 1994-6 Regents of the University of California</font></P>
|
|
<P dir="ltr"><font face="Tahoma">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.</font></P>
|
|
<P dir="ltr"><font face="Tahoma">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.</font></P>
|
|
<P dir="ltr"><font face="Tahoma">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.</font></P>
|
|
<P dir="rtl"><font face="Tahoma">قانون بالا ليسانس <span lang="en-us">BSD</span>
|
|
كه يك ليسانس كلاسيك براي متن‌هاي باز است مي‌باشد. هيچ محدوديتي در مورد نحوه
|
|
استفاده از متن در آن ديده نمي‌شود. ما آن را دوست داريم و هيچ قصدي براي تغيير آن
|
|
نداريم.</font></P>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=1.3>1.3</A>) PostgreSQL</font><span lang="fa"><font face="Tahoma">‌ روي چه نوع
|
|
يونيكسهايي اجرا مي‌شود؟</font></span></H4>
|
|
<p dir="rtl"><font face="Tahoma">در حالت كلي <span lang="en-us">PostgreSQL</span>
|
|
روي هر پلتفرم (سكوي) سازگار با يونيكس اجرا مي‌شود. ليست پلتفرمهايي كه تاكنون
|
|
<span lang="en-us">PostgreSQL</span>‌ روي آنها نصب و تست شده است درقسمت
|
|
دستورالعملهاي نصب آمده است.</font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=1.4>1.4</A>) </font><span lang="fa"><font face="Tahoma">روي چه محيطهاي غير يونيكسي مي‌توان آن
|
|
را اجرا كرد؟</font></span></H4>
|
|
<P dir="rtl"><font face="Tahoma"><STRONG>Client</STRONG></font></P>
|
|
<P dir="rtl"><font face="Tahoma">مي‌توان <span lang="en-us">psql, </span>
|
|
كتابخانه <span lang="en-us">libpq</span> و ساير واسطها و برنامه‌هاي كاربردي را
|
|
طوري كامپيل كرد كه روي محيطهاي ويندوز نيز اجرا شوند. در اين حالت
|
|
<span lang="en-us">Client</span> روي ويندوز اجرا مي‌شود و از طربق شبكه و پروتكل
|
|
<span lang="en-us">TCP/IP</span> با يك سرور كه روي يك پلتفرم لينوكس در حال
|
|
اجراست ارتباط برقرار مي‌كند.يك فايل <span lang="en-us">win32.mak</span> همراه با
|
|
كدهاي <span lang="en-us">PostgreSQL</span> وجود دارد كه براي كامپيل كردن
|
|
كتابخانه <span lang="en-us">libpq</span> و برنامه <span lang="en-us">psql</span>
|
|
مي‌باشد. <span lang="en-us">P</span>‌<span lang="en-us">ostgreSQL</span>‌ همچنين
|
|
امكان ارتباط به صورت <span lang="en-us">ODBC</span>‌ را نيز دارد.</font></P>
|
|
<P dir="rtl"><font face="Tahoma"><STRONG>Server</STRONG></font></P>
|
|
<P dir="rtl"><strong style="font-weight: 400"><font face="Tahoma">با استفاده از
|
|
<span lang="en-us">Cygwin</span>‌ و كتابخانه <span lang="en-us">Cygnus</span>
|
|
مي‌توان پايگاه داده را روي ويندوز <span lang="en-us">NT</span> و يا
|
|
<span lang="en-us">Win2K</span> اجرا كرد.براي ديدن اطلاعات بيشتر فايل<span lang="en-us">
|
|
</span></font></strong><font face="Tahoma"> <I>pgsql/doc/FAQ_MSWIN<span lang="en-us">
|
|
</span>‌</I>را كه بهمراه توزبع‌هاي <span lang="en-us">PostgreSQL</span> آمده است
|
|
ببينيد و يا اينكه به اين صفحه <A
|
|
href="http://www.postgresql.org/docs/faqs/text/FAQ_MSWIN">http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A>
|
|
مراجعه كنيد.</font></P>
|
|
<P dir="rtl"><font face="Tahoma">در حال حاضر يك عمليات انتقال <span lang="en-us">
|
|
PostgreSQL</span> به روي سكوهاي <span lang="en-us">Win NT/2000/XP</span> در
|
|
جريان است. براي ديدن وضعيت اين پروژه به سايت‌هاي <A
|
|
href="http://momjian.postgresql.org/main/writings/pgsql/win32.html">
|
|
http://momjian.postgresql.org/main/writings/pgsql/win32.htm</A> و <A
|
|
href="http://techdocs.postgresql.org/guides/Windows">http://techdocs.postgresql.org/guides/Windows</A>
|
|
مراجعه كنيد. </font></P>
|
|
<P dir="rtl"><font face="Tahoma">همچنين يك عمليات انتقال بر روي
|
|
<span lang="en-us">Novell Netware 6</span> نيز در حال انجام است كه در سايت <A
|
|
href="http://forge.novell.com/">http://forge.novell.com</A> مي‌توانيد اطلاعات
|
|
بيشتر را ببينيد.</font></P>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=1.5>1.5</A>) PostgreSQL</font><span lang="fa"><font face="Tahoma">
|
|
را از كجا مي‌توانم بگيرم؟</font></span></H4>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL</span>‌ را از
|
|
سايت اصلي آن <A
|
|
href="ftp://ftp.postgresql.org/pub">ftp://ftp.PostgreSQL.org/pub</A> مي‌توانيد
|
|
بگيريد. در صفحه اصلي سايت ليست ساير آدرسهايي كه مي‌توانيد <span lang="en-us">
|
|
PostgreSQL</span>‌ را از آنها بگيريد آمده است.</font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=1.6>1.6</A>) </font><span lang="fa"><font face="Tahoma">از كجا خدمات پشتيباني بگيرم؟</font></span></H4>
|
|
<p dir="rtl"><font face="Tahoma">گروه پستي اصلي <A
|
|
href="mailto:pgsql-general@PostgreSQL.org">pgsql-general@PostgreSQL.org</A>
|
|
مي‌باشد. اين گروه براي بحث در مورد موضوعات مختلف در زمينه <span lang="en-us">
|
|
PostgreSQL</span> است. براي عضو شدن در اين گروه پستي يك نامه الكترونيكي
|
|
به آدرس گروه با
|
|
محتوياتی كه در ادامه آمده است ارسال كنيد. در قسمت <span lang="en-us">
|
|
Subject</span> چيزي ننويسيد.</font></p>
|
|
<div dir="rtl">
|
|
<PRE><font face="Tahoma"> subscribe
|
|
end
|
|
</font></PRE>
|
|
</div>
|
|
<P dir="rtl"><font face="Tahoma">آدرس گروه: <A
|
|
href="mailto:pgsql-general-request@PostgreSQL.org">pgsql-general-request@PostgreSQL.org</A></font></P>
|
|
<P dir="rtl"><font face="Tahoma">همچنين يك گروه پستي هم به صورت ارسال چكيده
|
|
پيامها وجود دارد. براي عضو شدن در اين گروه يك نامه با محتويات زير به
|
|
این آدرس
|
|
ارسال كنيد. <A
|
|
href="mailto:pgsql-general-digest-request@PostgreSQL.org">pgsql-general-digest-request@PostgreSQL.org</A>
|
|
</font></P>
|
|
<div dir="rtl">
|
|
<PRE><font face="Tahoma"> subscribe
|
|
end
|
|
</font></PRE></div>
|
|
<p dir="rtl"><font face="Tahoma">در اين گروه هر موقع حجم نامه‌ها به 30 كيلوبايت
|
|
رسيد براي تمام اعضاء ارسال مي‌شود.</font></p>
|
|
<p dir="rtl"><font face="Tahoma">گروه پستي بررسي اِشكالات هم وجود دارد. براي عضو
|
|
شدن در اين گروه يك نامه با محتويات زير به
|
|
<A
|
|
href="mailto:pgsql-bugs-request@PostgreSQL.org">pgsql-bugs-request@PostgreSQL.org</A>
|
|
ارسال كنيد.</font></p>
|
|
<div dir="rtl">
|
|
<PRE><font face="Tahoma"> subscribe
|
|
end
|
|
</font></PRE></div>
|
|
<P dir="rtl"><font face="Tahoma" size="3">گروه پستي مخصوص توسعه دهندگان
|
|
(برنامه‌نويسان) نيز وجوددارد. براي عضويت در اين گروه يك نامه به آدرس زير با
|
|
محتويات مشخص شده ارسال كنيد. </font><font face="Tahoma">
|
|
<A
|
|
href="mailto:pgsql-hackers-request@PostgreSQL.org"><font size="3">pgsql-hackers-request@PostgreSQL.org</font></A><span lang="en-us">
|
|
</span> </font></p>
|
|
<div dir="rtl">
|
|
<PRE><font face="Tahoma"> subscribe
|
|
end
|
|
</font></PRE>
|
|
</div>
|
|
<p dir="rtl"><font face="Tahoma">گروههاي پستي ديگري نيز در زمينه
|
|
<span lang="en-us">PostgreSQL</span>‌ وجود دارد كه مي‌توانيد در سايت <A
|
|
href="http://www.postgresql.org/">http://www.postgresql.org</A> ببينيد.</font></p>
|
|
<p dir="rtl"><font face="Tahoma">همچنين يك كانال <span lang="en-us">IRC</span>
|
|
روي <span lang="en-us">Freenode</span> و <span lang="en-us">EFNet</span> بنام <I>PostgreSQL<span lang="en-us">#</span> </I>
|
|
وجود دارد. شما مي‌توانيد از فرمان يونيكسي </font> <CODE>
|
|
<font face="Tahoma">irc -c '#PostgreSQL'
|
|
"$USER" irc.phoenix.net.</font></CODE><font face="Tahoma"> يا </font> <CODE>
|
|
<font face="Tahoma">irc -c '#PostgreSQL' "$USER" irc.freenode.net<span lang="en-us">
|
|
</span>استفاده كنيد.</font></CODE></p>
|
|
<p dir="rtl"><font face="Tahoma">ليست شركتهايي كه از طريق آنها مي‌توانيد خدمات
|
|
پشتيباني تجاري در زمينه <span lang="en-us">PostgreSQL</span> دريافت كنيد در اين
|
|
آدرس <A
|
|
href="http://techdocs.postgresql.org/companies.php">http://techdocs.postgresql.org/companies.php</A></font><code><font face="Tahoma">
|
|
موجود است.</font></code></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=1.7>1.7</A>) </font><span lang="fa"><font face="Tahoma">
|
|
آخرين نسخه اعلام شده چيست؟</font></span></H4>
|
|
<p dir="rtl"><font face="Tahoma">آخرين نسخه <span lang="en-us">PostgreSQL</span>‌<span lang="en-us">
|
|
</span> كه وجود دارد 7.4.3 است.</font></p>
|
|
<p dir="rtl"><font face="Tahoma">هدف ما آن است كه هر 6 ماه تا 8 ماه يك نسخه جديد
|
|
ارائه شود.</font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=1.8>1.8</A>) </font><span lang="fa"><font face="Tahoma">چه مستندات و راهنمائيهايي وجود دارند؟</font></span></H4>
|
|
<p dir="rtl"><font face="Tahoma">چندين كتابچه و صفحات راهنما و مثالهاي كوچك
|
|
همراه با متن اصلي <span lang="en-us">PostgreSQL</span>‌ در شاخه
|
|
<span lang="en-us">doc </span>وجود دارد. براي ديدن صفحات راهنما مي‌توانيد به
|
|
سايت <A
|
|
href="http://www.postgresql.org/docs">http://www.PostgreSQL.org/docs</A><span lang="en-us">
|
|
</span> نيز مراجعه نماييد.</font></p>
|
|
<p dir="rtl"><font face="Tahoma">دو كتاب در زمينه <span lang="en-us">PostgreSQL</span>‌<span lang="en-us">
|
|
</span> در آدرس‌هاي <A
|
|
href="http://www.postgresql.org/docs/awbook.html">
|
|
http://www.PostgreSQL.org/docs/awbook.htm</A>
|
|
و <A
|
|
href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook</A>
|
|
وجود دارد. ليستي از كتابهايي كه قابل خريد است در آدرس <A
|
|
href="http://techdocs.postgresql.org/techdocs/bookreviews.php">http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</A><span lang="en-us">
|
|
</span>وجود دارد. همچنين ليستي از مقالات فني در مورد <span lang="en-us">
|
|
PostgreSQL</span> در آدرس <A
|
|
href="http://techdocs.postgresql.org/">http://techdocs.PostgreSQL.org</A><span lang="en-us">
|
|
</span>وجود دارد.</font></p>
|
|
<p dir="rtl"><font face="Tahoma">برنامه <span lang="en-us">psql</span> يك دستور
|
|
<span lang="en-us">d\</span> دارد كه اطلاعاتي در مورد انواع داده‌هاي قابل تعريف
|
|
و عملگر‌ها و توابع و ... به ما نشان مي‌دهد. در سايت اصلي ما اطلاعات بيشتري را
|
|
مي‌توانيد پيدا كنيد.</font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=1.9>1.9</A>)
|
|
<span lang="fa">چگونه مي‌توانم ازاشكالات شناخته شده و يا امكاناتي كه در اين
|
|
پايگاه داده وجود ندارد مطلع شوم؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL</span> يك زير
|
|
مجموعه پيشرفته از <span lang="en-us">SQL-92</span> را پشتيباني مي‌كند. در ليست
|
|
<span lang="en-us"> </span><A
|
|
href="http://developer.postgresql.org/todo.php">TODO</A> اِشكالات
|
|
شناخته شده يا امكاناتي كه وجود ندارد و يا برنامه‌‌هاي آينده آمده است.</font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=1.10>1.10</A>) </font><span lang="fa"><font face="Tahoma">چگونه مي‌توانم زبان </font></span>
|
|
<font face="Tahoma">SQL</font><span lang="fa"><font face="Tahoma"> را ياد بگيرم؟</font></span></H4>
|
|
<p dir="rtl"><font face="Tahoma">كتاب <span lang="en-us">PostgreSQL</span> در
|
|
آدرس <span lang="en-us">SQL</span> <A
|
|
href="http://www.postgresql.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A><span lang="en-us">
|
|
</span>‌را آموزش مي‌دهد. همچنين يك كتاب در آدرس <A
|
|
href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook </A>
|
|
وجود دارد. يك راهنماي خيلي خوب هم در سايت‌هاي <A
|
|
href="http://www.intermedia.net/support/sql/sqltut.shtm">http://www.intermedia.net/support/sql/sqltut.shtm</A>
|
|
و <A
|
|
href="http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM">http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM</A>
|
|
و <A href="http://sqlcourse.com/">http://sqlcourse.com</A> در مورد
|
|
<span lang="en-us">SQL</span> وجود دارد.</font></p>
|
|
<p dir="rtl"><font face="Tahoma">كتاب ديگري كه مي‌توان براي يادگيري
|
|
<span lang="en-us">SQL</span> از آن استفاده كرد كتاب <span lang="en-us">"SQL</span>
|
|
را در 21 روز ياد بگيريد،‌ ويرايش دوم<span lang="en-us">" </span>در سايت <A
|
|
href="http://members.tripod.com/er4ebus/sql/index.htm">http://members.tripod.com/er4ebus/sql/index.htm</A><span lang="en-us">
|
|
</span>مي‌باشد.</font></p>
|
|
<p dir="rtl"><font face="Tahoma">تعداد زيادي از كاربران كتاب <span lang="en-us">
|
|
The Practical SQL</span> را ترجيح مي‌دهند. كتاب ديگر <span lang="en-us">The
|
|
Complete Refrence SQL</span> انتشارات <span lang="en-us">McGraw-Hill</span>
|
|
مي‌باشد.</font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=1.11>1.11</A>) </font><span lang="fa"><font face="Tahoma">
|
|
آيا </font></span><font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma">
|
|
مشكل </font></span><font face="Tahoma">Y2K</font><span lang="fa"><font face="Tahoma">‌
|
|
دارد يا خير؟</font></span></H4>
|
|
<p dir="rtl"><font face="Tahoma">خير،‌<span lang="en-us">PostgreSQL</span>‌ با
|
|
تاريخ‌هاي قبل و بعد از 2000 مشكلي ندارد.</font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=1.12>1.12</A>) </font><span lang="fa"><font face="Tahoma">چگونه مي‌توانم به تيم برنامه نويس
|
|
</font></span><font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma">
|
|
ملحق شوم؟</font></span></H4>
|
|
<p dir="rtl"><font face="Tahoma">ابتدا،‌آخرين سورس را دونلود كرده و مستندات
|
|
مربوط به برنامه‌نويسي <span lang="en-us">PostgreSQL</span> را در سايت مطالعه
|
|
كنيد. سپس به گروههاي پستي ‌ <I>pgsql-patches </I>
|
|
و <i><span lang="en-us">pgsql-hackers
|
|
</span> </i>عضو شويد. در مرحله آخر وصله‌هاي با كيفيت بالا را به
|
|
<span lang="en-us">pgsql-patches</span> ارسال كنيد.</font></p>
|
|
<p dir="rtl"><font face="Tahoma">تعداد زيادي از برنامه‌نويسان وجود دارند كه
|
|
امتياز انجام تغييرات در <span lang="en-us">cvs</span>‌ را دارند. هر كدام از آنها
|
|
تعداد زيادي وصله‌‌ با كيفيت بالا به گروه ارسال كرده‌اند كه اعتماد گردانندگان
|
|
<span lang="en-us">PostgreSQL</span> را به دست آورده‌اند.</font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=1.13>1.13</A>)
|
|
<span lang="fa">چگونه مي‌توانم يك اِشكال را به گروه برنامه نويس اعلام كنم؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma">لطفاً صفحه مربوط به اِشكالات <span lang="en-us">
|
|
PostgreSQL</span> را در سايت <A
|
|
href="http://www.postgresql.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bugs.php</A><span lang="en-us">
|
|
</span>مشاهده‌<span lang="en-us"> </span>كنيد. در اين سايت نحوه گزارش و ارسال يك
|
|
اشكال توضيح داده شده است.</font></p>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="en-us"> </span>همچنين براي
|
|
ديدن نسخه‌هاي جديدتر <span lang="en-us">PostgreSQL</span> و يا وجود يك وصله جديد
|
|
از سايت <A
|
|
href="ftp://ftp.postgresql.org/pub">ftp://ftp.PostgreSQL.org/pub</A> بازديد
|
|
كنيد.</font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=1.14>1.14</A>) </font><span lang="fa"><font face="Tahoma">
|
|
وضعيت </font></span>
|
|
<font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma">‌ در
|
|
مقايسه با ساير </font></span><font face="Tahoma">DBMS<span lang="fa">ها به چه
|
|
صورت است؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma">راههاي مختلفي براي اندازه‌گيري و مقايسه
|
|
نرم‌افزارها وجود دارد كه عبارتند از امكانات، كارايي، قابليت اعتماد، پشتيباني و
|
|
قيمت</font></p>
|
|
<DL>
|
|
<div dir="rtl">
|
|
<dl>
|
|
<dt><b><font face="Tahoma">امكانات</font></b></dt>
|
|
<dd><font face="Tahoma"><span lang="en-us">PostgreSQL</span> بيشتر امكانات
|
|
موجود در سيستم‌هاي پايگاه داده تجاري بزرگ نظير <span lang="en-us">
|
|
transactions, subselets, triggers, views, foreign key referential integrity
|
|
</span>و <span lang="en-us">sophisticated locking</span>‌ را دارد. در
|
|
<span lang="en-us">PostgreSQL</span>‌‌ امكاناتي وجود دارد كه پايگاههاي داده
|
|
ديگر آن را ندارند نظير <span lang="en-us">user-defined types</span>‌و
|
|
<span lang="en-us">Inheritance</span>‌و <span lang="en-us">rules</span>‌و
|
|
<span lang="en-us">multi-version concurrency control</span></font></dd>
|
|
</dl>
|
|
</div>
|
|
<DD>
|
|
<p dir="rtl"> <div dir="rtl">
|
|
<b><font face="Tahoma">كارايي</font></b><p><font face="Tahoma"><b>
|
|
</b>كارايي <span lang="en-us">PostgreSQL</span> در حد بقيه سيستم‌هاي تجاري و
|
|
متن باز است. در بعضي موارد سريعتر و در بعضي موارد از آنها كندتر است. در
|
|
مقايسه با <span lang="en-us">MySQL</span> براي كاربران بيشتر و درخواست‌هاي
|
|
پيچيده و بار زياد خواندن/نوشتن سريعتر است. در درخواست‌هاي ساده<span lang="en-us">
|
|
SELECT</span>‌ از <span lang="en-us">MySQL</span> كندتر است. البته
|
|
<span lang="en-us">MySQL</span> خيلي از امكانات <span lang="en-us">
|
|
PostgreSQL</span> كه در بالا به آن اشاره شد را ندارد. هدف اصلي ما امكانات و
|
|
قابليت اعتماد بالاست در ضمن آنكه تلاش مي‌كنيم تا كارايي آن نيز بهبود يابد.
|
|
در آدرس <A
|
|
href="http://openacs.org/philosophy/why-not-mysql.html">http://openacs.org/philosophy/why-not-mysql.html</A>
|
|
يك مقايسه جالب بين <span lang="en-us">MySQL</span> و <span lang="en-us">
|
|
PostgreSQL</span> وجود دارد. از طرف ديگر <span lang="en-us">MySQL</span>‌ يك
|
|
شركت است كه محصول خود را به صورت متن باز ارائه مي‌كند ولي براي نرم‌افزار غير
|
|
متن باز خود احتياج به ليسانس تجاري دارد بر خلاف <span lang="en-us">
|
|
PostgreSQL</span> كه يك گروه كاملاً متن باز هستند.</font></div>
|
|
<DD>
|
|
<p dir="rtl"> <div dir="rtl">
|
|
<dl>
|
|
<dt><b><font face="Tahoma">قابليت اطمينان</font></b></dt>
|
|
<dd><font face="Tahoma">ما فكر مي‌كنيم كه يك سيستم پايگاه داده‌اي كه مطمئن
|
|
نباشد ارزشي ندارد. ما تمام تلاشمان را براي ارائه كدهاي پايداري كه به خوبي
|
|
تست شده باشند و كمترين اِشكالات را داشته باشند مي‌كنيم. هر نسخه جديدي كه
|
|
ارائه مي‌شود حداقل يك ماه را در مرحله تست بتا مي‌گذراند. ما بر اين باور
|
|
هستيم كه قابليت اطمينان <span lang="en-us">PostgreSQL</span>‌ در مقايسه با
|
|
ساير سيستم‌هاي پايگاه داده قابل توجه است و نسخه‌هايي كه تاكنون ارائه شده است
|
|
نشان مي‌دهد كه ما توانايي ارائه يك سيستم قوي و محكم و مطمئن را كه آماده
|
|
بهره‌برداري است داريم.</font></dd>
|
|
</dl>
|
|
</div>
|
|
<DD>
|
|
<div dir="rtl">
|
|
<dl>
|
|
<dt><b><font face="Tahoma">پشتيباني</font></b></dt>
|
|
<dd><font face="Tahoma">گروههاي پستي ما امكان ارتباط و تماس به گروه بزرگي از
|
|
برنامه نويسان و كاربران را مي‌دهد كه مي‌توانند در حل مشكلات به ديگران كمك
|
|
كنند. دسترسي مستقيم به برنامه‌نويسان و گروههاي كاربران و راهنماها و كداصلي
|
|
باعث مي‌شود كه پشتيباني <span lang="en-us">PostgreSQL</span> نسبت به ساير
|
|
پايگاههاي داده به نحو بهتري انجام شود. همچنين امكان ارائه خدمات پشتيباني به
|
|
صورت تجاري نيز وجود دارد. براي ديدن اطلاعات بيشتر به <A
|
|
href="#1.6">FAQ
|
|
section 1.6</A> مراجعه كنيد.</font></dd>
|
|
</dl>
|
|
</div>
|
|
<DD>
|
|
<div dir="rtl">
|
|
<dl>
|
|
<dt><b><font face="Tahoma">قيمت</font></b></dt>
|
|
<dd><font face="Tahoma">هم براي استفاده تجاري و هم غير تجاري هيچ هزينه‌اي
|
|
نبايد پرداخت شود. هيچ محدوديتي براي انجام تغييرات در <span lang="en-us">
|
|
PostgreSQL</span> توسط استفاده كنندگان وجود ندارد به جز مواردي كه در ليسانس
|
|
<span lang="en-us">BSD</span> به آن اشاره شده است.</font></dd>
|
|
</dl>
|
|
</div>
|
|
</DL>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=1.15>1.15</A>)
|
|
<span lang="fa">من چگونه مي‌توانم از نظر مالي به </span>PostgreSQL<span lang="fa">
|
|
كمك كنم؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL </span> داراي
|
|
يك ساختار تشكيلاتي درجه اول است كه آن را مديون <span lang="en-us">Marc Fournier</span>‌
|
|
است كه اين ساختار را ايجاد كرده است.</font></p>
|
|
<p dir="rtl"><font face="Tahoma">كيفيت يك ساختار براي يك پروژه متن باز بسيار
|
|
اهميت دارد. يك ساختار خوب مي‌تواند مانع از حوادثي شود كه در حركت روبه‌جلوي پروژه
|
|
خللي وارد مي‌كنند.</font></p>
|
|
<p dir="rtl"><font face="Tahoma">البته اين ساختار تشكيلاتي ارزان نيست. هزينه‌هاي
|
|
ثابت ماهانه و روزمره براي نگهداري و حفظ اين ساختار مورد نياز است. اگر شما يا
|
|
شركت شما مايل است كه از نظر مالي به اين حركت كمك كند لطفاً به سايت <A
|
|
href="http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping</A>
|
|
مراجعه كرده و كمك خود را اهدا كنيد.</font></p>
|
|
<p dir="rtl"><font face="Tahoma">هر چند در صفحه اصلي عبارت <span lang="en-us">
|
|
PostgreSQL,Inc</span>‌ ذكر شده است ولي مشاركت عمدتاً براي پشتيباني از پروژه
|
|
<span lang="en-us">PostgreSQL</span>‌ مي باشد و نه براي يك شركت مشخص. اگر ترجيح
|
|
مي‌دهيد مي‌توانيد يك چك به آدرس مشخص شده ارسال كنيد.</font></p>
|
|
<p dir="rtl"><font face="Tahoma">اگر يك استفاده موفق از <span lang="en-us">
|
|
PostgreSQL</span> سراغ داريد لطفاً آن را به سايت <A
|
|
href="http://advocacy.postgresql.org/">http://advocacy.postgresql.org</A> گزارش
|
|
دهيد.</font></p>
|
|
<HR dir="rtl">
|
|
|
|
<h2 align="center" dir="rtl"><font face="Tahoma"><span lang="fa">سوالات مربوط به
|
|
استفاده از پايگاه داده</span></font></h2>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=2.1>2.1</A>)
|
|
<span lang="fa">آيا هيچ درايور </span>ODBC</font><span lang="fa"><font face="Tahoma">‌
|
|
براي </font></span><font face="Tahoma">PostgreSQL<span lang="fa">
|
|
وجود دارد؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">دو درايور </span>ODBC<span lang="fa">
|
|
بنامهاي </span>psqlODBC<span lang="fa">‌ و </span>OpenLink<span lang="fa"> براي
|
|
</span>PostgreSQL<span lang="fa">‌ وجود دارد.</span></font></p>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">براي گرفتن </span>psqlODBC<span lang="fa">
|
|
به سايت </span> <A
|
|
href="http://gborg.postgresql.org/project/psqlodbc/projdisplay.php">http://gborg.postgresql.org/project/psqlodbc/projdisplay.php</A><span lang="fa">
|
|
مراجعه كنيد.</span></font></p>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="en-us">OpenLlink</span> را از اين
|
|
سايت <A
|
|
href="http://www.openlinksw.com/">http://www.openlinksw.com</A> مي‌توانيد
|
|
بگيريد. اين درايور با نرم‌افزارهاي مختلف <span lang="en-us">ODBC</span> كار
|
|
مي‌كند بنابراين شما قادر خواهيد بود با استفاده از <span lang="en-us">OpenLink</span>
|
|
روي اكثر سكو‌هايي كه نرم‌افزار<span lang="en-us">ODBC</span>‌دارند بدون مشكل به
|
|
<span lang="en-us">PostgreSQL</span> نيز متصل شويد.</font></p>
|
|
<p dir="rtl"><font face="Tahoma">اين محصول به كساني كه احتياج به خدمات پشتيباني
|
|
تجاري دارند فروخته مي‌شود. ولي نسخه آزاد اين نرم‌افزار هميشه در درسترس مي‌باشد.
|
|
براي كسب اطلاعات بيشتر سوالات خود را به آدرس <A
|
|
href="mailto:postgres95@openlink.co.uk">postgres95@openlink.co.uk</A><span lang="en-us">
|
|
</span>‌ارسال نماييد.</font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=2.2>2.2</A>)
|
|
<span lang="fa">چه ابزارهايي براي استفاده از </span>PostgreSQL<span lang="fa">‌
|
|
با صفحات وب وجود دارد؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma">در سايت <A
|
|
href="http://www.webreview.com/">http://www.webreview.com</A> براي استفاده از
|
|
<span lang="en-us">PostgreSQL</span>‌ در صفحات وب راهنماييهاي خوبي وجود دارد.</font></p>
|
|
<P dir="rtl"><font face="Tahoma">براي تركيب و استفاده در صفحات وب زبان
|
|
<span lang="en-us">PHP</span>‌ يك واسط بسيار مناسب است. اطلاعات بيشتر راجع به
|
|
<span lang="en-us">PHP</span>‌در سايت <A
|
|
href="http://www.php.net/">http://www.php.net</A><span lang="en-us"> </span>وجود
|
|
دارد.</font></P>
|
|
<P dir="rtl"><font face="Tahoma">مثالهايي نيز با استفاده از <span lang="en-us">
|
|
Perl</span>‌ و<span lang="en-us"> CGI.pm</span> و <span lang="en-us">mod_perl</span>
|
|
وجود دارد.</font></P>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=2.3>2.3</A>)
|
|
<span lang="fa">آيا </span>PostgreSQL<span lang="fa">‌ يك واسط كاربري گرافيكي
|
|
دارد؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma">چند نرم افزار گرافيكي براي <span lang="en-us">
|
|
PostgreSQL</span>‌ وجود دارد كه شامل <span lang="en-us">pgAccess</span> درسايت <A
|
|
href="http://www.pgaccess.org/">http://www.pgaccess.org</A><span lang="en-us">
|
|
</span>و <span lang="en-us">pgAdmin III</span> در سايت <A
|
|
href="http://www.pgadmin.org/">http://www.pgadmin.org</A><span lang="en-us">
|
|
</span>و <span lang="en-us">RHDB Admin</span> در سايت <A
|
|
href="http://sources.redhat.com/rhdb/">http://sources.redhat.com/rhdb</A><span lang="en-us">
|
|
</span>و <span lang="en-us">Rekall</span> در سايت <A href="http://www.thekompany.com/products/rekall/">
|
|
http://www.thekompany.com/products/rekall<span lang="en-us"> </span></A> مي‌باشد.
|
|
همچنين يك <span lang="en-us">phpPgAdmin</span> هم در سايت <A href="http://phppgadmin.sourceforge.net/">
|
|
http://phppgadmin.sourceforge.net</A><span lang="en-us"> </span>وجود دارد كه يك
|
|
واسط وبي براي مديريت <span lang="en-us">PostgreSQL</span> مي‌باشد.</font></p>
|
|
<P dir="rtl"><font face="Tahoma">براي ديدن اطلاعات بيشتر راجع به نرم‌افزارهاي
|
|
گرافيكي براي <span lang="en-us">PostgreSQL</span> به آدرس <A
|
|
href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</A><span lang="en-us">
|
|
</span>مراجعه كنيد.</font></P>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=2.4>2.4</A>)
|
|
<span lang="fa">با چه زبانهاي برنامه‌نويسي مي‌توان با </span>PostgreSQL<span lang="fa">‌
|
|
ارتباط برقرار كرد؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">بيشتر زبانهاي برنامه‌نويسي
|
|
مي‌توانند با </span>PostgreSQL<span lang="fa">‌ ارتباط برقرار كنند. به همراه
|
|
سورس </span>PostgreSQL<span lang="fa"> تعدادي از واسطهاي مورد نياز براي ارتباط
|
|
با پايگاه داده از طريق زبانهاي مختلف آمده است كه در زير ليست آنها را مشاهده
|
|
مي‌كنيد.</span></font></p>
|
|
<ul dir="rtl">
|
|
<li dir="ltr">
|
|
<p dir="ltr" align="left"><font face="Tahoma">C (libpq) </font></li>
|
|
<li dir="ltr">
|
|
<p dir="ltr" align="left"><font face="Tahoma">Embedded C (ecpg) </font>
|
|
</li>
|
|
<li dir="ltr">
|
|
<p dir="ltr" align="left"><font face="Tahoma">Java (jdbc) </font></li>
|
|
<li dir="ltr">
|
|
<p dir="ltr" align="left"><font face="Tahoma">Python (PyGreSQL) </font>
|
|
</li>
|
|
<li dir="ltr">
|
|
<p dir="ltr" align="left"><font face="Tahoma">TCL (libpgtcl) </font></li>
|
|
</ul>
|
|
<p dir="rtl" align="right"><span lang="fa"><font face="Tahoma">واسطهاي ديگر در
|
|
سايت </font></span><font face="Tahoma"> <A
|
|
href="http://gborg.postgresql.org/">http://gborg.postgresql.org</A>
|
|
<span lang="fa">در قسمت </span><i>Drivers/Interfaces</i><span lang="fa"> وجود
|
|
دارد.</span></font></p>
|
|
<HR dir="rtl">
|
|
|
|
<h2 align="center" dir="rtl"><span lang="fa"><font face="Tahoma">سوالات مديريتي</font></span></h2>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=3.1>3.1</A>)
|
|
<span lang="fa">چگونه مي‌توانم </span>PostgreSQL<span lang="fa">‌ را در شاخه‌اي
|
|
غير از </span>/usr/local/pgsql/<span lang="fa"> نصب كنم؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma">موقع اجراي دستور <i><span lang="en-us">
|
|
configure</span> </i>از گزينه <span lang="en-us">prefix--</span> استفاده كنيد.</font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=3.2>3.2</A>)
|
|
<span lang="fa">چرا موقعي كه من برنامه </span>postmaster<span lang="fa">‌ را
|
|
اجرا مي كنم پيام </span>Bad system call<span lang="fa">‌ و يا </span>core dump
|
|
<span lang="fa">‌مي‌گيرم؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma">به دلايل مختلف ممكن است اين اتفاق بيفتد. اما در
|
|
قدم اول شما مطمئن شويد كه كه امكانات اضافه <span lang="en-us">System V</span>‌
|
|
در كرنل شما نصب شده باشد. <span lang="en-us">PostgreSQL</span> براي اجرا شدن
|
|
نياز به استفاده از امكانات حافظه مشترك و سمافورها دارد.</font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=3.3>3.3</A>)
|
|
<span lang="fa">چرا موقعي كه من سعي مي‌كنم برنامه </span>postmaster<span lang="fa">‌
|
|
را اجرا كنم خطاي</span> <I>IpcMemoryCreate</I> <span lang="fa">مي‌گيرم؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma">احتمالاً‌ قسمت ايجاد حافظه مشترك در كرنل به
|
|
درستي تنظيم نشده است و يا اينكه بايد فضاي حافظه اشتراكي در كرنل را زياد كرد.
|
|
ميزان دقيق حافظه مشترك مورد نياز بسته به معماري و نحوه استفاده از بافرها توسط
|
|
برنامه <span lang="en-us"><i>postmaster </i></span>دارد. براي بيشتر سيستم‌ها كه
|
|
با تنظيمات پيش‌فرض كار مي‌كنند مقدار اين حافظه حدود <span lang="en-us">1</span>
|
|
مگابايت است. براي ديدن اطلاعات بيشتر راجع به حافظه مشترك و سمافور به <A
|
|
href="http://www.postgresql.org/docs/view.php?version=current&idoc=1&file=kernel-resources.html">PostgreSQL
|
|
Administrator's Guide</A><span lang="en-us"> </span>مراجعه كنيد.</font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=3.4>3.4</A>) <span lang="fa">چرا موقعي كه من سعي مي‌كنم برنامه </span>postmaster<span lang="fa">‌
|
|
را اجرا كنم خطاي</span> <I><span lang="fa"> </span>IpcSemaphoreCreate<span lang="fa">
|
|
</span></I><span lang="fa">مي‌گيرم؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma">اگر پيغام خطا<span lang="en-us"> </span><i>
|
|
(‌pcSemaphoreCreate: semget failed (No space left on devi<span lang="en-us">ce
|
|
</span> </i>باشد به اين معني است كه تعداد سمافورهاي تنظيم شده در كرنل كافي
|
|
نيست. <span lang="en-us">PostgreSQL</span>‌ براي هر فرايندي كه در
|
|
<span lang="en-us">backend</span> اجرا مي‌شود به يك سمافور نياز دارد. يك راه حل
|
|
موقت براي اين مسئله آن است كه <i><span lang="en-us">postmaster</span> </i>را با
|
|
اعمال محدوديت روي تعداد فرايندهايي كه مي‌تواند ايجاد كند اجرا كنيم. براي اينكار
|
|
از گزينه <span lang="en-us">N-</span> و يك عدد كمتر از 32 استفاده كنيد. راه حل
|
|
دائمي اين مشكل آن است كه پارامترهاي <span lang="en-us">SEMMNS, SEMMNI</span>
|
|
كرنل را افزايش دهيم.</font></p>
|
|
<P dir="rtl"><font face="Tahoma">در زمان دسترسي خيلي زياد به پايگاه داده، ‌
|
|
سمافورهاي نامعتبر مي‌توانند باعث <span lang="en-us">crash</span>‌ كردن سيستم
|
|
شوند.</font></P>
|
|
<P dir="rtl"><font face="Tahoma">اگر پيغام خطا چيز ديگري باشد احتمالاً به دليل
|
|
آن است كه كرنل از سمافورها پشتيباني نمي‌كند. براي ديدن اطلاعات بيشتر راهنماي
|
|
مديريتي <span lang="en-us">PostgreSQL</span> را مطالعه كنيد.</font></P>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=3.5>3.5</A>)
|
|
<span lang="fa">چگونه مي‌توانم اتصالات ساير ماشينها را كنترل كنم؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma">به صورت پيش فرض فقط از ماشيني كه
|
|
<span lang="en-us">PostgreSQL </span>روي آن در حال اجراست مي‌توان با استفاده از
|
|
سوكت‌هاي يونيكسي به آن متصل شد. ساير ماشين‌ها قادر نيستند به <span lang="en-us">
|
|
PostgreSQL</span> متصل شوند مگر آنكه گزينه <span lang="en-us">tcp_sockets</span>
|
|
در فايل <span lang="en-us">postgresql.conf</span> فعال شده و همچنين با اصلاح
|
|
فايل <span lang="en-us">PGDATA/ph_hba.conf</span> هويت‌شناسي مبتني بر ميزبان نيز
|
|
فعال شود. با اين كار مي‌توان اتصالات <span lang="en-us">TCP/IP</span> به
|
|
<span lang="en-us">PostgreSQL</span>‌ ايجاد كرد.</font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=3.6>3.6</A>)
|
|
<span lang="fa">براي كارايي بالاتر و بهتر پايگاه داده من چه تنظيماتي را بايد
|
|
انجام دهم؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma">به طور حتم استفاده از انديس‌ها باعث بالا رفتن
|
|
سرعت پاسخ‌گويي به درخواست‌ها خواهد شد. دستور <span lang="en-us">EXPLAIN ANALYZE</span>
|
|
به شما امكان ديدن نحوه پردازش يك دستور توسط <span lang="en-us">PostgreSQL</span>
|
|
را مي‌دهد.</font></p>
|
|
<p dir="rtl"><font face="Tahoma">اگر شما تعداد زيادي<span lang="en-us"> INSERT</span>‌
|
|
داريد سعي كنيد آنها را با قرار دادن در يك فايل با دستور <span lang="en-us">COPY</span>‌
|
|
اجرا كنيد. اين دستور به مراتب از <span lang="en-us">INSERT</span> سريعتر است.
|
|
حتي‌الامكان سعي كنيد از تراكنشها استفاده نكنيد. تراكنشها مجموعه دستوراتي هستند
|
|
كه بيند <span lang="en-us">BEGIN</span> و ‍<span lang="en-us">COMMIT</span>
|
|
مي‌آيند. اگر يك دستور به صورت عادي اجرا شود <span lang="en-us">PostgreSQL</span>
|
|
خود آن دستور را به صورت يك تراكنش مستقل نگاه كرده و اجرا مي‌كند. موقعی كه
|
|
تغييرات زيادي در پايگاه داده انجام مي‌شود انديسهاي قبلي را حذف و مجدداً‌ ايجاد
|
|
كنيد.</font></p>
|
|
<p dir="rtl"><font face="Tahoma">استفاده از گزينه <span lang="en-us">o -F-</span>
|
|
در فرمان <i><span lang="en-us">postmaster</span></i> باعث غير فعال كردن
|
|
<span lang="en-us">()fsync</span> مي‌شود. اين دستور بعد از هر تراكنش اطلاعات را
|
|
روي هاردديسك منتقل مي‌كند.</font></p>
|
|
<p dir="rtl"><font face="Tahoma">براي افزايش تعداد بافرهاي حافظه اشتراكي از
|
|
گزينه <span lang="en-us">B-</span> به همراه فرمان <i><span lang="en-us">
|
|
postmaster</span></i> استفاده كنيد. توجه كنيد كه اگر اين عدد خيلي بزرگ باشد ممكن
|
|
است <i><span lang="en-us">postmaster</span></i> اصلاً‌ اجرا نشود. هر بافر 8 كيلو
|
|
بايت حافظه نياز دارد و تعداد بافرها به طور پيش فرض 64 است.</font></p>
|
|
<p dir="rtl"><font face="Tahoma">همچنين مي‌توان با گزينه <span lang="en-us">S-</span>
|
|
ميزان حافظه‌اي كه براي مرتب‌سازي‌هاي موقت توسط <span lang="en-us">PostgreSQL</span>
|
|
استفاده مي‌شود را افزايش داد. مقدار پيش فرض 512 كيلو بايت است.</font></p>
|
|
<p dir="rtl"><font face="Tahoma">استفاده از دستور <span lang="en-us">CLUSTER</span>
|
|
نيز براي بالا بردن كارايي موثر ا ست. دستور راهنماي <span lang="en-us">CLUSTER</span>
|
|
اطلاعات بيشتري در اين زمينه به شما مي‌دهد.</font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=3.7>3.7</A>)
|
|
<span lang="fa">چه امكاناتي براي پيدا كردن اشكال‌ وجود دارد؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgerSQL</span>‌ امكانات
|
|
مختلفي براي گزارش دادن وضعيت خود دارد كه براي اشكال زدايي مي‌توان از آنها
|
|
استفاده كرد.</font></p>
|
|
<P dir="rtl"><font face="Tahoma">با استفاده از گزينه <span lang="en-us">enable-assert--</span>
|
|
تعداد زيادي <span lang="en-us">()assert</span> براي مونيتور كردن و توقف برنامه
|
|
در صورت بروز خطاهاي ناخواسته فعال مي‌شود.</font></P>
|
|
<P dir="rtl"><font face="Tahoma">هم <i><span lang="en-us">Postmaster</span></i>
|
|
و هم <i><span lang="en-us">postgres</span></i> گزينه‌هاي زيادي براي اشكال زدايي
|
|
دارند. موقعي كه <i><span lang="en-us">postmaster</span></i> را اجرا مي‌كنيد
|
|
خروجي استاندارد و خطا را سمت فايل <span lang="en-us">log</span> ارسال كنيد.</font></P>
|
|
<div dir="ltr">
|
|
<PRE><font face="Tahoma"> cd /usr/local/pgsql
|
|
./bin/postmaster >server.log 2>&1 &
|
|
</font></PRE>
|
|
</div>
|
|
<P dir="rtl"><font face="Tahoma">اين كار يك فايل<span lang="en-us">
|
|
log</span>
|
|
در بالاترين شاخه <span lang="en-us">PostgreSQL</span>‌ ايجاد مي‌كند. اين فايل
|
|
حاوي اطلاعات مفيدي در مورد مسائل و خطاهايي است كه براي سرور اتفاق افتاده است.
|
|
براي ديدن جزئيات بيشتر مي‌توان از <span lang="en-us">d-</span> به همراه
|
|
فرمان <i><span lang="en-us">postmaster</span>‌</i> استفاده كرد. گزينه
|
|
<span lang="en-us">d-</span> همچنين يك عدد مي‌گيرد كه نشان دهنده سطح جزئياتي است
|
|
كه در <span lang="en-us">Log</span>‌فايل نوشته مي‌شود. با بالابردن اين عدد حجم
|
|
اطلاعات توليد شده در <span lang="en-us">Log</span>فايل نيز افزايش مي‌يابد.</font></P>
|
|
<P dir="rtl"><font face="Tahoma">اگر <i><span lang="en-us">postmaster</span></i>
|
|
در حال اجرا نباشد، مي‌توانيم <span lang="en-us">postgres</span> را به طور مستقيم
|
|
از خط فرمان اجرا كرده و دستورات <span lang="en-us">SQL</span> را به آن
|
|
بدهيم. اين كار فقط براي اشكال‌يابي توصيه مي‌شود. توجه كنيد كه در اين حالت يك
|
|
دستور با كاراكتر <span lang="en-us">newline</span> خاتمه پيدا مي‌كند و نه با
|
|
<span lang="en-us">;. </span>اگر <span lang="en-us">postmaster</span> را با
|
|
امكانات اشكال‌يابي كامپيل كرده باشيد مي‌توانيد با استفاده از يك برنامه اشكال‌ياب
|
|
اجراي برنامه را مونيتور كنيد. </font></P>
|
|
<P dir="rtl"><font face="Tahoma">اگر <i><span lang="en-us">postmaster</span></i>
|
|
در حال اجرا باشد با دستور <span lang="en-us">psql</span> مي‌توان به
|
|
<span lang="en-us">postgres</span> متصل شد. با پيدا كردن <span lang="en-us">PID</span>
|
|
فرايند <span lang="en-us">postgres</span> كه <span lang="en-us">psql</span> به
|
|
آن متصل شده است مي‌توان آن را مونيتور كرد. براي اينكار بايد يك برنامه اشكال‌ياب
|
|
را به آن <span lang="en-us">pid</span> متصل كرد. اگر بخواهيم بالا آمدن
|
|
<span lang="en-us">postgres</span> را مونيتور كنيم كافي است<span lang="en-us">
|
|
"PGOPTIONS="-W</span> <span lang="en-us">n</span> و <span lang="en-us">psql</span>
|
|
را اجرا كنيم. اين كار باعث مي‌شود كه <span lang="en-us">postgres</span> با
|
|
<span lang="en-us">n</span> ثانيه تاخير اجرا شود و در اين فاصله شما مي‌توانيد
|
|
برنامه اشكال‌ياب را به آن متصل كرده و با قرار دادن يك نقطه توقف روند اجراي
|
|
آن را مونيتور كنيد.</font></P>
|
|
<P dir="rtl"><font face="Tahoma"><i><span lang="en-us">postgres</span></i>
|
|
گزينه‌هاي <span lang="en-us">s-</span>‌ و <span lang="en-us">A-</span> و
|
|
<span lang="en-us">t-</span>‌ دارد كه براي پيدا كردن اشكالات بسيار مناسب هستند.</font></P>
|
|
<p dir="rtl"><font face="Tahoma">شما مي‌توانيد <span lang="en-us">postgreSQL</span>
|
|
را با امكانات <span lang="en-us">profiling</span> كامپيل كنيد. اين كار باعث
|
|
مي‌شود كه زمان اجراي دقيق هر تابع در برنامه مشخص شود. خروجي‌هاي توليد شده در اين
|
|
حالت در فايل <span lang="en-us">DLINUX_PROFILE.</span> ريخته مي‌شود.</font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=3.8>3.8</A>)
|
|
<span lang="fa">چرا موقعي كه من مي‌خواهم به پايگاه داده وصل شوم پيام</span> <I>"Sorry, too many clients"
|
|
<span lang="fa">‌</span></I><span lang="fa">مي‌گيرم؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma">شما بايد حداكثر تعداد فرايندهاي همزمان <i>
|
|
<span lang="en-us">postmaster</span></i> را افزايش دهيد. مقدار پيش فرض 32 است.
|
|
براي افزايش آن مي‌توان از گزينه <span lang="en-us">N-</span> استفاده كرد و يا
|
|
فايل <i><span lang="en-us">postgresql.conf</span></i> را اصلاح نمود</font></p>
|
|
<p dir="rtl"><font face="Tahoma">توجه كنيد كه اگر <span lang="en-us">N-</span>
|
|
مقداري بيشتر از 32 داشته باشد بايد مقدار <span lang="en-us">B-</span> را نيز
|
|
افزايش دهيم. اين مقدار بايد حداقل دو برابر مقدار <span lang="en-us">N-</span>‌
|
|
باشد. براي اعداد خيلي بالا بايد بعضي از پارامترهاي كرنل را نيز اصلاح كرد.
|
|
پارامترهايي نظير حداكثر اندازه حافظه اشتراكي <span lang="en-us">SHMMAX</span> ،
|
|
حداكثر تعداد سمافورها<span lang="en-us"> SEMMNI</span>‌ و <span lang="en-us">
|
|
SEMMNS </span>، حداكثر تعداد فرايندها <span lang="en-us">NPROC</span>، حداكثر
|
|
فرايندهاي يك كاربر <span lang="en-us">MAXUPRC</span> و حداكثر فايلهاي باز
|
|
<span lang="en-us">NFILE</span> و <span lang="en-us">NINODE. </span>يكي از
|
|
دلايلي كه تعداد اتصالات همزمان <span lang="en-us">postgreSQL</span> محدود است آن
|
|
است كه نيازهاي <span lang="en-us">PostgreSQL</span> بيش از منابع موجود سيستم
|
|
نباشد.</font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=3.9>3.9</A>) <span lang="fa">
|
|
در شاخه </span> <I>pgsql_tmp</I> <span lang="fa"> چه چيزي قرار دارد؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma">دراين شاخه فايلهاي موقتي قرار دارد كه با اجراي
|
|
درخواستها به وجود آمده است. به عنوان مثال اگر براي اجراي دستور
|
|
<span lang="en-us">order by</span> نياز به انجام مرتب سازي باشد و در صورتي كه
|
|
حافظه مشخص شده با گزينه <span lang="en-us">S-</span> براي اينكار كافي نباشد
|
|
سيستم يك فايل موقت در اين شاخه ايجاد مي‌كند تا عمل مرتب سازي را انجام دهد.</font></p>
|
|
<P dir="rtl"><font face="Tahoma">فايلهاي موقت معمولاً به صورت اتوماتيك پاك
|
|
مي‌شود اما اگر <span lang="en-us">postgreSQL</span> در حين مرتب سازي
|
|
<span lang="en-us">crash</span>‌ كند آن فايلها باقي مي‌مانند. با
|
|
<span lang="en-us">stop</span> و <span lang="en-us">start</span> كردن برنامه <i>
|
|
<span lang="en-us">postmaster</span></i> اين فايلها پاك مي‌شوند.</font></P>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=3.10>3.10</A>)
|
|
<span lang="fa">چرا براي به روز كردن نسخه پايگاه داده من بايد كل داده ها را
|
|
</span>dump<span lang="fa">‌ و مجدداً </span>restore<span lang="fa"> كنم؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma">تيم برنامه نويس <span lang="en-us">postgreSQL</span>
|
|
در نسخه‌هاي ارائه شده كه فقط <span lang="en-us">minor</span> آنها متفاوت است فقط
|
|
تغييرات كوچكي اعمال مي‌كنند؛ بنابراين براي به روز كردن از نسخه
|
|
<span lang="en-us">7.2</span>‌به 7.2.1<span lang="en-us"> </span>نيازي به
|
|
<span lang="en-us">dump</span> و <span lang="en-us">restore</span> نيست. اما در
|
|
نسخه‌هايي كه <span lang="en-us">major</span> آنها تغيير مي‌كند غالباً ساختار
|
|
داخلي جداول و فايلهاي داده تغيير مي‌كند. اين تغييرات معمولاً‌ پيچيده هستند. براي
|
|
انتقال داده‌هاي موجود در پايگاه داده در اين حالت بايد ‌از <span lang="en-us">
|
|
dump</span> و <span lang="en-us">restore</span> استفاده كرد.</font></p>
|
|
<P dir="rtl"><font face="Tahoma">در نسخه‌هايي كه ساختار روي ديسك تغييري نمي‌كند
|
|
مي توان از برنامه <span lang="en-us">pg_upgrade</span> براي به روز كردن پايگاه
|
|
داده استفاده كرد بدون اينكه نيازي به استفاده از <span lang="en-us">dump</span> و
|
|
<span lang="en-us">restore </span> باشد. در يادداشتي كه به همراه هر توزيع
|
|
مي‌آيد ذكر شده است كه آيا برنامه <span lang="en-us">pg_upgrade</span> براي اين
|
|
توزيع وجود دارد يا خير.</font></P>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=3.11>3.11</A>)
|
|
<span lang="fa">از چه سخت افزاري بايد استفاده كنم؟</span><BR>
|
|
</font></H4>
|
|
<P dir="rtl"><font face="Tahoma">چون اكثر سخت‌افزارهاي <span lang="en-us">PC
|
|
</span> سازگار هستند مردم فكر مي‌كنند كه كيفيت آنها نيز يكسان است. در
|
|
حاليكه اينطور نيست. استفاده از هاردهاي <span lang="en-us">SCSI</span> و
|
|
حافظه‌هاي <span lang="en-us">ECC</span> و مادربردهاي با كيفيت بالا نسبت به سخت
|
|
افزارهاي ارزانتر نتايج بهتري از نظر كارايي و پايداري سيستم بهمراه خواهد داشت.<span lang="en-us">
|
|
PostgreSQL</span> روي بيشتر سخت افزارها اجرا مي‌شود اما اگر كارايي و اطمينان
|
|
فاكتورهاي مهمي هستند بايد سخت افزار مناسب استفاده شود. در گروههاي پستي در مورد
|
|
سخت افزار مناسب و انتخاب آن بحث شده است. </font></P>
|
|
<HR dir="rtl">
|
|
|
|
<H2 align=center dir="rtl"><span lang="fa"><font face="Tahoma">سوالات عملياتي</font></span></H2>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.1>4.1</A>) تفاوت بين
|
|
<span lang="en-us">binary cursors</span> و <span lang="en-us">Normal cursors</span>
|
|
چيست؟</font></H4>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">راهنماي دستور </span>DECLARE<span lang="fa">‌
|
|
را مطالعه كنيد.</span></font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.2>4.2</A>)
|
|
<span lang="fa">من چگونه مي‌توانم فقط روي چند رديف اول
|
|
يا يك رديف تصادفي درخواست </span>SELECT<span lang="fa">‌
|
|
بزنم؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">راهنماي دستور </span>FETCH
|
|
<span lang="fa"> يا </span>SELECT...LIMIT<span lang="fa"> را ببينيد.</span></font></p>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">در واقع كل درخواست بايد بررسي و
|
|
ارزيابي شود حتي اگر شما فقط چند رديف اول را بخواهيد. براي مثال درخواست </span>
|
|
ORDER BY<span lang="fa"> را در نظر بگيريد. اگر انديس يا نمايه‌اي براي </span>ORDER
|
|
BY<span lang="fa"> وجود داشته باشد،‌</span>postgreSQL<span lang="fa">‌ ممكن است
|
|
بتواند فقط چند سطر اول درخواستي را ارزيابي كند و يا اينكه كل درخواست پردازش شود
|
|
تا تعداد رديف‌هاي درخواستي توليد شود.</span></font></P>
|
|
<P dir="rtl"><span lang="fa"><font face="Tahoma">براي انتخاب يك سطر تصادفي به
|
|
روش زير عمل مي‌كنيم:</font></span><div dir="ltr">
|
|
<PRE><font face="Tahoma"> SELECT col
|
|
FROM tab
|
|
ORDER BY random()
|
|
LIMIT 1;
|
|
</font></PRE>
|
|
</div>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.3>4.3</A>)
|
|
<span lang="fa">من چگونه مي‌توانم ليستي از جداول يا ساير چيزهايي كه در </span>
|
|
psql<span lang="fa">‌ وجود دارد را ببينم؟</span></font></H4>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">براي ديدن ليست جداول دستور
|
|
</span>dt\<span lang="fa"> را در برنامه </span><i>psql</i><span lang="fa"><i>‌</i>
|
|
استفاده كنيد. براي ديدن ليست كامل فرمانها </span>?\<span lang="fa"> را اجرا
|
|
كنيد. راه ديگر خواندن متن برنامه </span>psql<span lang="fa">‌ است كه در شاخه
|
|
</span> <I>pgsql/src/bin/psql/describe.c <span lang="fa">‌</span></I><span lang="fa">قرار
|
|
دارد.<I> </I>اين فايل حاوي فرامين </span>SQL<span lang="fa">يي است كه خروجي را
|
|
براي دستوراتي كه با </span>\<span lang="fa">‌در </span>psql<span lang="fa">
|
|
شروع مي‌شوند توليد مي‌كنند. راه ديگر اجراي </span>psql<span lang="fa"> با گزينه
|
|
</span>E-<span lang="fa">‌است. اينكار باعث مي‌شود كه </span>psql<span lang="fa">
|
|
قبل از اجرا هر دستور </span>SQL<span lang="fa">‌متناظر آن را نشان دهد. </span>
|
|
PostgreSQL<span lang="fa">‌همچنين يك برنامه </span>SQLi<span lang="fa"> دارد كه
|
|
مي‌توان با استفاده از آن اطلاعات داخلي پايگاه داده را استخراج كرد.</span></font></P>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.4>4.4</A>)
|
|
<span lang="fa">چگونه يك ستون جدول را حذف مي‌كنيد؟ چگونه نوع داده آن را عوض
|
|
كنيم؟</span></font></H4>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">حذف يك ستون در توزيع </span>7.3
|
|
<span lang="fa">با استفاده از دستور </span>ALTER TABLE DROP COLUMN<span lang="fa">
|
|
اضافه شده است. در نسخه‌هاي قبلي به روش زير عمل كنيد:</span></font></P>
|
|
<div dir="ltr">
|
|
<PRE><font face="Tahoma"> BEGIN;
|
|
LOCK TABLE old_table;
|
|
SELECT ... -- <span lang="fa">تمام ستونها غير از ستوني كه مي‌خواهيد آن را حذف كنيد را در اينجا بياوريد</span>
|
|
INTO TABLE new_table
|
|
FROM old_table;
|
|
DROP TABLE old_table;
|
|
ALTER TABLE new_table RENAME TO old_table;
|
|
COMMIT;
|
|
</font></PRE>
|
|
</div>
|
|
<P dir="rtl"><span lang="fa"><font face="Tahoma">براي عوض كردن نوع داده يك ستون
|
|
به روش زير عمل كنيد:</font></span></P>
|
|
<div dir="ltr">
|
|
<PRE><font face="Tahoma"> BEGIN;
|
|
ALTER TABLE tab ADD COLUMN new_col <I>new_data_type</I>;
|
|
UPDATE tab SET new_col = CAST(old_col AS <I>new_data_type</I>);
|
|
ALTER TABLE tab DROP COLUMN old_col;
|
|
COMMIT;
|
|
</font></PRE>
|
|
</div>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.5>4.5</A>)
|
|
<span lang="fa">حداكثر اندازه يك رديف،‌ جدول و خود پايگاه داده چقدر است؟</span></font></H4>
|
|
<p dir="rtl"><span lang="fa"><font face="Tahoma">محدوديتها عبارتند از:</font></span></p>
|
|
<div dir="rtl">
|
|
<PRE><font face="Tahoma"> <span lang="fa">حداكثر اندازه پايگاه داده </span> <span lang="fa">نامحدود (تا 32 ترابايت وجود دارد)</span>
|
|
<span lang="fa">حداكثر اندازه يك جدول</span> <span lang="fa">32 ترابايت</span>
|
|
<span lang="fa">حداكثر ا ندازه يك رديف</span> <span lang="fa">1.6 ترابايت</span>
|
|
<span lang="fa">حداكثر اندازه يك فيلد</span> <span lang="fa">1 گيگا بايت</span>
|
|
<span lang="fa">حداكثر اندازه رديفهاي يك جدول</span> <span lang="fa"> نا محدود</span>
|
|
<span lang="fa">حداكثر ستونهاي يك جدول</span> <span lang="fa"> بسته به نوع جدول بين 250 تا 6000 </span>
|
|
<span lang="fa">حداكثر انديسهاي يك جدول نا محدود</span>
|
|
</font></PRE></div>
|
|
<p dir="rtl"><span lang="fa"><font face="Tahoma">البته در حالت نامحدود نيز ما
|
|
محدود به حجم هاردديسك و فضاي حافظه خواهيم بود. در صورتي
|
|
که مقادير مشخص شده به عنوان
|
|
نامحدود به صورت غير معمولي بزرك شوند كارايي سيستم كاهش خواهد يافت.</font></span></p>
|
|
<P dir="rtl"><span lang="fa"><font face="Tahoma">براي ذخيره كردن جداول با اندازه
|
|
خيلي بزرگ نيازي نيست كه سيستم عامل امكان ايجاد فايلهاي بزرگ را داشته باشد. بلكه
|
|
جداول خيلي بزرگ به صورت فايلهايي به حجم يك گيگا بايت نگاهداري مي‌شوند.</font></span></P>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">اگر اندازه بلوكهاي داده را
|
|
برابر 32 كيلو بايت قرار دهيم حداكثر اندازه جدول و حداكثر تعداد ستونها 4 برابر
|
|
خواهد شد.</span></font></P>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.6>4.6</A>)
|
|
<span lang="fa">چقدر فضاي ديسك سخت براي ذخيره كردن داده‌‌هاي يك فايل متني مورد
|
|
نياز است؟</span></font></H4>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">يك پايگاه داده </span>
|
|
PostgreSQL<span lang="fa">‌ تا 5 برابر فضايي روي هاردديسك براي نگاهداري يك فايل
|
|
متني نياز دارد.</span></font></P>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">به عنوان مثال يك فايل با 100000
|
|
خط را در نظر بگيريد كه در هر خط يك عدد صحيح و يك توضيح متني آمده است. فرض كنيد
|
|
كه رشته متني به طور متوسط 20 بايت باشد. اندازه فايل برابر 2.8 مگا بايت خواهد بود
|
|
ولي </span>PostgreSQL<span lang="fa"> براي نگاهداري اين فايل به 6.4 مگا بايت
|
|
اطلاعات نياز خواهد داشت.</span></font></P>
|
|
<div dir="rtl">
|
|
<PRE><font face="Tahoma"> 32 bytes: <span lang="fa">اندازه سرايند هر خط به طور تقريبي</span>
|
|
24 bytes: <span lang="fa">يك عدد صحيح و يك رشته 24 بايتي</span>
|
|
+ 4 bytes: <span lang="fa">اشاره گر روي صفحه به يك چندتايي</span>
|
|
----------------------------------------
|
|
60 bytes <span lang="fa">در هر رديف</span>
|
|
|
|
<span lang="fa">اندازه صفحات داده در </span>PostgreSQL<span lang="fa"> برابر با 8 كيلو بايت است</span>
|
|
8192 <span lang="fa">تعداد بايت‌ها در هر صفحه</span>
|
|
------------------- = 136 <span lang="fa">تعداد رديف‌ها در يك صفحه پايگاه داده</span>
|
|
60 <span lang="fa"> تعداد بايت‌هاي هر رديف</span>
|
|
|
|
100000 <span lang="fa"> تعداد رديفها</span>
|
|
-------------------- = <span lang="fa">تعدادصفحات پايگاه داده</span>
|
|
128 <span lang="fa">تعداد رديفها در هر صفحه</span>
|
|
|
|
735 <span lang="fa">تعداد صفحات</span> * 8192 <span lang="fa">تعداد بايت‌هاي هر صفحه</span> = 6,021,120 <span lang="fa">مگا بايت</span>
|
|
</font></PRE>
|
|
</div>
|
|
<P dir="rtl"><span lang="fa"><font face="Tahoma">سربار انديسها يا نمايه‌ها از
|
|
اين مقدار كمتر است ولي چون شامل خود داده‌ها هم هست </font></span>
|
|
<font face="Tahoma">م<span lang="fa">مکن است اندازه آنها هم بزرگ شود</span>.</font></P>
|
|
<p dir="rtl"><font face="Tahoma">NULL<span lang="fa">ها به صورت </span>bitmap<span lang="fa">
|
|
ذخيره مي‌شوند و از اينرو فضاي بسيار كمي را اشغال مي‌كنند.</span></font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.7>4.7</A>)
|
|
<span lang="fa">چگونه مي‌توانم بفهمم كه چه كاربران،‌ پايگاه داده،‌ نمايه و
|
|
جداولي در سيستم تعريف شده است؟</span></font></H4>
|
|
<P dir="rtl"><font face="Tahoma"><i>psql<span lang="fa"> </span></i>
|
|
<span lang="fa">تعداد زيادي دستور دارد كه با </span>\<span lang="fa"> شروع
|
|
مي‌شوند و اين اطلاعات را در اختيار ما قرار مي‌دهند. براي ديدن آنها دستور </span>
|
|
?\ <span lang="fa"> را اجرا كنيد. همچنين جداول سيستمي كه نام آنها</span>
|
|
<span lang="fa">با
|
|
</span>pg<span lang="fa">_</span> <span lang="fa">‌شروع مي‌شود نيز اين اطلاعات
|
|
را در خود دارند. اجراي برنامه </span>psql<span lang="fa"> با گزينه </span>l-
|
|
<span lang="fa"> نيز باعث نشان دادن ليست تمام پايگاههاي داده مي‌شود.</span></font></P>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">همچنين فايل </span> <I>pgsql/src/tutorial/syscat.source<span lang="fa">
|
|
</span></I><span lang="fa">نيز فرمانهاي </span>SELECT<span lang="fa"> كه با
|
|
استفاده از آن مي‌توان اطلاعات پايگاه داده را استخراج كرد شرح داده است.</span></font></P>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.8>4.8</A>)
|
|
<span lang="fa">چرا درخواستهاي من كند اجرا مي‌شوند يا چرا از نمايه ها استفاده
|
|
نمي‌كنند؟</span></font></H4>
|
|
<p dir="rtl"><span lang="fa"><font face="Tahoma">به طور معمول </font></span>
|
|
<font face="Tahoma"><span lang="fa">براي درخواستها
|
|
از نمايه‌ها استفاده نمي‌شود.
|
|
تنها در صورتي از نمايه‌ها استفاده مي‌شود كه اندازه جدول از يك اندازه حداقل
|
|
بزرگتر باشد و درخواست هم فقط قسمتي از رديف‌هاي جدول را انتخاب كرده باشد. دليل
|
|
اين كار آن است كه دسترسي‌هاي تصادفي به هاردديسك كه به خاطر نمايه‌ها ايجاد مي‌شود
|
|
ممكن است از خواندن مستقيم جدول يا خواندن ترتيبي ركوردها كندتر باشد.</span></font></p>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">براي تعيين اينكه از نمايه
|
|
استفاده شود يا خير، </span>PostgreSQL<span lang="fa"> بايد اطلاعات آماري را در
|
|
مورد يك جدول بداند. اين اطلاعات توسط دستور </span>ANALYZE<span lang="fa"> و
|
|
</span>VACUUM ANALYZE<span lang="fa"> به دست مي‌آيد. با استفاده از اين اطلاعات،‌
|
|
بهينه ساز از تعداد رديف‌هاي يك جدول اطلاع پيدا مي‌كند و بهتر مي‌تواند تعيين كند
|
|
كه آيا از نمايه استفاده شود يا خير. اطلاعات آماري همچنين براي تعيين ترتيب الحاق
|
|
و روشهاي الحاق به صورت بهينه نيز كاربرد دارد. جمع آوري اطلاعات آماري بايد به صورت
|
|
دوره‌اي همزمان با تغيير داده‌هاي جدول انجام شود.</span></font></p>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">نمايه‌ها به طور معمول همراه با
|
|
دستور </span>ORDER BY<span lang="fa"> به كار برده نمي‌شوند. براي يك جدول بزرگ يك
|
|
پيمايش ترتيبي همراه با دستور مرتب سازي از به كار بردن نمايه‌ها سريعتر خواهد بود.</span></font></P>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">اما اگر همراه با </span>ORDER
|
|
BY<span lang="fa">‌ از </span>LIMIT<span lang="fa"> استفاده شود اغلب از نمايه‌ها
|
|
استفاده مي‌شود چون فقط قسمتي از جدول
|
|
برگردانده مي‌شود. در حقيقت هر چند</span>
|
|
<span lang="fa">توابع ()</span>MIN<span lang="fa">‌ و </span>()MAX
|
|
<span lang="fa">از نمايه‌ها استفاده نمي‌كنند ولي مي‌توانيم با استفاده از دستور
|
|
زير با استفاده از نمايه‌ها و دستور </span>ORDER BY<span lang="fa"> و </span>
|
|
LIMIT<span lang="fa">‌ ، آنها را به دست آوريم.</span></font></p>
|
|
<div dir="ltr">
|
|
<PRE><font face="Tahoma"> SELECT col
|
|
FROM tab
|
|
ORDER BY col [ DESC ]
|
|
LIMIT 1;
|
|
</font></PRE>
|
|
</div>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">اگر شما فكر مي‌كنيد كه بهينه
|
|
ساز سيستم در انتخاب پيمايش ترتيبي اشتباه كرده است با دستور </span>'</font><CODE><font face="Tahoma">SET enable_seqscan TO 'off'</font></CODE><font face="Tahoma"><span lang="fa">
|
|
مي‌توانيد ببينيد آيا استفاده از نمايه‌ها باعث افزايش سرعت درخواست‌ها خواهد شد
|
|
يا خير.</span></font></P>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">استفاده از نمايه‌ها هنگامي كه
|
|
از علائم ويژه نظير </span>LIKE<span lang="fa"> و </span>~<span lang="fa">
|
|
استفاده مي‌كنيد فقط در بعضي شرايط خاص كه در اينجا ذكر شده است ممكن است:</span></font></P>
|
|
<ul dir="rtl">
|
|
<li dir="rtl">
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">ابتداي رشته جستجو بايد به
|
|
طور صريح مشخص باشد براي مثال:</span></font></li>
|
|
</ul>
|
|
<p dir="rtl"><span dir="rtl"><font face="Tahoma"><span lang="fa">- دستورات
|
|
</span>LIKE<span lang="fa"> نبايد با علامت
|
|
</span>%<span lang="fa"> شروع
|
|
شوند</span></font></span></p>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">- الگوهاي منظمي كه با
|
|
</span>~<span lang="fa"> مي‌آيد حتماً بايد با علامت
|
|
</span>^<span lang="fa"> شروع
|
|
شود</span></font></p>
|
|
<ul dir="rtl">
|
|
<li dir="rtl">
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">رشته جستجو نبايد با يك
|
|
مجموعه از كاراكتر‌ها مثل </span>[a-e]<span lang="fa"> شروع شود</span></font></li>
|
|
<li dir="rtl">
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">جستجوهاي غيرحساس به متن مثل
|
|
</span>ILIKE<span lang="fa">‌ و </span>*~<span lang="fa"> از نمايه‌ها
|
|
استفاده نمي‌كنند. در عوض از توابع نمايه‌اي كه در قسمت </span>
|
|
<A
|
|
href="#4.12">4.12</A><span lang="fa">
|
|
توضيح داده شد استفاده مي‌كنند.</span></font></li>
|
|
<li dir="rtl">
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">مقدار پيش فرض </span>locale<span lang="fa">‌
|
|
بايد در </span>initdb<span lang="fa"> استفاده شود.</span></font></li>
|
|
</ul>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.9>4.9</A>)
|
|
<span lang="fa">چگونه مي‌توانم نحوه بررسي درخواست را توسط بهينه‌ساز درخواستها
|
|
مشاهده كنم؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">راهنماي دستور </span>EXPLAIN<span lang="fa">
|
|
را نگاه كنيد.</span></font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.10>4.10</A>)
|
|
<span lang="fa">نمايه </span>R-tree<span lang="fa">‌ چيست؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">از نمايه </span>R-Tree
|
|
<span lang="fa"> براي انديس كردن داده‌هاي فاصله‌اي استفاده مي‌شود. يك نمايه
|
|
</span>hash<span lang="fa"> نمي‌تواند جستجوهاي محدوده‌اي را انجام دهد. نمايه</span>
|
|
"B-tree"<span lang="fa"> نيز براي انجام جستجوي محدوده‌اي در يك جهت قابل استفاده
|
|
است. اما </span>R-Tree<span lang="fa"> مي‌تواند داده‌هاي چند بعدي را نيز
|
|
پشتيباني كند. براي مثال اگر از نمايه </span>R-tree<span lang="fa">‌ براي
|
|
گونه </span>Point<span lang="fa"> استفاده شود سرعت درخواست‌هايي نظير "</span>select
|
|
all points within a bounding rectangle<span lang="fa">" به مراتب افزايش مي‌يابد.</span></font></p>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">مقاله‌اي كه طراحي </span>R-tree<span lang="fa">
|
|
را توضيح داده است </span></font></P>
|
|
<P><font face="Tahoma">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.</font></P>
|
|
<P dir="rtl"><font face="Tahoma">R-tree<span lang="fa">‌ مي‌تواند چندضلعيها و
|
|
چند وجهي را پشتيباني كند. در تئوري، </span>R-tree<span lang="fa"> مي‌تواند تعداد بعدهاي بالاتري
|
|
را نيز پشتيباني كند. در عمل توسعه </span>R-tree<span lang="fa">‌
|
|
نياز به كار بيشتري دارد.</span></font></P>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.11>4.11</A>)
|
|
<span lang="fa">بهينه ساز تكويني درخواست چيست؟</span> (Genetic Query Optimizer)</font></H4>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">استفاده از </span>GEQO<span lang="fa">
|
|
سرعت بهينه سازي درخواست را هنگاميكه تعداد زيادي جدول را با استفاده از الگوريتم
|
|
ژنتيك الحاق مي‌كنيم افزايش مي‌دهد.</span></font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.12>4.12</A>)
|
|
<span lang="fa">چگونه از عبارات منظم براي جستجو استفاده كنم؟ چگونه جستجويي انجام
|
|
دهم كه حساس به متن نباشد؟ چگونه براي يك جستجوي غير حساس به متن از نمايه استفاده
|
|
كنم؟</span></font></H4>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">براي جستجوي عبارت منظم از عملگر
|
|
</span>~<span lang="fa">‌ استفاده مي‌كنيم. براي جستجوي غير حساس به متن از عملگر
|
|
</span>*~ <span lang="fa">و يا </span>ILIKE<span lang="fa">‌ استفاده مي‌كنيم.</span></font></P>
|
|
<p dir="rtl"><span lang="fa"><font face="Tahoma">روش ديگر انجام جستجوي غير حساس
|
|
به متن در زير نشان داده شده است.</font></span></p>
|
|
<PRE><font face="Tahoma"> SELECT *
|
|
FROM tab
|
|
WHERE lower(col) = 'abc';
|
|
</font></PRE>
|
|
<p dir="rtl"><span lang="fa"><font face="Tahoma">اين از نمايه‌هاي استاندارد
|
|
استفاده نمي‌كند. ولي شما مي توانيد با دستور زير يك نمايه ايجاد كنيد و از آن
|
|
استفاده كنيد.</font></span></p>
|
|
<PRE><font face="Tahoma"> CREATE INDEX tabindex ON tab (lower(col));
|
|
</font></PRE>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.13>4.13</A>) <span lang="fa">چگونه مي‌توانم در يك درخواست تشخيص دهم كه يك فيلد </span>NULL<span lang="fa">‌
|
|
است؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">با استفاده از توابع </span>IS
|
|
NULL<span lang="fa"> و </span>IS NOT NULL<span lang="fa"> مي‌توانيم </span>NULL<span lang="fa">
|
|
بودن يك فيلد را تست كنيم.</span></font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.14>4.14</A>)
|
|
<span lang="fa">تفاوت بين گونه‌هاي مختلف </span>character<span lang="fa"> چيست؟</span></font></H4>
|
|
<PRE><font face="Tahoma">Type Internal Name Notes
|
|
--------------------------------------------------
|
|
VARCHAR(n) varchar <span lang="fa">اندازه، حداكثر طول را نشان مي دهد بدون اضافه شدن كاراكتر اضافه</span>
|
|
CHAR(n) <span lang="fa"> </span> bpchar <span lang="fa">كاراكترهاي بلانك براي پر شدن طول مشخص شده استفاده مي‌شود</span>
|
|
TEXT <span lang="fa"> </span>text <span lang="fa"> </span>ح<span lang="fa">داكثر طول را مشخص نمي‌كند</span>
|
|
BYTEA <span lang="fa"> </span> bytea <span lang="fa">آرايه‌اي از بايت با طول متغير</span>
|
|
"char" <span lang="fa"> </span>char <span lang="fa">يك كاراكتر</span>
|
|
</font></PRE>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">نام داخلي گونه‌ها را در </span>
|
|
system catalogue <span lang="fa">‌و بعضي از پيغامهاي خطا مي‌توان ديد.</span></font></p>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">چهار گونه اول همگي از نوع
|
|
</span>varlena <span lang="fa">هستند (4 بايت اول روي ديسك طول را مشخص مي‌كند كه
|
|
به دنبال آن داده‌ها قرار دارند.)‌بنابراين فضاي واقعي استفاده شده روي ديسك از
|
|
اندازه تعريف شده بيشتر است. اما اين گونه‌ها را مي‌توان فشرده كرد كه اينكار باعث
|
|
مي‌شود فضاي كمتري روي ديسك اشغال كنند.</span></font></p>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">براي ذخيره رشته‌هاي با طول
|
|
متغير</span><font size="2">(</font><SMALL>VARCHAR(n<span lang="fa">‌
|
|
<font size="3">بهترين انتخاب است. در اين گونه حداكثر طول رشته محدود است بر خلاف
|
|
</font></span><font size="3">text<span lang="fa"> كه هيچ محدوديتي روي حداكثر
|
|
اندازه رشته نمي‌گذارد.(در اين گونه حداكثر طول يك رشته يك گيگا بايت خواهد بود)</span></font></SMALL></font></P>
|
|
<p dir="rtl"><span lang="fa"><font face="Tahoma">گونه <font size="2">(</font></font></span><font face="Tahoma">CHAR(n<span lang="fa">
|
|
<font size="3"> براي ذخيره داده‌هاي با طول يكسان است.يك
|
|
گونه‌</font>ي</span><font size="3"> </font>
|
|
<font size="2"><span lang="fa">(</span></font>CHAR(n <span lang="fa">
|
|
<font size="3">با كاراكترهاي بلانك (خالي) پر مي‌شود تا به طول مشخص شده برسد در
|
|
حاليكه گونه </font></span><font size="3">VARCHAR</font><font size="3"><span lang="fa">
|
|
كاراكترها را به همان صورت كه هستند ذخيره مي‌كند. گونه </span>BYTEA<span lang="fa">
|
|
براي ذخيره داده‌هاي باينري است به خصوص داده‌هاي باينري كه شامل بايت‌هاي </span>
|
|
NULL<span lang="fa"> هستند. از نظر كارايي تمام اين گونه‌ها يكسان هستند.</span></font></font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.15.1>4.15.1</A>)
|
|
<span lang="fa">چگونه مي‌توانم يك فيلد سريال يا افزايشي ايجاد كنم؟</span></font></H4>
|
|
<p dir="rtl"><font face="Tahoma">PostgreSQL<span lang="fa"> از داده‌هاي سريال
|
|
پشتيباني مي‌كند. براي ايجاد يك فيلد سريال (براي داشتن يك فيلد منحصر به فرد براي
|
|
هر رديف )به روش زير عمل كنيد:</span></font></p>
|
|
<PRE><font face="Tahoma"> CREATE TABLE person (
|
|
id SERIAL,
|
|
name TEXT
|
|
);
|
|
</font></PRE>
|
|
<p dir="rtl"><span lang="fa"><font face="Tahoma">دستور بالا به طور اتوماتيک به
|
|
دستور زير تبديل مي‌شود:</font></span></p>
|
|
<PRE><font face="Tahoma"> CREATE SEQUENCE person_id_seq;
|
|
CREATE TABLE person (
|
|
id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
|
|
name TEXT
|
|
);
|
|
</font></PRE>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">براي ديدن اطلاعات بيشتر به
|
|
راهنماي دستور </span> <I>create_sequence</I> <span lang="fa"> مراجعه كنيد.
|
|
همچنين مي‌توان از </span>OID<span lang="fa">‌هر رديف به عنوان يك مقدار منحصر به
|
|
فرد استفاده كرد. اما در اين حالت براي </span>dump<span lang="fa"> كردن و </span>
|
|
reload<span lang="fa">‌كردن پايگاه داده بايد دستور </span><i>pg_dumps</i><span lang="fa"><i>‌</i>
|
|
را با گزينه </span>o-<span lang="fa">‌ اجرا كنيد.</span></font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.15.2>4.15.2</A>) <span lang="fa">چگونه مي‌توانم مقدار يك درج سريالي را بدانم؟</span></font></H4>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">يك روش براي گرفتن مقدار بعدي يك
|
|
فيلد سريال استفاده از تابع </span><i>()nextval</i><span lang="fa"> است.</span>
|
|
<span lang="fa">در شبه كُدي كه در ادامه آمده است روش انجام اين كار نشان داده شده
|
|
است:</span></font></P>
|
|
<PRE><font face="Tahoma"> new_id = execute("SELECT nextval('person_id_seq')");
|
|
execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
|
|
</font></PRE>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">با اجراي دستور فوق مقدار جديد را
|
|
در متغير </span>new_id<span lang="fa"> نيز خواهيدداشت كه مي‌توانيد آن را در بقيه
|
|
درخواست‌ها نيز استفاده كنيد. توجه داشته باشيد كه نام </span>SEQUENCE<span lang="fa">يي
|
|
كه به طور اتوماتيك ايجاد شده است به صورت </span><i>table</i>_<I>serialcolumn</I>_<I>seq<span lang="fa">‌
|
|
</span></I><span lang="fa">خواهد بود</span>. <span lang="fa">كه در آن </span>
|
|
table<span lang="fa">‌ نام جدول و </span>serialcolumn<span lang="fa"> نام فيلد
|
|
سريال جدول مي‌باشد.</span></font></p>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">براي ديدن مقدار نسبت داده شده
|
|
به فيلد سريال نيز مي‌توان از تابع <i>()</i></span> <I>currval </I>
|
|
<span lang="fa">به صورت زير استفاده كرد. </span></font></P>
|
|
<PRE><font face="Tahoma"> execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
|
|
new_id = execute("SELECT currval('person_id_seq')");
|
|
</font></PRE>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">و سرانجام شما مي‌توانيد از
|
|
مقدار </span>OID<span lang="fa"> كه خروجي دستور </span>INSERT <span lang="fa"> است
|
|
براي ديدن مقدار پيش فرض استفاده كنيد. هر چند اين روش در همه پلتفرمها قابل
|
|
استفاده نيست و ضمن اينكه فيلد </span>oid<span lang="fa">‌ بعد از عدد 4 ميليارد
|
|
دوباره صفر مي‌شود. در زبان </span>perl<span lang="fa"> با استفاده از </span>DBI<span lang="fa">
|
|
و </span>DBD::Pg<span lang="fa"> مقدار </span>oid<span lang="fa">‌را مي‌توانيد
|
|
به اين شكل استخراج كنيد:</span> <span lang="fa">بعد از اجراي ()</span>st->execute<span lang="fa">$
|
|
مقدار </span>oid<span lang="fa">‌ در متغير </span> <I>sth->pg_oid_status<span lang="fa">$</span></I><span lang="fa">
|
|
ذخيره خواهد شد.</span></font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.15.3>4.15.3</A>) <span lang="fa">آیا
|
|
توابع ()</span>nextval<span lang="fa"> و ()</span>currval<span lang="fa"> منجر
|
|
به ایجاد شرایط </span>race<span lang="fa"> برای سایر کاربران می شوند؟</span></font></H4>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">خیر، استفاده از این توابع شرایط
|
|
</span>race<span lang="fa"> را به وجود نمی آورد.</span></font></P>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.15.4>4.15.4</A>)</font><font face="Tahoma"><span lang="fa">
|
|
چرا اعداد سریالی مربوط به تراکنشهای </span>abort<span lang="fa"> شده مجدداً
|
|
استفاده نمی شود؟ چرا بین اعداد سریالی یک فاصله خالی ایجاد می شود؟</span></font></H4>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">برای بالا بردن امکان اجرای
|
|
همزمان تراکنشها، اعداد سریالی به محض اجرای تراکنش به آنها تخصیص می یابد در این
|
|
حالت اگر بعضی از تراکنشها </span>abort<span lang="fa"> شوند بین اعداد سریالی
|
|
استفاده شده یک فاصله خالی به وجود می آید.</span></font></P>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.16>4.16</A>) OID<span lang="fa"> و </span>TID<span lang="fa"> چه هستند؟</span></font></H4>
|
|
<P dir="rtl"><font face="Tahoma">OID<span lang="fa"> راه حل </span>PostgreSQL<span lang="fa">
|
|
برای داشتن یک شناسه منحصر به فرد برای هر ردیف است. هر ردیف جدیدی که ایجاد می شود
|
|
یک </span>OID<span lang="fa"> منحصر به فرد به آن اختصاص می یابد. تمام </span>OID<span lang="fa">هایی
|
|
که در حین </span>initdb<span lang="fa"> ایجاد می شوند از 16384 کمتر هستند و
|
|
</span>OID<span lang="fa">هایی بعداً تولید می شود از این عدد بزرگتر خواهد بود.
|
|
نکته مهم آن است که </span>OID<span lang="fa">ها نه تنها در یک جدول شبیه نیستند
|
|
بلکه در کل پایگاه داده هیچ دو ردیفی دارای </span>OID<span lang="fa"> یکسان
|
|
نخواهد بود.</span></font></P>
|
|
<P dir="rtl"><font face="Tahoma">PostgreSQL<span lang="fa"> از </span>OID<span lang="fa">
|
|
در سیستم داخلی خود برای ایجاد ارتباط بین ردیفهای جداول مختلف استفاده می کند.
|
|
توصیه می شود که یک ستون از نوع </span>OID<span lang="fa"> برای ذخیره این فیلد در
|
|
جدول ایجاد کنید. ساختن یک نمایه برای این فیلد باعث دسترسی سریعتر به آن خواهد شد.</span></font></P>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">تمام پایگاههای داده در </span>
|
|
PostgreSQL<span lang="fa"> برای گرفتن </span>OID<span lang="fa"> جدید از یک
|
|
ناحیه مرکزی استفاده می کند. ولی اگر بخواهیم </span>OID<span lang="fa"> را به روش
|
|
دیگری بگیریم و یا اینکه در حین کپی کردن یک جدول بخواهیم </span>OID<span lang="fa">های
|
|
اصلی آن تغییر نکند به روش زیر می توانیم عمل کنیم:</span></font></P>
|
|
<P dir="rtl"> </P>
|
|
<div dir="ltr">
|
|
<PRE><font face="Tahoma"> 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;
|
|
</font></PRE>
|
|
</div>
|
|
<P dir="rtl"><font face="Tahoma">OID<span lang="fa"> یک عدد صحیح 4 بایتی است و
|
|
بنابراین حداکثر مقدار آن 4 میلیارد خواهد بود و بعد از آن مقدار آن سرریز خواهد
|
|
شد. البته تا کنون برای کسی این اتفاق نیفتاده است و تصمیم
|
|
گرداندگان </span>PostgreSQL<span lang="fa"> آن است که قبل از آنکه این اتفاق رخ
|
|
دهد این مشکل را برطرف کنند.</span></font></P>
|
|
<P dir="rtl"><font face="Tahoma">TID<span lang="fa">ها برای شناسایی محل فیزیکی
|
|
یک ردیف بر اساس بلوک و آفست می باشد. </span>TID<span lang="fa">ها بعد از تغییر
|
|
پیدا کردن یک ردیف و یا بازخوانی آن عوض می شوند. </span>TID<span lang="fa">ها
|
|
توسط نمایه ها استفاده می شوند.</span></font></P>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.17>4.17</A>)
|
|
<span lang="fa">معني بعضي از ترمها و كلماتي كه در </span>PostgreSQL<span lang="fa">‌
|
|
استفاده مي‌شود چيست؟</span></font></H4>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">لیست برخی از ترمها و کلماتی که
|
|
استفاده می شوند:</span></font></P>
|
|
<UL>
|
|
<LI dir="ltr">
|
|
<p dir="ltr"><font face="Tahoma">table, relation, class <span lang="fa">
|
|
:کلاس، رابطه، جدول</span></font><LI dir="ltr">
|
|
<p dir="ltr"><font face="Tahoma">row, record, tuple <span lang="fa">چندتایی،
|
|
رکورد، ردیف</span></font><LI dir="ltr">
|
|
<p dir="ltr"><font face="Tahoma">column, field, attribute <span lang="fa">
|
|
صفت، فیلد، ستون</span></font><LI dir="ltr">
|
|
<p dir="ltr"><font face="Tahoma">retrieve, select <span lang="fa">انتخاب،
|
|
خواندن</span></font><LI dir="ltr">
|
|
<p dir="ltr"><font face="Tahoma">replace, update<span lang="fa">به روز کردن،
|
|
جایگزینی</span>
|
|
</font>
|
|
<LI dir="ltr">
|
|
<p dir="ltr"><font face="Tahoma">append, insert <span lang="fa">درج، اضافه
|
|
کردن</span></font><LI dir="ltr">
|
|
<p dir="ltr"><font face="Tahoma"><SMALL>OID</SMALL>, serial value
|
|
<span lang="fa">مقدار سریال</span></font><LI dir="ltr">
|
|
<p dir="ltr"><font face="Tahoma">portal, cursor
|
|
</font>
|
|
<LI dir="ltr">
|
|
<p dir="ltr"><font face="Tahoma">range variable, table name, table alias
|
|
</font> </LI></UL>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">یک لیست عمومی از ترمهای مورد
|
|
استفاده در پایگاه داده در آدرس </span> <A
|
|
href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html">
|
|
http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.htm</A>
|
|
<span lang="fa">وجود دارد.</span></font></P>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.18>4.18</A>) <span lang="fa">
|
|
چرا من خطاي </span><i>"ERROR: Memory exhausted in AllocSetAlloc"</i><span lang="fa">
|
|
مي‌گيرم؟</span></font></H4>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">این خطا احتمالاً یا به خاطر
|
|
تمام شدن حافظه مجازی سیستم شماست و یا اینکه کرنل برای برنامه ها در مورد میزان
|
|
استفاده از حافظه مجازی محدودیت اعمال کرده است. قبل از اجرای برنامه اصلی یکی از
|
|
دستورات زیر را اجرا کنید.</span></font></P>
|
|
<div dir="ltr">
|
|
<PRE><font face="Tahoma"> ulimit -d 262144
|
|
limit datasize 256m
|
|
</font></PRE></div>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">بسته به نوع شل یکی از این
|
|
دستورات ممکن است با موفقیت اجرا شود. با اجرای آن دستور محدودیت حافظه مجازی برای
|
|
برنامه ها برداشته شده و با این کار احتمالاً درخواستی که قبلاً خطا می داده است
|
|
اجرا خواهد شد.</span></font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.19>4.19</A>) <span lang="fa">از كجا
|
|
تشخيص دهم كه ويرايش يا نسخه </span>PostgreSQL<span lang="fa">يي
|
|
كه من استفاده مي‌كنم چيست؟</span></font></H4>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">با اجرای دستور</span>
|
|
<span lang="fa">()</span>SELECT version</font></P>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.20>4.20</A>) <span lang="fa">چرا
|
|
حین اجرای عملیات روی </span>large-object<span lang="fa">ها خطای </span>"<I>invalid
|
|
large obj descriptor</I>"<span lang="fa">به وجود می آید؟</span></font></H4>
|
|
<p align="right" dir="rtl"><font face="Tahoma"><span lang="fa">شما باید قبل از
|
|
شروع دستوراتی که با </span>large-object<span lang="fa">ها کار می کنند </span>BEGIN<span lang="fa"> و بعد از آنها هم یک </span>END<span lang="fa">
|
|
بگذارید. در حال حاضر </span>PostgreSQL<span lang="fa"> هندل </span>large-object<span lang="fa">ها
|
|
را در زمان نهایی شدن تراکنش (</span>commit<span lang="fa">شدن)</span>
|
|
<span lang="fa">می بندد. به همین دلیل اولین تلاش برای انجام هر کاری با هندل منجر
|
|
به خطای </span><i>invalid large obj descriptor</i><span lang="fa"> خواهد شد.</span>
|
|
<span lang="fa">برای جلوگیری از این خطا حتماً باید از یک تراکنش استفاده کنید.
|
|
این کار همانطور که قبلاً گفته شد با استفاده از قرار دادن </span>BEGIN<span lang="fa">
|
|
و </span>END<span lang="fa"> در ابتدا و انتهای دستورات انجام می شود.</span></font></p>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">اگر این خطا را در حین استفاده
|
|
از یک درایور </span>ODBC<span lang="fa"> دریافت کردید احتمالاً باید این دستور را
|
|
اجرا کنید: </span>set </font> <CODE><font face="Tahoma">auto-commit off</font></CODE></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.21>4.21</A>)
|
|
<span lang="fa">چگونه يك ستون ايجاد كنم كه مقدار زمان جاري را به عنوان مقدار
|
|
پيش‌فرض داشته باشد؟</span></font></H4>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">از</span> <I>CURRENT_TIMESTAMP
|
|
<span lang="fa"> </span></I><span lang="fa">استفاده کنید در مثال زیر نحوه
|
|
انجام این کار نشان داده شده است:</span></font></P>
|
|
<div dir="ltr">
|
|
<PRE><CODE><font face="Tahoma">CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
|
|
</font></CODE><font face="Tahoma">
|
|
</font></PRE>
|
|
</div>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.22>4.22</A>)
|
|
<span lang="fa">چرا "زير درخواستهايي" كه از </span>IN<span lang="fa"> استفاده
|
|
مي‌كنند كند هستند؟</span></font></H4>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">در نسخه های قبل از 7.4 عمل
|
|
الحاق زیر درخواست و درخواست اصلی به این صورت انجام می شود که نتایج به دست آمده
|
|
از زیر درخواست به صورت ترتیبی برای هر ردیف اعمال می شود. اگر زیردرخواست ردیف های
|
|
کمی را به عنوان خروجی برگرداند و درخواست بیرونی ردیف های زیادی را شامل شود
|
|
استفاده از </span>IN<span lang="fa"> بهترین روش است در غیر اینصورت بهتر است از
|
|
</span>EXISTS<span lang="fa"> استفاده شود</span></font></P>
|
|
<div dir="ltr">
|
|
<PRE><font face="Tahoma"> SELECT *
|
|
FROM tab
|
|
WHERE col IN (SELECT subcol FROM subtab);
|
|
</font></PRE></div>
|
|
<p dir="rtl"><span lang="fa"><font face="Tahoma">به:</font></span></p>
|
|
<div dir="ltr">
|
|
<PRE><font face="Tahoma"> SELECT *
|
|
FROM tab
|
|
WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
|
|
</font></PRE></div>
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">برای اجرای سریع این درخواست
|
|
باید برای ستون </span>subcol<span lang="fa"> نمایه ایجاد شده باشد.</span></font></p>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">در نسخه های بعد از 7.4 </span>
|
|
IN<span lang="fa"> برای الحاق از همان تکنیک پیچیده مورد استفاده در دستورات
|
|
معمولی استفاده می کند و بنابراین استفاده از آن نسبت به </span>EXISTS<span lang="fa">
|
|
ارجحیت دارد.</span></font><H4 dir="rtl"><font face="Tahoma"><A name=4.23>4.23</A>) <span lang="fa">چگونه مي‌توانم يك الحاق خارجي (</span>outer join<span lang="fa">)
|
|
انجام دهم؟</span></font></H4>
|
|
<p dir="rtl"><span lang="fa"><font face="Tahoma">برای انجام الحاق خارجی به روش
|
|
زیر عمل کنید:</font></span></p>
|
|
<div dir="ltr">
|
|
<PRE><font face="Tahoma"> SELECT *
|
|
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
|
|
</font></PRE></div>
|
|
<p dir="rtl"><span lang="fa"><font face="Tahoma">یا</font></span></p>
|
|
<div dir="ltr">
|
|
<PRE><font face="Tahoma"> SELECT *
|
|
FROM t1 LEFT OUTER JOIN t2 USING (col);
|
|
</font></PRE>
|
|
</div>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">درخواستهای بالا </span>t1.col ,
|
|
t2.col<span lang="fa"> را به هم الحاق می کند و همچنین ردیفهای </span>t1<span lang="fa">
|
|
که نظیر آنها در </span>t2<span lang="fa"> نبوده است را نیز برمی گرداند. اگر از
|
|
</span>RIGHT<span lang="fa"> استفاده شود نتیجه بر عکس است. یعنی ردیفهای </span>
|
|
t2<span lang="fa"> که نظیر آنها در </span>t1 <span lang="fa">نباشد را نشان می
|
|
دهد و اگر از </span>FULL<span lang="fa"> استفاده شود نتیجه هم شامل ردیفهای
|
|
</span>t1<span lang="fa"> است و هم شامل ردیفهای </span>t2<span lang="fa">.
|
|
استفاده از کلمه </span>OUTER<span lang="fa"> اختیاری است چرا که این کلمه به طور
|
|
ضمنی در دستورهای </span>LEFT, RIGHT, FULL<span lang="fa"> وجود دارد.</span></font></P>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">در نسخه های قبلی پایگاه داده می
|
|
توانیم الحاق خارجی را به کمک دستورهای </span>UNION, NOT IN<span lang="fa"> شبیه
|
|
سازی کنیم. این کار در مثال زیر نشان داده شده است:</span><BR></font></P>
|
|
<div dir="ltr">
|
|
<PRE><font face="Tahoma"> 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
|
|
</font></PRE>
|
|
</div>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.24>4.24</A>)
|
|
<span lang="fa">چگونه مي‌توان درخواستهايي از چند پايگاه داده توليد كرد؟</span></font></H4>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">در حال حاضر این کار امکان پذیر
|
|
نیست. </span>PostgreSQL<span lang="fa"> فقط امکان درخواست از پایگاه داده ای را
|
|
می دهد که در حال حاضر به آن متصل باشید و نمی‌توان به طور همزمان از دو پایگاه
|
|
داده استفاده کرد. البته یک برنامه کاربردی خود می تواند به طور همزمان دو
|
|
پایگاه داده را مورد استفاده قرار داده و نتایج را با هم ترکیب کند ولی نمی تواند
|
|
در یک درخواست به هر دو پایگاه داده رجوع کند.</span></font></P>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.25>4.25</A>)
|
|
<span lang="fa">چگونه خروجي يك تابع مي‌تواند چند رديف يا ستون باشد؟</span></font></H4>
|
|
<P dir="rtl"><span lang="fa"><font face="Tahoma">در نسخه 7.3 خروجی یک تابع می
|
|
تواند چند ردیف یا چند ستون باشد. برای دیدن اطلاعات بیشتر به سایت زیر
|
|
مراجعه کنید:</font></span><font face="Tahoma"><A
|
|
href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A><span lang="fa">
|
|
</span> </font><H4 dir="rtl"><font face="Tahoma"><A name=4.26>4.26</A>)
|
|
<span lang="fa">در توابع </span>PL/PgSQL<span lang="fa"> چرا نمي‌توان با اطمينان
|
|
جداول موقت را ايجاد يا حذف كرد؟</span></font></H4>
|
|
<P dir="rtl"><font face="Tahoma">PL/PgSQL<span lang="fa"> محتوای توابع را ذخیره
|
|
(</span>cache<span lang="fa">) می کند.</span> <span lang="fa">یک اثر بد جانبی
|
|
این کار آن است که اگر در تابع از یک جدول موقت استفاده شود و بعداً آن جدول حذف و
|
|
یک جدول جدید به جای آن ایجاد شود، در فراخوانی مجدد آن تابع، محتوای ذخیره
|
|
شده تابع هنوز به جدول قدیمی اشاره می کند و بنابراین اجرای تابع با اشکال
|
|
مواجه می شود. راه حل این مشکل آن است که برای جداول موقت از دستور </span>EXECUTE<span lang="fa">
|
|
استفاده شود که این کار سبب می شود که درخواست برای هر بار اجرا مجدداً پیمایش و
|
|
تفسیر شود.</span></font></P>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.27>4.27</A>)
|
|
<span lang="fa">چه گزينه‌هايي براي تكرار (</span>replication<span lang="fa">)</span>
|
|
<span lang="fa">وجود دارد؟</span>
|
|
</font> </H4>
|
|
<P dir="rtl"><font face="Tahoma">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 <A
|
|
href="http://gborg.postgresql.org/genpage?replication_research">http://gborg.PostgreSQL.org/genpage?replication_research</A>
|
|
lists them. A multi-master replication solution is being worked on at <A
|
|
href="http://gborg.postgresql.org/project/pgreplication/projdisplay.php">http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</A>.</font></P>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=4.28>4.28</A>)
|
|
<span lang="fa">چه گزينه‌هايي براي رمزنگاري وجود دارد؟</span>
|
|
</font> </H4>
|
|
<UL>
|
|
<LI dir="rtl">
|
|
<p dir="rtl"><font face="Tahoma">contrib<I>/pgcrypto </I><span lang="fa">
|
|
شامل توابع رمزنگاری زیادی است که می توان از آنها در دستورات </span>SQL<span lang="fa">
|
|
استفاده کرد.</span></font><LI dir="rtl">
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">برای رمز کردن ارتباط بین
|
|
</span>client<span lang="fa"> و </span>server<span lang="fa"> پایگاه داده
|
|
حتماً گزینه </span>SSL<span lang="fa"> را بر روی پایگاه داده فعال کنیم.</span></font><LI dir="rtl">
|
|
<p dir="rtl"><font face="Tahoma"><span lang="fa">در نسخه 7.3 به بعد کلمات
|
|
عبور کاربران به طور اتوماتیک به صورت رمز شده ذخیره می شود ولی در نسخه های
|
|
قبلی باید گزینه </span>
|
|
<I>PASSWORD_ENCRYPTION</I> <span lang="fa">را در فایل</span><I>postgresql.conf </I>
|
|
<span lang="fa">فعال کنیم. </span>
|
|
</font>
|
|
<LI dir="rtl">
|
|
<p dir="rtl"><span lang="fa"><font face="Tahoma">می توان پایگاههای داده را
|
|
روی یک فایل سیستم رمزشده نگاهداری کرد</font></span></LI></UL>
|
|
<HR dir="rtl">
|
|
|
|
<H2 align=center dir="rtl"><font face="Tahoma">Extending PostgreSQL</font></H2>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=5.1>5.1</A>)
|
|
<span lang="fa">من يك تابع نوشته‌ام. چگونه آن را در </span>psql<span lang="fa">
|
|
اجرا كنم؟ چرا با اجراي آن </span>core dump<span lang="fa"> مي‌گيرم؟</span></font></H4>
|
|
<p dir="rtl"><span lang="fa"><font face="Tahoma">دلایل مختلفی می تواند باعث بروز
|
|
این مشکل شود. اما قبل از همه، تابع خود را به صورت جدا تست کنید.</font></span></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=5.2>5.2</A>) <span lang="fa">چگونه مي‌توانم در توليد نوع‌ها و توابع جديد و جالب براي
|
|
</span>PostgreSQL<span lang="fa">‌ همكاري و مشاركت داشته باشم</span></font><span lang="fa"><font face="Tahoma">؟</font></span></H4>
|
|
<p dir="rtl"><span lang="fa"><font face="Tahoma">کد خود را به گروه پستی </font>
|
|
</span><font face="Tahoma"> <I>pgsql-hackers<span lang="fa"> </span></I>
|
|
<span lang="fa"> ارسال کنید.</span></font></p>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=5.3>5.3</A>)
|
|
<span lang="fa">چگونه مي‌توانم يك تابع به زبان </span>C<span lang="fa"> بنويسم
|
|
كه خروجي آن يك</span> <span lang="fa">‌</span>tuple<span lang="fa"> </span> <span lang="fa">(چند
|
|
تايي) باشد؟</span></font></H4>
|
|
<P dir="rtl"><font face="Tahoma"><span lang="fa">در نسخه های 7.3 به بعد یک تابع
|
|
می تواند یک جدول را به عنوان خروجی برگرداند. این ویژگی در توابعی که به زبانهای
|
|
</span>C<span lang="fa"> و </span>PL/PgSQL<span lang="fa"> نوشته می‌شوند به طور
|
|
کامل وجود دارد. راهنما برنامه نویسان را مطالعه کنید. یک مثال از نحوه برگرداندن
|
|
یک جدول به عنوان خروجی در </span><i>contrib/tablefunc</i><span lang="fa"> آمده
|
|
است.</span></font></P>
|
|
<H4 dir="rtl"><font face="Tahoma"><A name=5.4>5.4</A>)
|
|
<span lang="fa">من يك فايل منبع را عوض كرده ام چرا در عمليات كامپيل مجدد آن،
|
|
تغيير ديده نمي‌شود؟</span></font></H4>
|
|
<P dir="rtl"><font face="Tahoma">Makefile<span lang="fa"> برای فایلهای </span>
|
|
include<span lang="fa"> شده وابستگیها را به درستی نشان نمی دهد. برای اطمینان از
|
|
اینکه فایلی که عوض کرده اید حتماً دوباره کامپیل می‌شود دستور </span>make clean<span lang="fa">
|
|
را اجرا کنید. اگر از کامپیلر </span>gcc<span lang="fa"> استفاده می کنید می
|
|
توانید از گزینه </span>enable-depend--<span lang="fa"> در موقع اجرای برنامه
|
|
</span>configure<span lang="fa"> استفاده کنید این گزینه باعث می شود که وابستگیها
|
|
به طور اتوماتیک تولید شود.</span></font></P></BODY></HTML> |