1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 <!-- saved from url=(0122) -->
3 <HTML dir="ltr"><HEAD><TITLE>PostgreSQL FAQ</TITLE>
4 <META content="Microsoft FrontPage 6.0" name=GENERATOR>
5 <META http-equiv=Content-Type content="text/html; charset=windows-1252"></HEAD>
6 <BODY text=#000000 vLink=#a00000 aLink=#0000ff link=#ff0000 bgColor=#ffffff>
7 <h1 dir="rtl"><span lang="fa"><font face="Tahoma">سوالاتي كه اغلب در مورد </font>
8 </span><font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma">‌
9 پرسيده مي شوند</font></span></h1>
10 <p dir="rtl"><font face="Tahoma"><span lang="fa">تاريخ آخرين اصلاح اين فايل:
11 28 شهریور 1383 هجری شمسی</span></font></p>
12 <P dir="rtl"><span lang="fa"><font face="Tahoma">نگهدارنده اصلي فايل (زبان
13 انگليسي)در حال حاضر </font></span><font face="Tahoma">: Bruce Momjian
15 href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A></font></P>
16 <P dir="rtl"><span lang="fa"><font face="Tahoma">نگهدارنده فايل به زبان فارسي:
17 </font></span><font face="Tahoma"><a href="mailto:m.taghizadeh@imenafzar.net">
18 m.taghizadeh@imenafzar.net</a> </font><span lang="fa"><font face="Tahoma"> محمود
19 تقي‌زاده مهرجردی</font></span><font face="Tahoma"><BR></font></P>
20 <P dir="rtl"><span lang="fa"><font face="Tahoma">آخرين نسخه اين فايل را
21 مي‌توانيد از اين آدرس بگيريد </font></span><font face="Tahoma"> <A
22 href="http://www.postgresql.org/docs/faqs/FAQ.html">http://www.PostgreSQL.org/docs/faqs/FAQ.html</A></font></P>
23 <P dir="rtl"><span lang="fa"><font face="Tahoma">سوالاتي كه در مورد يك
24 سکوی(پلتفرم)
25 خاص است در اين آدرس جواب داده شده اند </font></span><font face="Tahoma"> <A
26 href="http://www.postgresql.org/docs/index.html">http://www.PostgreSQL.org/docs/index.html</A></font></P>
29 <H2 align=center dir="rtl"><font face="Tahoma"><span lang="fa">سوالات عمومي</span></font></H2>
30 <p dir="rtl"><font face="Tahoma"><a href="#1.1">1.1</a>)
31 PostgreSQL</font><span lang="fa"><font face="Tahoma"> چيست و چگونه بايد آن را
32 تلفظ كرد؟</font></span><font face="Tahoma"><BR><A
34 <span lang="fa">قانون كپي رايت‌ (حقوق معنوي) در مورد </span>PostgreSQL
35 <span lang="fa"> به چه صورت است؟</span><BR><A
36 href="#1.3">1.3</A>)<span lang="fa">
37 </span>PostgreSQL</font><span lang="fa"><font face="Tahoma">‌ روي چه نوع
38 يونيكسهايي اجرا مي‌شود؟</font></span><font face="Tahoma"><BR><A
40 </font><span lang="fa"><font face="Tahoma">روي چه محيطهاي غير يونيكسي مي‌توان آن
41 را اجرا كرد؟</font></span><font face="Tahoma"><BR><A
42 href="#1.5">1.5</A>) PostgreSQL</font><span lang="fa"><font face="Tahoma">
43 را از كجا مي‌توانم بگيرم؟</font></span><font face="Tahoma"><BR><A
45 </font><span lang="fa"><font face="Tahoma">از كجا خدمات پشتيباني بگيرم؟</font></span><font face="Tahoma"><BR><A
46 href="#1.7">1.7</A>)</font><span lang="fa"><font face="Tahoma">
47 آخرين نسخه اعلام شده چيست؟</font></span><font face="Tahoma"><BR><A
49 </font><span lang="fa"><font face="Tahoma">چه مستندات و راهنمائيهايي وجود دارند؟</font></span><font face="Tahoma"><BR><A
51 <span lang="fa">چگونه مي‌توانم ازاشكالات شناخته شده و يا امكاناتي كه در اين
52 پايگاه داده وجود ندارد مطلع شوم؟</span><BR><A
53 href="#1.10">1.10</A>)
54 </font><span lang="fa"><font face="Tahoma">چگونه مي‌توانم زبان </font></span>
55 <font face="Tahoma">SQL</font><span lang="fa"><font face="Tahoma"> را ياد بگيرم؟</font></span><font face="Tahoma"><BR><A
56 href="#1.11">1.11</A>)</font><span lang="fa"><font face="Tahoma">
57 آيا </font></span><font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma">
58 مشكل </font></span><font face="Tahoma">Y2K</font><span lang="fa"><font face="Tahoma">‌
59 دارد يا خير؟</font></span><font face="Tahoma"><BR><A
60 href="#1.12">1.12</A>)
61 </font><span lang="fa"><font face="Tahoma">چگونه مي‌توانم به تيم برنامه نويس
62 </font></span><font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma">
63 ملحق شوم؟</font></span><font face="Tahoma"><BR><A
64 href="#1.13">1.13</A>)
65 <span lang="fa">چگونه مي‌توانم يك اشكال را به گروه برنامه نويس اعلام كنم؟</span><BR><A
66 href="#1.14">1.14</A>)
67 </font><span lang="fa"><font face="Tahoma"> وضعيت </font></span>
68 <font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma">‌ در
69 مقايسه با ساير </font></span><font face="Tahoma">DBMS<span lang="fa">ها به چه
70 صورت است؟</span><BR><A
71 href="#1.15">1.15</A>)
72 <span lang="fa">من چگونه مي‌توانم از نظر مالي به </span>PostgreSQL<span lang="fa">
73 كمك كنم؟</span><BR>
75 <h2 align="center" dir="rtl"><font face="Tahoma"><span lang="fa">سوالات مربوط به
76 استفاده از پايگاه داده</span></font></h2>
77 <p dir="rtl"><font face="Tahoma"><A
79 <span lang="fa">آيا هيچ درايور </span>ODBC</font><span lang="fa"><font face="Tahoma">‌
80 براي </font></span><font face="Tahoma">PostgreSQL</font><font face="Tahoma"><span lang="fa">
81 وجود دارد؟</span><BR><A
83 <span lang="fa">چه ابزارهايي براي استفاده از </span>PostgreSQL<span lang="fa">‌
84 با صفحات وب وجود دارد؟</span><BR><A
86 <span lang="fa">آيا </span>PostgreSQL<span lang="fa">‌ يك واسط كاربري گرافيكي
87 دارد؟</span><BR><A
89 <span lang="fa">با چه زبانهاي برنامه‌نويسي مي‌توان با </span>PostgreSQL<span lang="fa">‌
90 ارتباط برقرار كرد؟</span><BR>
92 <h2 align="center" dir="rtl"><span lang="fa"><font face="Tahoma">سوالات مربوط به
93 راهبري</font></span></h2>
94 <p dir="rtl"><font face="Tahoma"><A
96 <span lang="fa">چگونه مي‌توانم </span>PostgreSQL<span lang="fa">‌ را در شاخه‌اي
97 غير از </span>/usr/local/pgsql/<span lang="fa"> نصب كنم؟</span><BR><A
99 <span lang="fa">چرا موقعي كه من برنامه </span>postmaster<span lang="fa">‌ را
100 اجرا مي كنم پيام </span>Bad system call<span lang="fa">‌ و يا </span>core dump
101 <span lang="fa">‌مي‌گيرم؟</span><BR><A
103 <span lang="fa">چرا موقعي كه من سعي مي‌كنم برنامه </span>postmaster<span lang="fa">‌
104 را اجرا كنم خطاي</span> <I>IpcMemoryCreate</I> <span lang="fa">مي‌گيرم؟</span><BR><A
105 href="#3.4">3.4</A>)<I><span lang="fa">
106 </span></I><span lang="fa">چرا موقعي كه من سعي مي‌كنم برنامه </span>postmaster<span lang="fa">‌
107 را اجرا كنم خطاي</span> <I><span lang="fa"> </span>IpcSemaphoreCreate<span lang="fa">
108 </span></I><span lang="fa">مي‌گيرم؟</span><BR><A
110 <span lang="fa">چگونه مي‌توانم اتصالات ساير ماشينها را كنترل كنم؟</span><BR><A
112 <span lang="fa">براي كارايي بالاتر و بهتر پايگاه داده من چه تنظيماتي را بايد
113 انجام دهم؟</span><BR><A
115 <span lang="fa">چه امكاناتي براي پيدا كردن اشكال‌ وجود دارد؟</span><BR><A
117 <span lang="fa">چرا موقعي كه من مي‌خواهم به پايگاه داده وصل شوم پيام</span> <I>"Sorry, too many clients"
118 <span lang="fa">‌</span></I><span lang="fa">مي‌گيرم؟</span><BR><A
119 href="#3.9">3.9</A>)<span lang="fa">
120 در شاخه </span> <I>pgsql_tmp</I> <span lang="fa"> چه چيزي قرار دارد؟</span><BR><A
121 href="#3.10">3.10</A>)
122 <span lang="fa">چرا براي به روز كردن نسخه پايگاه داده من بايد كل داده ها را
123 </span>dump<span lang="fa">‌ و مجدداً </span>restore<span lang="fa"> كنم؟</span><BR><A
124 href="#3.11">3.11</A>)
125 <span lang="fa">از چه سخت افزاري بايد استفاده كنم؟</span><BR>
127 <H2 align=center dir="rtl"><span lang="fa"><font face="Tahoma">سوالات عملياتي</font></span></H2>
128 <p dir="rtl"><font face="Tahoma"><A
130 تفاوت بين <span lang="en-us">binary cursors</span> و <span lang="en-us">Normal
131 cursors</span> چيست؟<BR><A
133 <span lang="fa">من چگونه مي‌توانم فقط روي چند رديف اول
134 يا يك رديف تصادفي درخواست </span>SELECT<span lang="fa">‌
135 بزنم؟</span><BR><A
137 <span lang="fa">من چگونه مي‌توانم ليستي از جداول يا ساير چيزهايي كه در </span>
138 psql<span lang="fa">‌ وجود دارد را ببينم؟</span><BR><A
140 <span lang="fa">چگونه يك ستون جدول را حذف مي‌كنيد؟ چگونه نوع داده آن را عوض
141 كنيم؟</span><BR><A
143 <span lang="fa">حداكثر اندازه يك رديف،‌ جدول و خود پايگاه داده چقدر است؟</span><BR><A
145 <span lang="fa">چقدر فضاي ديسك سخت براي ذخيره كردن داده‌‌هاي يك فايل متني مورد
146 نياز است؟</span><BR><A
148 <span lang="fa">چگونه مي‌توانم بفهمم كه چه كاربران،‌ پايگاه داده،‌ نمايه و
149 جداولي در سيستم تعريف شده است؟</span><BR><A
151 <span lang="fa">چرا درخواستهاي من كند اجرا مي‌شوند يا چرا از نمايه ها استفاده
152 نمي‌كنند؟</span><BR><A
154 <span lang="fa">چگونه مي‌توانم نحوه بررسي درخواست را توسط بهينه‌ساز درخواستها
155 مشاهده كنم؟</span><BR><A
156 href="#4.10">4.10</A>)
157 <span lang="fa">نمايه </span>R-tree<span lang="fa">‌ چيست؟</span><BR><A
158 href="#4.11">4.11</A>)
159 <span lang="fa">بهينه ساز تكويني درخواست چيست؟</span> (Genetic Query Optimizer)<BR><A
160 href="#4.12">4.12</A>)
161 <span lang="fa">چگونه از عبارات منظم براي جستجو استفاده كنم؟ چگونه جستجويي انجام
162 دهم كه حساس به متن نباشد؟ چگونه براي يك جستجوي غير حساس به متن از نمايه استفاده
163 كنم؟</span><BR><A
164 href="#4.13">4.13</A>)
165 <span lang="fa">چگونه مي‌توانم در يك درخواست تشخيص دهم كه يك فيلد </span>NULL<span lang="fa">‌
166 است؟</span><BR><A
167 href="#4.14">4.14</A>)
168 <span lang="fa">تفاوت بين گونه‌هاي مختلف </span>character<span lang="fa"> چيست؟</span><BR><A
169 href="#4.15.1">4.15.1</A>)
170 <span lang="fa">چگونه مي‌توانم يك فيلد سريال يا افزايشي ايجاد كنم؟</span><BR><A
171 href="#4.15.2">4.15.2</A>)
172 <span lang="fa">چگونه مي‌توانم مقدار يك درج سريالي را بدانم؟</span><BR><A
173 href="#4.15.3">4.15.3</A>) <span lang="fa">آیا توابع ()</span>nextval<span lang="fa">
174 و ()</span>currval<span lang="fa"> منجر به ایجاد شرایط </span>race<span lang="fa">
175 برای سایر کاربران می شوند؟</span><BR><A
176 href="#4.15.4">4.15.4</A>)
177 <span lang="fa">چرا اعداد سریالی مربوط به تراکنشهای </span>abort<span lang="fa">
178 شده مجدداً استفاده نمی شود؟ چرا بین اعداد سریالی یک فاصله خالی ایجاد می شود؟</span><BR><A
179 href="#4.16">4.16</A>)
180 OID<span lang="fa"> و </span>TID<span lang="fa"> چه هستند؟</span><BR><A
181 href="#4.17">4.17</A>)
182 <span lang="fa">معني بعضي از ترمها و كلماتي كه در </span>PostgreSQL<span lang="fa">‌
183 استفاده مي‌شود چيست؟</span><BR><A
184 href="#4.18">4.18</A>)<span lang="fa">
185 چرا من خطاي </span><i>"ERROR: Memory exhausted in AllocSetAlloc"</i><span lang="fa">
186 مي‌گيرم؟</span><BR><A
187 href="#4.19">4.19</A>)
188 <span lang="fa">از كجا تشخيص دهم كه ويرايش يا نسخه </span>PostgreSQL<span lang="fa">يي
189 كه من استفاده مي‌كنم چيست؟</span><BR><A
190 href="#4.20">4.20</A>) <span lang="fa">چرا در حین اجرای عملیات روی </span>
191 large-object<span lang="fa">ها خطای </span>"<I>invalid large obj descriptor</I>"<span lang="fa">به
192 وجود می آید؟</span><BR><A
193 href="#4.21">4.21</A>)
194 <span lang="fa">چگونه يك ستون ايجاد كنم كه مقدار زمان جاري را به عنوان مقدار
195 پيش‌فرض داشته باشد؟</span><BR><A
196 href="#4.22">4.22</A>)
197 <span lang="fa">چرا زير درخواستهايي كه از </span>IN<span lang="fa"> استفاده
198 مي‌كنند كند هستند؟</span><BR><A
199 href="#4.23">4.23</A>)
200 <span lang="fa">چگونه مي‌توانم يك الحاق خارجي (</span>outer join<span lang="fa">)
201 انجام دهم؟</span><BR><A
202 href="#4.24">4.24</A>)
203 <span lang="fa">چگونه مي‌توان درخواستهايي از چند پايگاه داده توليد كرد؟</span><BR><A
204 href="#4.25">4.25</A>)
205 <span lang="fa">چگونه خروجي يك تابع مي‌تواند چند رديف يا ستون باشد؟</span><BR><A
206 href="#4.26">4.26</A>)
207 <span lang="fa">در توابع </span>PL/PgSQL<span lang="fa"> چرا نمي‌توان با اطمينان
208 جداول موقت را ايجاد يا حذف كرد؟</span><BR><A
209 href="#4.27">4.27</A>)
210 <span lang="fa">چه گزينه‌هايي براي تكرار (</span>replication<span lang="fa">)</span>
211 <span lang="fa">وجود دارد؟</span><BR><A
212 href="#4.28">4.28</A>)
213 <span lang="fa">چه گزينه‌هايي براي رمزنگاري وجود دارد؟</span><BR>
215 <h2 align="center" dir="rtl"><font face="Tahoma"><span lang="fa">توسعه </span>
216 PostgreSQL</font></h2>
217 <p dir="rtl"><font face="Tahoma"><A
219 <span lang="fa">من يك تابع نوشته‌ام. چگونه آن را در </span>psql<span lang="fa">
220 اجرا كنم؟ چرا با اجراي آن </span>core dump<span lang="fa"> مي‌گيرم؟</span><BR><A
222 <span lang="fa">چگونه مي‌توانم در توليد نوع‌ها و توابع جديد و جالب براي </span>
223 PostgreSQL<span lang="fa">‌ همكاري و مشاركت داشته باشم.</span><BR><A
225 <span lang="fa">چگونه مي‌توانم يك تابع به زبان </span>C<span lang="fa"> بنويسم
226 كه خروجي آن يك</span> <span lang="fa">‌</span>tuple<span lang="fa"> </span> <span lang="fa">(چند
227 تايي) باشد؟</span><BR><A
229 <span lang="fa">من يك فايل منبع را عوض كرده ام چرا در عمليات كامپيل مجدد آن
230 تغيير ديده نمي‌شود؟</span><BR>
234 <H2 align=center dir="rtl"><font face="Tahoma"><span lang="fa">سوالات عمومي</span></font></H2>
235 <H4 dir="rtl"><font face="Tahoma"><A name=1.1>1.1</A>) <span lang="en-us">
236 PostgreSQL</span> چيست و چگونه آن را بايد تلفظ كرد؟</font></H4>
237 <p dir="rtl"><span lang="en-us">PostgreSQL</span> به صورت <span lang="en-us">
238 Post-Gres-Q-L</span>‌ تلفظ مي‌شود. يك فايل صوتي در آدرس
239 <a href="http://www.postfresql.org/postgresql.mp3‌"><span lang="en-us">
240 http://www.postfresql.org/postgresql.mp3</span>‌</a> براي كساني كه مايلند تلفظ
241 صحيح را بشنوند وجود دارد.</p>
242 <P dir="rtl"><span lang="en-us">PostgreSQL</span> از روي سيستم مديريت پايگاه
243 داده <span lang="en-us">POSTGRES</span> توسعه داده شده است (هنوز هم بعضي مواقع
244 براي سادگي به آن <span lang="en-us">Postgres</span> گفته مي‌شود) كه يك نمونه
245 تحقيقاتي از پايگاه داده‌هاي نسل بعد است. <span lang="en-us">PostgreSQL</span>
246 همان الگوي داده قوي و انواع داده را حفظ كرده است ولي زبان
247 <span lang="en-us">PostQuel</span> را با يك زيرمجموعه پيشرفته از
248 <span lang="en-us">SQL</span> جايگزين كرده است. <span lang="en-us">PostgreSQL</span>
249 متن باز بوده و متن كامل آن در دسترس است.</P>
250 <P dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL </span> توسط
251 يك تيم برنامه‌نويس كه همگي در گروه پست الكترونيك برنامه‌نويسان
252 <span lang="en-us">PostgreSQL</span> عضو هستند، انجام مي‌شود. هماهنگ كننده
253 اصلي در حال حاضر <span lang="en-us">Marc G. Fournier</span>‌ به آدرس
254 <span lang="en-us"><a href="mailto:scrappy@PostgreSQL.org">
255 scrappy@PostgreSQL.org</a></span> مي‌باشد. (براي ديدن نحوه ملحق شدن به اين
256 تيم قسمت <A
258 را ببينيد). اين تيم در حاضر مسئوليت تمام مسائل مربوط به برنامه‌نويسي
259 <span lang="en-us">PostgreSQL</span> را بر عهده دارد. اين يك پروژه گروهي است و
260 تحت كنترل هيچ شركتي نيست. براي اطلاعات بيشتر در مورد اين تيم به آدرس
262 href="http://www.postgresql.org/docs/faqs/FAQ_DEV.html">http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html</A>
263 مراجعه كنيد.</font></P>
264 <P dir="rtl"><font face="Tahoma">اولين نسخه <span lang="en-us">PostgreSQL</span>‌
265 توسط Andrew Yu and Jolly Chen به وجود آمد. افراد بسياري در توسعه و رفع اشكال و
266 انتقال آن شركت كرده‌اند. متن اصلي <span lang="en-us">Postgres</span> كه
267 <span lang="en-us">PostgreSQL</span> از روي آن نوشته شده است، توسط تعداد زيادي
268 دانشجوي كارشناسي ارشدو دانشجوي كارشناسي و تيم برنامه‌نويسي كه تحت نظر پروفسور
269 Michael Stonebrake در دانشگاه بركلي،‌كاليفرنيا كار مي‌كرده‌اند نوشته شده است.</font></P>
270 <P dir="rtl"><font face="Tahoma">نام اصلي نرم افزار در دانشگاه بركلي
271 <span lang="en-us">Postgres</span>‌ بود. در سال 1995 بعد از اضافه شدن
272 <span lang="en-us">SQL</span> نام آن به<span lang="en-us"> Postgres95</span>
273 تغيير داده شد.<span lang="en-us"> </span>در سال 1996 نام آن به
274 <span lang="en-us">PostgreSQL</span> تغيير داده شد.</font></P>
275 <H4 dir="rtl"><font face="Tahoma"><A name=1.2>1.2</A>) قوانين كپي رايت در مورد
276 <span lang="en-us">PostgreSQL</span> به چه صورت است؟</font></H4>
277 <p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL</span> تحت قانون
278 كپي رايت زير قرار دارد:</font></p>
279 <P dir="ltr"><font face="Tahoma">PostgreSQL Data Base Management System</font></P>
280 <P dir="ltr"><font face="Tahoma">Portions copyright (c) 1996-2004, PostgreSQL Global Development Group
281 Portions Copyright (c) 1994-6 Regents of the University of California</font></P>
282 <P dir="ltr"><font face="Tahoma">Permission to use, copy, modify, and distribute this software and its
283 documentation for any purpose, without fee, and without a written agreement is
284 hereby granted, provided that the above copyright notice and this paragraph and
285 the following two paragraphs appear in all copies.</font></P>
286 <P dir="ltr"><font face="Tahoma">IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
287 DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST
288 PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
289 THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
291 <P dir="ltr"><font face="Tahoma">THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
292 INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
293 FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS
294 IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE
295 MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.</font></P>
296 <P dir="rtl"><font face="Tahoma">قانون بالا ليسانس <span lang="en-us">BSD</span>
297 كه يك ليسانس كلاسيك براي متن‌هاي باز است مي‌باشد. هيچ محدوديتي در مورد نحوه
298 استفاده از متن در آن ديده نمي‌شود. ما آن را دوست داريم و هيچ قصدي براي تغيير آن
299 نداريم.</font></P>
300 <H4 dir="rtl"><font face="Tahoma"><A name=1.3>1.3</A>) PostgreSQL</font><span lang="fa"><font face="Tahoma">‌ روي چه نوع
301 يونيكسهايي اجرا مي‌شود؟</font></span></H4>
302 <p dir="rtl"><font face="Tahoma">در حالت كلي <span lang="en-us">PostgreSQL</span>
303 روي هر پلتفرم (سكوي) سازگار با يونيكس اجرا مي‌شود. ليست پلتفرمهايي كه تاكنون
304 <span lang="en-us">PostgreSQL</span>‌ روي آنها نصب و تست شده است درقسمت
305 دستورالعملهاي نصب آمده است.</font></p>
306 <H4 dir="rtl"><font face="Tahoma"><A name=1.4>1.4</A>) </font><span lang="fa"><font face="Tahoma">روي چه محيطهاي غير يونيكسي مي‌توان آن
307 را اجرا كرد؟</font></span></H4>
308 <P dir="rtl"><font face="Tahoma"><STRONG>Client</STRONG></font></P>
309 <P dir="rtl"><font face="Tahoma">مي‌توان <span lang="en-us">psql, </span>
310 كتابخانه <span lang="en-us">libpq</span> و ساير واسطها و برنامه‌هاي كاربردي را
311 طوري كامپيل كرد كه روي محيطهاي ويندوز نيز اجرا شوند. در اين حالت
312 <span lang="en-us">Client</span> روي ويندوز اجرا مي‌شود و از طربق شبكه و پروتكل
313 <span lang="en-us">TCP/IP</span> با يك سرور كه روي يك پلتفرم لينوكس در حال
314 اجراست ارتباط برقرار مي‌كند.يك فايل <span lang="en-us">win32.mak</span> همراه با
315 كدهاي <span lang="en-us">PostgreSQL</span> وجود دارد كه براي كامپيل كردن
316 كتابخانه <span lang="en-us">libpq</span> و برنامه <span lang="en-us">psql</span>
317 مي‌باشد. <span lang="en-us">P</span>‌<span lang="en-us">ostgreSQL</span>‌ همچنين
318 امكان ارتباط به صورت <span lang="en-us">ODBC</span>‌ را نيز دارد.</font></P>
319 <P dir="rtl"><font face="Tahoma"><STRONG>Server</STRONG></font></P>
320 <P dir="rtl"><strong style="font-weight: 400"><font face="Tahoma">با استفاده از
321 <span lang="en-us">Cygwin</span>‌ و كتابخانه <span lang="en-us">Cygnus</span>
322 مي‌توان پايگاه داده را روي ويندوز <span lang="en-us">NT</span> و يا
323 <span lang="en-us">Win2K</span> اجرا كرد.براي ديدن اطلاعات بيشتر فايل<span lang="en-us">
324 </span></font></strong><font face="Tahoma"> <I>pgsql/doc/FAQ_MSWIN<span lang="en-us">
325 </span>‌</I>را كه بهمراه توزبع‌هاي <span lang="en-us">PostgreSQL</span> آمده است
326 ببينيد و يا اينكه به اين صفحه <A
327 href="http://www.postgresql.org/docs/faqs/text/FAQ_MSWIN">http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A>
328 مراجعه كنيد.</font></P>
329 <P dir="rtl"><font face="Tahoma">در حال حاضر يك عمليات انتقال <span lang="en-us">
330 PostgreSQL</span> به روي سكوهاي <span lang="en-us">Win NT/2000/XP</span> در
331 جريان است. براي ديدن وضعيت اين پروژه به سايت‌هاي <A
332 href="http://momjian.postgresql.org/main/writings/pgsql/win32.html">
333 http://momjian.postgresql.org/main/writings/pgsql/win32.htm</A> و <A
334 href="http://techdocs.postgresql.org/guides/Windows">http://techdocs.postgresql.org/guides/Windows</A>
335 مراجعه كنيد. </font></P>
336 <P dir="rtl"><font face="Tahoma">همچنين يك عمليات انتقال بر روي
337 <span lang="en-us">Novell Netware 6</span> نيز در حال انجام است كه در سايت <A
338 href="http://forge.novell.com/">http://forge.novell.com</A> مي‌توانيد اطلاعات
339 بيشتر را ببينيد.</font></P>
340 <H4 dir="rtl"><font face="Tahoma"><A name=1.5>1.5</A>) PostgreSQL</font><span lang="fa"><font face="Tahoma">
341 را از كجا مي‌توانم بگيرم؟</font></span></H4>
342 <p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL</span>‌ را از
343 سايت اصلي آن <A
344 href="ftp://ftp.postgresql.org/pub">ftp://ftp.PostgreSQL.org/pub</A> مي‌توانيد
345 بگيريد. در صفحه اصلي سايت ليست ساير آدرسهايي كه مي‌توانيد <span lang="en-us">
346 PostgreSQL</span>‌ را از آنها بگيريد آمده است.</font></p>
347 <H4 dir="rtl"><font face="Tahoma"><A name=1.6>1.6</A>) </font><span lang="fa"><font face="Tahoma">از كجا خدمات پشتيباني بگيرم؟</font></span></H4>
348 <p dir="rtl"><font face="Tahoma">گروه پستي اصلي <A
349 href="mailto:pgsql-general@PostgreSQL.org">pgsql-general@PostgreSQL.org</A>
350 مي‌باشد. اين گروه براي بحث در مورد موضوعات مختلف در زمينه <span lang="en-us">
351 PostgreSQL</span> است. براي عضو شدن در اين گروه پستي يك نامه الكترونيكي
352 به آدرس گروه با
353 محتوياتی كه در ادامه آمده است ارسال كنيد. در قسمت <span lang="en-us">
354 Subject</span> چيزي ننويسيد.</font></p>
356 <PRE><font face="Tahoma"> subscribe
360 <P dir="rtl"><font face="Tahoma">آدرس گروه: <A
361 href="mailto:pgsql-general-request@PostgreSQL.org">pgsql-general-request@PostgreSQL.org</A></font></P>
362 <P dir="rtl"><font face="Tahoma">همچنين يك گروه پستي هم به صورت ارسال چكيده
363 پيامها وجود دارد. براي عضو شدن در اين گروه يك نامه با محتويات زير به
364 این آدرس
365 ارسال كنيد. <A
366 href="mailto:pgsql-general-digest-request@PostgreSQL.org">pgsql-general-digest-request@PostgreSQL.org</A>
369 <PRE><font face="Tahoma"> subscribe
372 <p dir="rtl"><font face="Tahoma">در اين گروه هر موقع حجم نامه‌ها به 30 كيلوبايت
373 رسيد براي تمام اعضاء ارسال مي‌شود.</font></p>
374 <p dir="rtl"><font face="Tahoma">گروه پستي بررسي اِشكالات هم وجود دارد. براي عضو
375 شدن در اين گروه يك نامه با محتويات زير به
377 href="mailto:pgsql-bugs-request@PostgreSQL.org">pgsql-bugs-request@PostgreSQL.org</A>
378 ارسال كنيد.</font></p>
380 <PRE><font face="Tahoma"> subscribe
383 <P dir="rtl"><font face="Tahoma" size="3">گروه پستي مخصوص توسعه دهندگان
384 (برنامه‌نويسان) نيز وجوددارد. براي عضويت در اين گروه يك نامه به آدرس زير با
385 محتويات مشخص شده ارسال كنيد. </font><font face="Tahoma">
387 href="mailto:pgsql-hackers-request@PostgreSQL.org"><font size="3">pgsql-hackers-request@PostgreSQL.org</font></A><span lang="en-us">
388 </span> </font></p>
390 <PRE><font face="Tahoma"> subscribe
394 <p dir="rtl"><font face="Tahoma">گروههاي پستي ديگري نيز در زمينه
395 <span lang="en-us">PostgreSQL</span>‌ وجود دارد كه مي‌توانيد در سايت <A
396 href="http://www.postgresql.org/">http://www.postgresql.org</A> ببينيد.</font></p>
397 <p dir="rtl"><font face="Tahoma">همچنين يك كانال <span lang="en-us">IRC</span>
398 روي <span lang="en-us">Freenode</span> و <span lang="en-us">EFNet</span> بنام <I>PostgreSQL<span lang="en-us">#</span> </I>
399 وجود دارد. شما مي‌توانيد از فرمان يونيكسي </font> <CODE>
400 <font face="Tahoma">irc -c '#PostgreSQL'
401 "$USER" irc.phoenix.net.</font></CODE><font face="Tahoma"> يا </font> <CODE>
402 <font face="Tahoma">irc -c '#PostgreSQL' "$USER" irc.freenode.net<span lang="en-us">
403 </span>استفاده كنيد.</font></CODE></p>
404 <p dir="rtl"><font face="Tahoma">ليست شركتهايي كه از طريق آنها مي‌توانيد خدمات
405 پشتيباني تجاري در زمينه <span lang="en-us">PostgreSQL</span> دريافت كنيد در اين
406 آدرس <A
407 href="http://techdocs.postgresql.org/companies.php">http://techdocs.postgresql.org/companies.php</A></font><code><font face="Tahoma">
408 موجود است.</font></code></p>
409 <H4 dir="rtl"><font face="Tahoma"><A name=1.7>1.7</A>) </font><span lang="fa"><font face="Tahoma">
410 آخرين نسخه اعلام شده چيست؟</font></span></H4>
411 <p dir="rtl"><font face="Tahoma">آخرين نسخه <span lang="en-us">PostgreSQL</span>‌<span lang="en-us">
412 </span> كه وجود دارد 7.4.3 است.</font></p>
413 <p dir="rtl"><font face="Tahoma">هدف ما آن است كه هر 6 ماه تا 8 ماه يك نسخه جديد
414 ارائه شود.</font></p>
415 <H4 dir="rtl"><font face="Tahoma"><A name=1.8>1.8</A>) </font><span lang="fa"><font face="Tahoma">چه مستندات و راهنمائيهايي وجود دارند؟</font></span></H4>
416 <p dir="rtl"><font face="Tahoma">چندين كتابچه و صفحات راهنما و مثالهاي كوچك
417 همراه با متن اصلي <span lang="en-us">PostgreSQL</span>‌ در شاخه
418 <span lang="en-us">doc </span>وجود دارد. براي ديدن صفحات راهنما مي‌توانيد به
419 سايت <A
420 href="http://www.postgresql.org/docs">http://www.PostgreSQL.org/docs</A><span lang="en-us">
421 </span> نيز مراجعه نماييد.</font></p>
422 <p dir="rtl"><font face="Tahoma">دو كتاب در زمينه <span lang="en-us">PostgreSQL</span>‌<span lang="en-us">
423 </span> در آدرس‌هاي <A
424 href="http://www.postgresql.org/docs/awbook.html">
425 http://www.PostgreSQL.org/docs/awbook.htm</A>
427 href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook</A>
428 وجود دارد. ليستي از كتابهايي كه قابل خريد است در آدرس <A
429 href="http://techdocs.postgresql.org/techdocs/bookreviews.php">http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</A><span lang="en-us">
430 </span>وجود دارد. همچنين ليستي از مقالات فني در مورد <span lang="en-us">
431 PostgreSQL</span> در آدرس <A
432 href="http://techdocs.postgresql.org/">http://techdocs.PostgreSQL.org</A><span lang="en-us">
433 </span>وجود دارد.</font></p>
434 <p dir="rtl"><font face="Tahoma">برنامه <span lang="en-us">psql</span> يك دستور
435 <span lang="en-us">d\</span> دارد كه اطلاعاتي در مورد انواع داده‌هاي قابل تعريف
436 و عملگر‌ها و توابع و ... به ما نشان مي‌دهد. در سايت اصلي ما اطلاعات بيشتري را
437 مي‌توانيد پيدا كنيد.</font></p>
438 <H4 dir="rtl"><font face="Tahoma"><A name=1.9>1.9</A>)
439 <span lang="fa">چگونه مي‌توانم ازاشكالات شناخته شده و يا امكاناتي كه در اين
440 پايگاه داده وجود ندارد مطلع شوم؟</span></font></H4>
441 <p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL</span> يك زير
442 مجموعه پيشرفته از <span lang="en-us">SQL-92</span> را پشتيباني مي‌كند. در ليست
443 <span lang="en-us"> </span><A
444 href="http://developer.postgresql.org/todo.php">TODO</A> اِشكالات
445 شناخته شده يا امكاناتي كه وجود ندارد و يا برنامه‌‌هاي آينده آمده است.</font></p>
446 <H4 dir="rtl"><font face="Tahoma"><A name=1.10>1.10</A>) </font><span lang="fa"><font face="Tahoma">چگونه مي‌توانم زبان </font></span>
447 <font face="Tahoma">SQL</font><span lang="fa"><font face="Tahoma"> را ياد بگيرم؟</font></span></H4>
448 <p dir="rtl"><font face="Tahoma">كتاب <span lang="en-us">PostgreSQL</span> در
449 آدرس <span lang="en-us">SQL</span> <A
450 href="http://www.postgresql.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A><span lang="en-us">
451 </span>‌را آموزش مي‌دهد. همچنين يك كتاب در آدرس <A
452 href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook </A>
453 وجود دارد. يك راهنماي خيلي خوب هم در سايت‌هاي <A
454 href="http://www.intermedia.net/support/sql/sqltut.shtm">http://www.intermedia.net/support/sql/sqltut.shtm</A>
456 href="http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM">http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM</A>
457 و <A href="http://sqlcourse.com/">http://sqlcourse.com</A> در مورد
458 <span lang="en-us">SQL</span> وجود دارد.</font></p>
459 <p dir="rtl"><font face="Tahoma">كتاب ديگري كه مي‌توان براي يادگيري
460 <span lang="en-us">SQL</span> از آن استفاده كرد كتاب <span lang="en-us">"SQL</span>
461 را در 21 روز ياد بگيريد،‌ ويرايش دوم<span lang="en-us">" </span>در سايت <A
462 href="http://members.tripod.com/er4ebus/sql/index.htm">http://members.tripod.com/er4ebus/sql/index.htm</A><span lang="en-us">
463 </span>مي‌باشد.</font></p>
464 <p dir="rtl"><font face="Tahoma">تعداد زيادي از كاربران كتاب <span lang="en-us">
465 The Practical SQL</span> را ترجيح مي‌دهند. كتاب ديگر <span lang="en-us">The
466 Complete Refrence SQL</span> انتشارات <span lang="en-us">McGraw-Hill</span>
467 مي‌باشد.</font></p>
468 <H4 dir="rtl"><font face="Tahoma"><A name=1.11>1.11</A>) </font><span lang="fa"><font face="Tahoma">
469 آيا </font></span><font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma">
470 مشكل </font></span><font face="Tahoma">Y2K</font><span lang="fa"><font face="Tahoma">‌
471 دارد يا خير؟</font></span></H4>
472 <p dir="rtl"><font face="Tahoma">خير،‌<span lang="en-us">PostgreSQL</span>‌ با
473 تاريخ‌هاي قبل و بعد از 2000 مشكلي ندارد.</font></p>
474 <H4 dir="rtl"><font face="Tahoma"><A name=1.12>1.12</A>) </font><span lang="fa"><font face="Tahoma">چگونه مي‌توانم به تيم برنامه نويس
475 </font></span><font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma">
476 ملحق شوم؟</font></span></H4>
477 <p dir="rtl"><font face="Tahoma">ابتدا،‌آخرين سورس را دونلود كرده و مستندات
478 مربوط به برنامه‌نويسي <span lang="en-us">PostgreSQL</span> را در سايت مطالعه
479 كنيد. سپس به گروههاي پستي ‌ <I>pgsql-patches </I>
480 و <i><span lang="en-us">pgsql-hackers
481 </span> </i>عضو شويد. در مرحله آخر وصله‌هاي با كيفيت بالا را به
482 <span lang="en-us">pgsql-patches</span> ارسال كنيد.</font></p>
483 <p dir="rtl"><font face="Tahoma">تعداد زيادي از برنامه‌نويسان وجود دارند كه
484 امتياز انجام تغييرات در <span lang="en-us">cvs</span>‌ را دارند. هر كدام از آنها
485 تعداد زيادي وصله‌‌ با كيفيت بالا به گروه ارسال كرده‌اند كه اعتماد گردانندگان
486 <span lang="en-us">PostgreSQL</span> را به دست آورده‌اند.</font></p>
487 <H4 dir="rtl"><font face="Tahoma"><A name=1.13>1.13</A>)
488 <span lang="fa">چگونه مي‌توانم يك اِشكال را به گروه برنامه نويس اعلام كنم؟</span></font></H4>
489 <p dir="rtl"><font face="Tahoma">لطفاً صفحه مربوط به اِشكالات <span lang="en-us">
490 PostgreSQL</span> را در سايت <A
491 href="http://www.postgresql.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bugs.php</A><span lang="en-us">
492 </span>مشاهده‌<span lang="en-us"> </span>كنيد. در اين سايت نحوه گزارش و ارسال يك
493 اشكال توضيح داده شده است.</font></p>
494 <p dir="rtl"><font face="Tahoma"><span lang="en-us"> </span>همچنين براي
495 ديدن نسخه‌هاي جديدتر <span lang="en-us">PostgreSQL</span> و يا وجود يك وصله جديد
496 از سايت <A
497 href="ftp://ftp.postgresql.org/pub">ftp://ftp.PostgreSQL.org/pub</A> بازديد
498 كنيد.</font></p>
499 <H4 dir="rtl"><font face="Tahoma"><A name=1.14>1.14</A>) </font><span lang="fa"><font face="Tahoma">
500 وضعيت </font></span>
501 <font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma">‌ در
502 مقايسه با ساير </font></span><font face="Tahoma">DBMS<span lang="fa">ها به چه
503 صورت است؟</span></font></H4>
504 <p dir="rtl"><font face="Tahoma">راههاي مختلفي براي اندازه‌گيري و مقايسه
505 نرم‌افزارها وجود دارد كه عبارتند از امكانات، كارايي، قابليت اعتماد، پشتيباني و
506 قيمت</font></p>
510 <dt><b><font face="Tahoma">امكانات</font></b></dt>
511 <dd><font face="Tahoma"><span lang="en-us">PostgreSQL</span> بيشتر امكانات
512 موجود در سيستم‌هاي پايگاه داده تجاري بزرگ نظير <span lang="en-us">
513 transactions, subselets, triggers, views, foreign key referential integrity
514 </span>و <span lang="en-us">sophisticated locking</span>‌ را دارد. در
515 <span lang="en-us">PostgreSQL</span>‌‌ امكاناتي وجود دارد كه پايگاههاي داده
516 ديگر آن را ندارند نظير <span lang="en-us">user-defined types</span>‌و
517 <span lang="en-us">Inheritance</span>‌و <span lang="en-us">rules</span>‌و
518 <span lang="en-us">multi-version concurrency control</span></font></dd>
522 <p dir="rtl"> <div dir="rtl">
523 <b><font face="Tahoma">كارايي</font></b><p><font face="Tahoma"><b>
524 </b>كارايي <span lang="en-us">PostgreSQL</span> در حد بقيه سيستم‌هاي تجاري و
525 متن باز است. در بعضي موارد سريعتر و در بعضي موارد از آنها كندتر است. در
526 مقايسه با <span lang="en-us">MySQL</span> براي كاربران بيشتر و درخواست‌هاي
527 پيچيده و بار زياد خواندن/نوشتن سريعتر است. در درخواست‌هاي ساده<span lang="en-us">
528 SELECT</span>‌ از <span lang="en-us">MySQL</span> كندتر است. البته
529 <span lang="en-us">MySQL</span> خيلي از امكانات <span lang="en-us">
530 PostgreSQL</span> كه در بالا به آن اشاره شد را ندارد. هدف اصلي ما امكانات و
531 قابليت اعتماد بالاست در ضمن آنكه تلاش مي‌كنيم تا كارايي آن نيز بهبود يابد.
532 در آدرس <A
533 href="http://openacs.org/philosophy/why-not-mysql.html">http://openacs.org/philosophy/why-not-mysql.html</A>
534 يك مقايسه جالب بين <span lang="en-us">MySQL</span> و <span lang="en-us">
535 PostgreSQL</span> وجود دارد. از طرف ديگر <span lang="en-us">MySQL</span>‌ يك
536 شركت است كه محصول خود را به صورت متن باز ارائه مي‌كند ولي براي نرم‌افزار غير
537 متن باز خود احتياج به ليسانس تجاري دارد بر خلاف <span lang="en-us">
538 PostgreSQL</span> كه يك گروه كاملاً متن باز هستند.</font></div>
540 <p dir="rtl"> <div dir="rtl">
542 <dt><b><font face="Tahoma">قابليت اطمينان</font></b></dt>
543 <dd><font face="Tahoma">ما فكر مي‌كنيم كه يك سيستم پايگاه داده‌اي كه مطمئن
544 نباشد ارزشي ندارد. ما تمام تلاشمان را براي ارائه كدهاي پايداري كه به خوبي
545 تست شده باشند و كمترين اِشكالات را داشته باشند مي‌كنيم. هر نسخه جديدي كه
546 ارائه مي‌شود حداقل يك ماه را در مرحله تست بتا مي‌گذراند. ما بر اين باور
547 هستيم كه قابليت اطمينان <span lang="en-us">PostgreSQL</span>‌ در مقايسه با
548 ساير سيستم‌هاي پايگاه داده قابل توجه است و نسخه‌هايي كه تاكنون ارائه شده است
549 نشان مي‌دهد كه ما توانايي ارائه يك سيستم قوي و محكم و مطمئن را كه آماده
550 بهره‌برداري است داريم.</font></dd>
556 <dt><b><font face="Tahoma">پشتيباني</font></b></dt>
557 <dd><font face="Tahoma">گروههاي پستي ما امكان ارتباط و تماس به گروه بزرگي از
558 برنامه نويسان و كاربران را مي‌دهد كه مي‌توانند در حل مشكلات به ديگران كمك
559 كنند. دسترسي مستقيم به برنامه‌نويسان و گروههاي كاربران و راهنماها و كداصلي
560 باعث مي‌شود كه پشتيباني <span lang="en-us">PostgreSQL</span> نسبت به ساير
561 پايگاههاي داده به نحو بهتري انجام شود. همچنين امكان ارائه خدمات پشتيباني به
562 صورت تجاري نيز وجود دارد. براي ديدن اطلاعات بيشتر به <A
564 section 1.6</A> مراجعه كنيد.</font></dd>
570 <dt><b><font face="Tahoma">قيمت</font></b></dt>
571 <dd><font face="Tahoma">هم براي استفاده تجاري و هم غير تجاري هيچ هزينه‌اي
572 نبايد پرداخت شود. هيچ محدوديتي براي انجام تغييرات در <span lang="en-us">
573 PostgreSQL</span> توسط استفاده كنندگان وجود ندارد به جز مواردي كه در ليسانس
574 <span lang="en-us">BSD</span> به آن اشاره شده است.</font></dd>
578 <H4 dir="rtl"><font face="Tahoma"><A name=1.15>1.15</A>)
579 <span lang="fa">من چگونه مي‌توانم از نظر مالي به </span>PostgreSQL<span lang="fa">
580 كمك كنم؟</span></font></H4>
581 <p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL </span> داراي
582 يك ساختار تشكيلاتي درجه اول است كه آن را مديون <span lang="en-us">Marc Fournier</span>‌
583 است كه اين ساختار را ايجاد كرده است.</font></p>
584 <p dir="rtl"><font face="Tahoma">كيفيت يك ساختار براي يك پروژه متن باز بسيار
585 اهميت دارد. يك ساختار خوب مي‌تواند مانع از حوادثي شود كه در حركت روبه‌جلوي پروژه
586 خللي وارد مي‌كنند.</font></p>
587 <p dir="rtl"><font face="Tahoma">البته اين ساختار تشكيلاتي ارزان نيست. هزينه‌هاي
588 ثابت ماهانه و روزمره براي نگهداري و حفظ اين ساختار مورد نياز است. اگر شما يا
589 شركت شما مايل است كه از نظر مالي به اين حركت كمك كند لطفاً به سايت <A
590 href="http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping</A>
591 مراجعه كرده و كمك خود را اهدا كنيد.</font></p>
592 <p dir="rtl"><font face="Tahoma">هر چند در صفحه اصلي عبارت <span lang="en-us">
593 PostgreSQL,Inc</span>‌ ذكر شده است ولي مشاركت عمدتاً براي پشتيباني از پروژه
594 <span lang="en-us">PostgreSQL</span>‌ مي باشد و نه براي يك شركت مشخص. اگر ترجيح
595 مي‌دهيد مي‌توانيد يك چك به آدرس مشخص شده ارسال كنيد.</font></p>
596 <p dir="rtl"><font face="Tahoma">اگر يك استفاده موفق از <span lang="en-us">
597 PostgreSQL</span> سراغ داريد لطفاً آن را به سايت <A
598 href="http://advocacy.postgresql.org/">http://advocacy.postgresql.org</A> گزارش
599 دهيد.</font></p>
602 <h2 align="center" dir="rtl"><font face="Tahoma"><span lang="fa">سوالات مربوط به
603 استفاده از پايگاه داده</span></font></h2>
604 <H4 dir="rtl"><font face="Tahoma"><A name=2.1>2.1</A>)
605 <span lang="fa">آيا هيچ درايور </span>ODBC</font><span lang="fa"><font face="Tahoma">‌
606 براي </font></span><font face="Tahoma">PostgreSQL<span lang="fa">
607 وجود دارد؟</span></font></H4>
608 <p dir="rtl"><font face="Tahoma"><span lang="fa">دو درايور </span>ODBC<span lang="fa">
609 بنامهاي </span>psqlODBC<span lang="fa">‌ و </span>OpenLink<span lang="fa"> براي
610 </span>PostgreSQL<span lang="fa">‌ وجود دارد.</span></font></p>
611 <p dir="rtl"><font face="Tahoma"><span lang="fa">براي گرفتن </span>psqlODBC<span lang="fa">
612 به سايت </span> <A
613 href="http://gborg.postgresql.org/project/psqlodbc/projdisplay.php">http://gborg.postgresql.org/project/psqlodbc/projdisplay.php</A><span lang="fa">
614 مراجعه كنيد.</span></font></p>
615 <p dir="rtl"><font face="Tahoma"><span lang="en-us">OpenLlink</span> را از اين
616 سايت <A
617 href="http://www.openlinksw.com/">http://www.openlinksw.com</A> مي‌توانيد
618 بگيريد. اين درايور با نرم‌افزارهاي مختلف <span lang="en-us">ODBC</span> كار
619 مي‌كند بنابراين شما قادر خواهيد بود با استفاده از <span lang="en-us">OpenLink</span>
620 روي اكثر سكو‌هايي كه نرم‌افزار<span lang="en-us">ODBC</span>‌دارند بدون مشكل به
621 <span lang="en-us">PostgreSQL</span> نيز متصل شويد.</font></p>
622 <p dir="rtl"><font face="Tahoma">اين محصول به كساني كه احتياج به خدمات پشتيباني
623 تجاري دارند فروخته مي‌شود. ولي نسخه آزاد اين نرم‌افزار هميشه در درسترس مي‌باشد.
624 براي كسب اطلاعات بيشتر سوالات خود را به آدرس <A
625 href="mailto:postgres95@openlink.co.uk">postgres95@openlink.co.uk</A><span lang="en-us">
626 </span>‌ارسال نماييد.</font></p>
627 <H4 dir="rtl"><font face="Tahoma"><A name=2.2>2.2</A>)
628 <span lang="fa">چه ابزارهايي براي استفاده از </span>PostgreSQL<span lang="fa">‌
629 با صفحات وب وجود دارد؟</span></font></H4>
630 <p dir="rtl"><font face="Tahoma">در سايت <A
631 href="http://www.webreview.com/">http://www.webreview.com</A> براي استفاده از
632 <span lang="en-us">PostgreSQL</span>‌ در صفحات وب راهنماييهاي خوبي وجود دارد.</font></p>
633 <P dir="rtl"><font face="Tahoma">براي تركيب و استفاده در صفحات وب زبان
634 <span lang="en-us">PHP</span>‌ يك واسط بسيار مناسب است. اطلاعات بيشتر راجع به
635 <span lang="en-us">PHP</span>‌در سايت <A
636 href="http://www.php.net/">http://www.php.net</A><span lang="en-us"> </span>وجود
637 دارد.</font></P>
638 <P dir="rtl"><font face="Tahoma">مثالهايي نيز با استفاده از <span lang="en-us">
639 Perl</span>‌ و<span lang="en-us"> CGI.pm</span> و <span lang="en-us">mod_perl</span>
640 وجود دارد.</font></P>
641 <H4 dir="rtl"><font face="Tahoma"><A name=2.3>2.3</A>)
642 <span lang="fa">آيا </span>PostgreSQL<span lang="fa">‌ يك واسط كاربري گرافيكي
643 دارد؟</span></font></H4>
644 <p dir="rtl"><font face="Tahoma">چند نرم افزار گرافيكي براي <span lang="en-us">
645 PostgreSQL</span>‌ وجود دارد كه شامل <span lang="en-us">pgAccess</span> درسايت <A
646 href="http://www.pgaccess.org/">http://www.pgaccess.org</A><span lang="en-us">
647 </span>و <span lang="en-us">pgAdmin III</span> در سايت <A
648 href="http://www.pgadmin.org/">http://www.pgadmin.org</A><span lang="en-us">
649 </span>و <span lang="en-us">RHDB Admin</span> در سايت <A
650 href="http://sources.redhat.com/rhdb/">http://sources.redhat.com/rhdb</A><span lang="en-us">
651 </span>و <span lang="en-us">Rekall</span> در سايت <A href="http://www.thekompany.com/products/rekall/">
652 http://www.thekompany.com/products/rekall<span lang="en-us"> </span></A> مي‌باشد.
653 همچنين يك <span lang="en-us">phpPgAdmin</span> هم در سايت <A href="http://phppgadmin.sourceforge.net/">
654 http://phppgadmin.sourceforge.net</A><span lang="en-us"> </span>وجود دارد كه يك
655 واسط وبي براي مديريت <span lang="en-us">PostgreSQL</span> مي‌باشد.</font></p>
656 <P dir="rtl"><font face="Tahoma">براي ديدن اطلاعات بيشتر راجع به نرم‌افزارهاي
657 گرافيكي براي <span lang="en-us">PostgreSQL</span> به آدرس <A
658 href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</A><span lang="en-us">
659 </span>مراجعه كنيد.</font></P>
660 <H4 dir="rtl"><font face="Tahoma"><A name=2.4>2.4</A>)
661 <span lang="fa">با چه زبانهاي برنامه‌نويسي مي‌توان با </span>PostgreSQL<span lang="fa">‌
662 ارتباط برقرار كرد؟</span></font></H4>
663 <p dir="rtl"><font face="Tahoma"><span lang="fa">بيشتر زبانهاي برنامه‌نويسي
664 مي‌توانند با </span>PostgreSQL<span lang="fa">‌ ارتباط برقرار كنند. به همراه
665 سورس </span>PostgreSQL<span lang="fa"> تعدادي از واسطهاي مورد نياز براي ارتباط
666 با پايگاه داده از طريق زبانهاي مختلف آمده است كه در زير ليست آنها را مشاهده
667 مي‌كنيد.</span></font></p>
670 <p dir="ltr" align="left"><font face="Tahoma">C (libpq) </font></li>
672 <p dir="ltr" align="left"><font face="Tahoma">Embedded C (ecpg) </font>
675 <p dir="ltr" align="left"><font face="Tahoma">Java (jdbc) </font></li>
677 <p dir="ltr" align="left"><font face="Tahoma">Python (PyGreSQL) </font>
680 <p dir="ltr" align="left"><font face="Tahoma">TCL (libpgtcl) </font></li>
682 <p dir="rtl" align="right"><span lang="fa"><font face="Tahoma">واسطهاي ديگر در
683 سايت </font></span><font face="Tahoma"> <A
684 href="http://gborg.postgresql.org/">http://gborg.postgresql.org</A>
685 <span lang="fa">در قسمت </span><i>Drivers/Interfaces</i><span lang="fa"> وجود
686 دارد.</span></font></p>
689 <h2 align="center" dir="rtl"><span lang="fa"><font face="Tahoma">سوالات مديريتي</font></span></h2>
690 <H4 dir="rtl"><font face="Tahoma"><A name=3.1>3.1</A>)
691 <span lang="fa">چگونه مي‌توانم </span>PostgreSQL<span lang="fa">‌ را در شاخه‌اي
692 غير از </span>/usr/local/pgsql/<span lang="fa"> نصب كنم؟</span></font></H4>
693 <p dir="rtl"><font face="Tahoma">موقع اجراي دستور <i><span lang="en-us">
694 configure</span> </i>از گزينه <span lang="en-us">prefix--</span> استفاده كنيد.</font></p>
695 <H4 dir="rtl"><font face="Tahoma"><A name=3.2>3.2</A>)
696 <span lang="fa">چرا موقعي كه من برنامه </span>postmaster<span lang="fa">‌ را
697 اجرا مي كنم پيام </span>Bad system call<span lang="fa">‌ و يا </span>core dump
698 <span lang="fa">‌مي‌گيرم؟</span></font></H4>
699 <p dir="rtl"><font face="Tahoma">به دلايل مختلف ممكن است اين اتفاق بيفتد. اما در
700 قدم اول شما مطمئن شويد كه كه امكانات اضافه <span lang="en-us">System V</span>‌
701 در كرنل شما نصب شده باشد. <span lang="en-us">PostgreSQL</span> براي اجرا شدن
702 نياز به استفاده از امكانات حافظه مشترك و سمافورها دارد.</font></p>
703 <H4 dir="rtl"><font face="Tahoma"><A name=3.3>3.3</A>)
704 <span lang="fa">چرا موقعي كه من سعي مي‌كنم برنامه </span>postmaster<span lang="fa">‌
705 را اجرا كنم خطاي</span> <I>IpcMemoryCreate</I> <span lang="fa">مي‌گيرم؟</span></font></H4>
706 <p dir="rtl"><font face="Tahoma">احتمالاً‌ قسمت ايجاد حافظه مشترك در كرنل به
707 درستي تنظيم نشده است و يا اينكه بايد فضاي حافظه اشتراكي در كرنل را زياد كرد.
708 ميزان دقيق حافظه مشترك مورد نياز بسته به معماري و نحوه استفاده از بافرها توسط
709 برنامه <span lang="en-us"><i>postmaster </i></span>دارد. براي بيشتر سيستم‌ها كه
710 با تنظيمات پيش‌فرض كار مي‌كنند مقدار اين حافظه حدود <span lang="en-us">1</span>
711 مگابايت است. براي ديدن اطلاعات بيشتر راجع به حافظه مشترك و سمافور به <A
712 href="http://www.postgresql.org/docs/view.php?version=current&idoc=1&file=kernel-resources.html">PostgreSQL
713 Administrator's Guide</A><span lang="en-us"> </span>مراجعه كنيد.</font></p>
714 <H4 dir="rtl"><font face="Tahoma"><A name=3.4>3.4</A>) <span lang="fa">چرا موقعي كه من سعي مي‌كنم برنامه </span>postmaster<span lang="fa">‌
715 را اجرا كنم خطاي</span> <I><span lang="fa"> </span>IpcSemaphoreCreate<span lang="fa">
716 </span></I><span lang="fa">مي‌گيرم؟</span></font></H4>
717 <p dir="rtl"><font face="Tahoma">اگر پيغام خطا<span lang="en-us"> </span><i>
718 (‌pcSemaphoreCreate: semget failed (No space left on devi<span lang="en-us">ce
719 </span> </i>باشد به اين معني است كه تعداد سمافورهاي تنظيم شده در كرنل كافي
720 نيست. <span lang="en-us">PostgreSQL</span>‌ براي هر فرايندي كه در
721 <span lang="en-us">backend</span> اجرا مي‌شود به يك سمافور نياز دارد. يك راه حل
722 موقت براي اين مسئله آن است كه <i><span lang="en-us">postmaster</span> </i>را با
723 اعمال محدوديت روي تعداد فرايندهايي كه مي‌تواند ايجاد كند اجرا كنيم. براي اينكار
724 از گزينه <span lang="en-us">N-</span> و يك عدد كمتر از 32 استفاده كنيد. راه حل
725 دائمي اين مشكل آن است كه پارامترهاي <span lang="en-us">SEMMNS, SEMMNI</span>
726 كرنل را افزايش دهيم.</font></p>
727 <P dir="rtl"><font face="Tahoma">در زمان دسترسي خيلي زياد به پايگاه داده، ‌
728 سمافورهاي نامعتبر مي‌توانند باعث <span lang="en-us">crash</span>‌ كردن سيستم
729 شوند.</font></P>
730 <P dir="rtl"><font face="Tahoma">اگر پيغام خطا چيز ديگري باشد احتمالاً به دليل
731 آن است كه كرنل از سمافورها پشتيباني نمي‌كند. براي ديدن اطلاعات بيشتر راهنماي
732 مديريتي <span lang="en-us">PostgreSQL</span> را مطالعه كنيد.</font></P>
733 <H4 dir="rtl"><font face="Tahoma"><A name=3.5>3.5</A>)
734 <span lang="fa">چگونه مي‌توانم اتصالات ساير ماشينها را كنترل كنم؟</span></font></H4>
735 <p dir="rtl"><font face="Tahoma">به صورت پيش فرض فقط از ماشيني كه
736 <span lang="en-us">PostgreSQL </span>روي آن در حال اجراست مي‌توان با استفاده از
737 سوكت‌هاي يونيكسي به آن متصل شد. ساير ماشين‌ها قادر نيستند به <span lang="en-us">
738 PostgreSQL</span> متصل شوند مگر آنكه گزينه <span lang="en-us">tcp_sockets</span>
739 در فايل <span lang="en-us">postgresql.conf</span> فعال شده و همچنين با اصلاح
740 فايل <span lang="en-us">PGDATA/ph_hba.conf</span> هويت‌شناسي مبتني بر ميزبان نيز
741 فعال شود. با اين كار مي‌توان اتصالات <span lang="en-us">TCP/IP</span> به
742 <span lang="en-us">PostgreSQL</span>‌ ايجاد كرد.</font></p>
743 <H4 dir="rtl"><font face="Tahoma"><A name=3.6>3.6</A>)
744 <span lang="fa">براي كارايي بالاتر و بهتر پايگاه داده من چه تنظيماتي را بايد
745 انجام دهم؟</span></font></H4>
746 <p dir="rtl"><font face="Tahoma">به طور حتم استفاده از انديس‌ها باعث بالا رفتن
747 سرعت پاسخ‌گويي به درخواست‌ها خواهد شد. دستور <span lang="en-us">EXPLAIN ANALYZE</span>
748 به شما امكان ديدن نحوه پردازش يك دستور توسط <span lang="en-us">PostgreSQL</span>
749 را مي‌دهد.</font></p>
750 <p dir="rtl"><font face="Tahoma">اگر شما تعداد زيادي<span lang="en-us"> INSERT</span>‌
751 داريد سعي كنيد آنها را با قرار دادن در يك فايل با دستور <span lang="en-us">COPY</span>‌
752 اجرا كنيد. اين دستور به مراتب از <span lang="en-us">INSERT</span> سريعتر است.
753 حتي‌الامكان سعي كنيد از تراكنشها استفاده نكنيد. تراكنشها مجموعه دستوراتي هستند
754 كه بيند <span lang="en-us">BEGIN</span> و ‍<span lang="en-us">COMMIT</span>
755 مي‌آيند. اگر يك دستور به صورت عادي اجرا شود <span lang="en-us">PostgreSQL</span>
756 خود آن دستور را به صورت يك تراكنش مستقل نگاه كرده و اجرا مي‌كند. موقعی كه
757 تغييرات زيادي در پايگاه داده انجام مي‌شود انديسهاي قبلي را حذف و مجدداً‌ ايجاد
758 كنيد.</font></p>
759 <p dir="rtl"><font face="Tahoma">استفاده از گزينه <span lang="en-us">o -F-</span>
760 در فرمان <i><span lang="en-us">postmaster</span></i> باعث غير فعال كردن
761 <span lang="en-us">()fsync</span> مي‌شود. اين دستور بعد از هر تراكنش اطلاعات را
762 روي هاردديسك منتقل مي‌كند.</font></p>
763 <p dir="rtl"><font face="Tahoma">براي افزايش تعداد بافرهاي حافظه اشتراكي از
764 گزينه <span lang="en-us">B-</span> به همراه فرمان <i><span lang="en-us">
765 postmaster</span></i> استفاده كنيد. توجه كنيد كه اگر اين عدد خيلي بزرگ باشد ممكن
766 است <i><span lang="en-us">postmaster</span></i> اصلاً‌ اجرا نشود. هر بافر 8 كيلو
767 بايت حافظه نياز دارد و تعداد بافرها به طور پيش فرض 64 است.</font></p>
768 <p dir="rtl"><font face="Tahoma">همچنين مي‌توان با گزينه <span lang="en-us">S-</span>
769 ميزان حافظه‌اي كه براي مرتب‌سازي‌هاي موقت توسط <span lang="en-us">PostgreSQL</span>
770 استفاده مي‌شود را افزايش داد. مقدار پيش فرض 512 كيلو بايت است.</font></p>
771 <p dir="rtl"><font face="Tahoma">استفاده از دستور <span lang="en-us">CLUSTER</span>
772 نيز براي بالا بردن كارايي موثر ا ست. دستور راهنماي <span lang="en-us">CLUSTER</span>
773 اطلاعات بيشتري در اين زمينه به شما مي‌دهد.</font></p>
774 <H4 dir="rtl"><font face="Tahoma"><A name=3.7>3.7</A>)
775 <span lang="fa">چه امكاناتي براي پيدا كردن اشكال‌ وجود دارد؟</span></font></H4>
776 <p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgerSQL</span>‌ امكانات
777 مختلفي براي گزارش دادن وضعيت خود دارد كه براي اشكال زدايي مي‌توان از آنها
778 استفاده كرد.</font></p>
779 <P dir="rtl"><font face="Tahoma">با استفاده از گزينه <span lang="en-us">enable-assert--</span>
780 تعداد زيادي <span lang="en-us">()assert</span> براي مونيتور كردن و توقف برنامه
781 در صورت بروز خطاهاي ناخواسته فعال مي‌شود.</font></P>
782 <P dir="rtl"><font face="Tahoma">هم <i><span lang="en-us">Postmaster</span></i>
783 و هم <i><span lang="en-us">postgres</span></i> گزينه‌هاي زيادي براي اشكال زدايي
784 دارند. موقعي كه <i><span lang="en-us">postmaster</span></i> را اجرا مي‌كنيد
785 خروجي استاندارد و خطا را سمت فايل <span lang="en-us">log</span> ارسال كنيد.</font></P>
787 <PRE><font face="Tahoma"> cd /usr/local/pgsql
788 ./bin/postmaster >server.log 2>&1 &
791 <P dir="rtl"><font face="Tahoma">اين كار يك فايل<span lang="en-us">
793 در بالاترين شاخه <span lang="en-us">PostgreSQL</span>‌ ايجاد مي‌كند. اين فايل
794 حاوي اطلاعات مفيدي در مورد مسائل و خطاهايي است كه براي سرور اتفاق افتاده است.
795 براي ديدن جزئيات بيشتر مي‌توان از <span lang="en-us">d-</span> به همراه
796 فرمان <i><span lang="en-us">postmaster</span>‌</i> استفاده كرد. گزينه
797 <span lang="en-us">d-</span> همچنين يك عدد مي‌گيرد كه نشان دهنده سطح جزئياتي است
798 كه در <span lang="en-us">Log</span>‌فايل نوشته مي‌شود. با بالابردن اين عدد حجم
799 اطلاعات توليد شده در <span lang="en-us">Log</span>فايل نيز افزايش مي‌يابد.</font></P>
800 <P dir="rtl"><font face="Tahoma">اگر <i><span lang="en-us">postmaster</span></i>
801 در حال اجرا نباشد، مي‌توانيم <span lang="en-us">postgres</span> را به طور مستقيم
802 از خط فرمان اجرا كرده و دستورات <span lang="en-us">SQL</span> را به آن
803 بدهيم. اين كار فقط براي اشكال‌يابي توصيه مي‌شود. توجه كنيد كه در اين حالت يك
804 دستور با كاراكتر <span lang="en-us">newline</span> خاتمه پيدا مي‌كند و نه با
805 <span lang="en-us">;. </span>اگر <span lang="en-us">postmaster</span> را با
806 امكانات اشكال‌يابي كامپيل كرده باشيد مي‌توانيد با استفاده از يك برنامه اشكال‌ياب
807 اجراي برنامه را مونيتور كنيد. </font></P>
808 <P dir="rtl"><font face="Tahoma">اگر <i><span lang="en-us">postmaster</span></i>
809 در حال اجرا باشد با دستور <span lang="en-us">psql</span> مي‌توان به
810 <span lang="en-us">postgres</span> متصل شد. با پيدا كردن <span lang="en-us">PID</span>
811 فرايند <span lang="en-us">postgres</span> كه <span lang="en-us">psql</span> به
812 آن متصل شده است مي‌توان آن را مونيتور كرد. براي اينكار بايد يك برنامه اشكال‌ياب
813 را به آن <span lang="en-us">pid</span> متصل كرد. اگر بخواهيم بالا آمدن
814 <span lang="en-us">postgres</span> را مونيتور كنيم كافي است<span lang="en-us">
815 "PGOPTIONS="-W</span> <span lang="en-us">n</span> و <span lang="en-us">psql</span>
816 را اجرا كنيم. اين كار باعث مي‌شود كه <span lang="en-us">postgres</span> با
817 <span lang="en-us">n</span> ثانيه تاخير اجرا شود و در اين فاصله شما مي‌توانيد
818 برنامه اشكال‌ياب را به آن متصل كرده و با قرار دادن يك نقطه توقف روند اجراي
819 آن را مونيتور كنيد.</font></P>
820 <P dir="rtl"><font face="Tahoma"><i><span lang="en-us">postgres</span></i>
821 گزينه‌هاي <span lang="en-us">s-</span>‌ و <span lang="en-us">A-</span> و
822 <span lang="en-us">t-</span>‌ دارد كه براي پيدا كردن اشكالات بسيار مناسب هستند.</font></P>
823 <p dir="rtl"><font face="Tahoma">شما مي‌توانيد <span lang="en-us">postgreSQL</span>
824 را با امكانات <span lang="en-us">profiling</span> كامپيل كنيد. اين كار باعث
825 مي‌شود كه زمان اجراي دقيق هر تابع در برنامه مشخص شود. خروجي‌هاي توليد شده در اين
826 حالت در فايل <span lang="en-us">DLINUX_PROFILE.</span> ريخته مي‌شود.</font></p>
827 <H4 dir="rtl"><font face="Tahoma"><A name=3.8>3.8</A>)
828 <span lang="fa">چرا موقعي كه من مي‌خواهم به پايگاه داده وصل شوم پيام</span> <I>"Sorry, too many clients"
829 <span lang="fa">‌</span></I><span lang="fa">مي‌گيرم؟</span></font></H4>
830 <p dir="rtl"><font face="Tahoma">شما بايد حداكثر تعداد فرايندهاي همزمان <i>
831 <span lang="en-us">postmaster</span></i> را افزايش دهيد. مقدار پيش فرض 32 است.
832 براي افزايش آن مي‌توان از گزينه <span lang="en-us">N-</span> استفاده كرد و يا
833 فايل <i><span lang="en-us">postgresql.conf</span></i> را اصلاح نمود</font></p>
834 <p dir="rtl"><font face="Tahoma">توجه كنيد كه اگر <span lang="en-us">N-</span>
835 مقداري بيشتر از 32 داشته باشد بايد مقدار <span lang="en-us">B-</span> را نيز
836 افزايش دهيم. اين مقدار بايد حداقل دو برابر مقدار <span lang="en-us">N-</span>‌
837 باشد. براي اعداد خيلي بالا بايد بعضي از پارامترهاي كرنل را نيز اصلاح كرد.
838 پارامترهايي نظير حداكثر اندازه حافظه اشتراكي <span lang="en-us">SHMMAX</span> ،
839 حداكثر تعداد سمافورها<span lang="en-us"> SEMMNI</span>‌ و <span lang="en-us">
840 SEMMNS </span>، حداكثر تعداد فرايندها <span lang="en-us">NPROC</span>، حداكثر
841 فرايندهاي يك كاربر <span lang="en-us">MAXUPRC</span> و حداكثر فايلهاي باز
842 <span lang="en-us">NFILE</span> و <span lang="en-us">NINODE. </span>يكي از
843 دلايلي كه تعداد اتصالات همزمان <span lang="en-us">postgreSQL</span> محدود است آن
844 است كه نيازهاي <span lang="en-us">PostgreSQL</span> بيش از منابع موجود سيستم
845 نباشد.</font></p>
846 <H4 dir="rtl"><font face="Tahoma"><A name=3.9>3.9</A>) <span lang="fa">
847 در شاخه </span> <I>pgsql_tmp</I> <span lang="fa"> چه چيزي قرار دارد؟</span></font></H4>
848 <p dir="rtl"><font face="Tahoma">دراين شاخه فايلهاي موقتي قرار دارد كه با اجراي
849 درخواستها به وجود آمده است. به عنوان مثال اگر براي اجراي دستور
850 <span lang="en-us">order by</span> نياز به انجام مرتب سازي باشد و در صورتي كه
851 حافظه مشخص شده با گزينه <span lang="en-us">S-</span> براي اينكار كافي نباشد
852 سيستم يك فايل موقت در اين شاخه ايجاد مي‌كند تا عمل مرتب سازي را انجام دهد.</font></p>
853 <P dir="rtl"><font face="Tahoma">فايلهاي موقت معمولاً به صورت اتوماتيك پاك
854 مي‌شود اما اگر <span lang="en-us">postgreSQL</span> در حين مرتب سازي
855 <span lang="en-us">crash</span>‌ كند آن فايلها باقي مي‌مانند. با
856 <span lang="en-us">stop</span> و <span lang="en-us">start</span> كردن برنامه <i>
857 <span lang="en-us">postmaster</span></i> اين فايلها پاك مي‌شوند.</font></P>
858 <H4 dir="rtl"><font face="Tahoma"><A name=3.10>3.10</A>)
859 <span lang="fa">چرا براي به روز كردن نسخه پايگاه داده من بايد كل داده ها را
860 </span>dump<span lang="fa">‌ و مجدداً </span>restore<span lang="fa"> كنم؟</span></font></H4>
861 <p dir="rtl"><font face="Tahoma">تيم برنامه نويس <span lang="en-us">postgreSQL</span>
862 در نسخه‌هاي ارائه شده كه فقط <span lang="en-us">minor</span> آنها متفاوت است فقط
863 تغييرات كوچكي اعمال مي‌كنند؛ بنابراين براي به روز كردن از نسخه
864 <span lang="en-us">7.2</span>‌به 7.2.1<span lang="en-us"> </span>نيازي به
865 <span lang="en-us">dump</span> و <span lang="en-us">restore</span> نيست. اما در
866 نسخه‌هايي كه <span lang="en-us">major</span> آنها تغيير مي‌كند غالباً ساختار
867 داخلي جداول و فايلهاي داده تغيير مي‌كند. اين تغييرات معمولاً‌ پيچيده هستند. براي
868 انتقال داده‌هاي موجود در پايگاه داده در اين حالت بايد ‌از <span lang="en-us">
869 dump</span> و <span lang="en-us">restore</span> استفاده كرد.</font></p>
870 <P dir="rtl"><font face="Tahoma">در نسخه‌هايي كه ساختار روي ديسك تغييري نمي‌كند
871 مي توان از برنامه <span lang="en-us">pg_upgrade</span> براي به روز كردن پايگاه
872 داده استفاده كرد بدون اينكه نيازي به استفاده از <span lang="en-us">dump</span> و
873 <span lang="en-us">restore </span> باشد. در يادداشتي كه به همراه هر توزيع
874 مي‌آيد ذكر شده است كه آيا برنامه <span lang="en-us">pg_upgrade</span> براي اين
875 توزيع وجود دارد يا خير.</font></P>
876 <H4 dir="rtl"><font face="Tahoma"><A name=3.11>3.11</A>)
877 <span lang="fa">از چه سخت افزاري بايد استفاده كنم؟</span><BR>
879 <P dir="rtl"><font face="Tahoma">چون اكثر سخت‌افزارهاي <span lang="en-us">PC
880 </span> سازگار هستند مردم فكر مي‌كنند كه كيفيت آنها نيز يكسان است. در
881 حاليكه اينطور نيست. استفاده از هاردهاي <span lang="en-us">SCSI</span> و
882 حافظه‌هاي <span lang="en-us">ECC</span> و مادربردهاي با كيفيت بالا نسبت به سخت
883 افزارهاي ارزانتر نتايج بهتري از نظر كارايي و پايداري سيستم بهمراه خواهد داشت.<span lang="en-us">
884 PostgreSQL</span> روي بيشتر سخت افزارها اجرا مي‌شود اما اگر كارايي و اطمينان
885 فاكتورهاي مهمي هستند بايد سخت افزار مناسب استفاده شود. در گروههاي پستي در مورد
886 سخت افزار مناسب و انتخاب آن بحث شده است. </font></P>
889 <H2 align=center dir="rtl"><span lang="fa"><font face="Tahoma">سوالات عملياتي</font></span></H2>
890 <H4 dir="rtl"><font face="Tahoma"><A name=4.1>4.1</A>) تفاوت بين
891 <span lang="en-us">binary cursors</span> و <span lang="en-us">Normal cursors</span>
892 چيست؟</font></H4>
893 <p dir="rtl"><font face="Tahoma"><span lang="fa">راهنماي دستور </span>DECLARE<span lang="fa">‌
894 را مطالعه كنيد.</span></font></p>
895 <H4 dir="rtl"><font face="Tahoma"><A name=4.2>4.2</A>)
896 <span lang="fa">من چگونه مي‌توانم فقط روي چند رديف اول
897 يا يك رديف تصادفي درخواست </span>SELECT<span lang="fa">‌
898 بزنم؟</span></font></H4>
899 <p dir="rtl"><font face="Tahoma"><span lang="fa">راهنماي دستور </span>FETCH
900 <span lang="fa"> يا </span>SELECT...LIMIT<span lang="fa"> را ببينيد.</span></font></p>
901 <P dir="rtl"><font face="Tahoma"><span lang="fa">در واقع كل درخواست بايد بررسي و
902 ارزيابي شود حتي اگر شما فقط چند رديف اول را بخواهيد. براي مثال درخواست </span>
903 ORDER BY<span lang="fa"> را در نظر بگيريد. اگر انديس يا نمايه‌اي براي </span>ORDER
904 BY<span lang="fa"> وجود داشته باشد،‌</span>postgreSQL<span lang="fa">‌ ممكن است
905 بتواند فقط چند سطر اول درخواستي را ارزيابي كند و يا اينكه كل درخواست پردازش شود
906 تا تعداد رديف‌هاي درخواستي توليد شود.</span></font></P>
907 <P dir="rtl"><span lang="fa"><font face="Tahoma">براي انتخاب يك سطر تصادفي به
908 روش زير عمل مي‌كنيم:</font></span><div dir="ltr">
909 <PRE><font face="Tahoma"> SELECT col
915 <H4 dir="rtl"><font face="Tahoma"><A name=4.3>4.3</A>)
916 <span lang="fa">من چگونه مي‌توانم ليستي از جداول يا ساير چيزهايي كه در </span>
917 psql<span lang="fa">‌ وجود دارد را ببينم؟</span></font></H4>
918 <P dir="rtl"><font face="Tahoma"><span lang="fa">براي ديدن ليست جداول دستور
919 </span>dt\<span lang="fa"> را در برنامه </span><i>psql</i><span lang="fa"><i>‌</i>
920 استفاده كنيد. براي ديدن ليست كامل فرمانها </span>?\<span lang="fa"> را اجرا
921 كنيد. راه ديگر خواندن متن برنامه </span>psql<span lang="fa">‌ است كه در شاخه
922 </span> <I>pgsql/src/bin/psql/describe.c <span lang="fa">‌</span></I><span lang="fa">قرار
923 دارد.<I> </I>اين فايل حاوي فرامين </span>SQL<span lang="fa">يي است كه خروجي را
924 براي دستوراتي كه با </span>\<span lang="fa">‌در </span>psql<span lang="fa">
925 شروع مي‌شوند توليد مي‌كنند. راه ديگر اجراي </span>psql<span lang="fa"> با گزينه
926 </span>E-<span lang="fa">‌است. اينكار باعث مي‌شود كه </span>psql<span lang="fa">
927 قبل از اجرا هر دستور </span>SQL<span lang="fa">‌متناظر آن را نشان دهد. </span>
928 PostgreSQL<span lang="fa">‌همچنين يك برنامه </span>SQLi<span lang="fa"> دارد كه
929 مي‌توان با استفاده از آن اطلاعات داخلي پايگاه داده را استخراج كرد.</span></font></P>
930 <H4 dir="rtl"><font face="Tahoma"><A name=4.4>4.4</A>)
931 <span lang="fa">چگونه يك ستون جدول را حذف مي‌كنيد؟ چگونه نوع داده آن را عوض
932 كنيم؟</span></font></H4>
933 <P dir="rtl"><font face="Tahoma"><span lang="fa">حذف يك ستون در توزيع </span>7.3
934 <span lang="fa">با استفاده از دستور </span>ALTER TABLE DROP COLUMN<span lang="fa">
935 اضافه شده است. در نسخه‌هاي قبلي به روش زير عمل كنيد:</span></font></P>
937 <PRE><font face="Tahoma"> BEGIN;
938 LOCK TABLE old_table;
939 SELECT ... -- <span lang="fa">تمام ستونها غير از ستوني كه مي‌خواهيد آن را حذف كنيد را در اينجا بياوريد</span>
942 DROP TABLE old_table;
943 ALTER TABLE new_table RENAME TO old_table;
947 <P dir="rtl"><span lang="fa"><font face="Tahoma">براي عوض كردن نوع داده يك ستون
948 به روش زير عمل كنيد:</font></span></P>
950 <PRE><font face="Tahoma"> BEGIN;
951 ALTER TABLE tab ADD COLUMN new_col <I>new_data_type</I>;
952 UPDATE tab SET new_col = CAST(old_col AS <I>new_data_type</I>);
953 ALTER TABLE tab DROP COLUMN old_col;
957 <H4 dir="rtl"><font face="Tahoma"><A name=4.5>4.5</A>)
958 <span lang="fa">حداكثر اندازه يك رديف،‌ جدول و خود پايگاه داده چقدر است؟</span></font></H4>
959 <p dir="rtl"><span lang="fa"><font face="Tahoma">محدوديتها عبارتند از:</font></span></p>
961 <PRE><font face="Tahoma"> <span lang="fa">حداكثر اندازه پايگاه داده </span> <span lang="fa">نامحدود (تا 32 ترابايت وجود دارد)</span>
962 <span lang="fa">حداكثر اندازه يك جدول</span> <span lang="fa">32 ترابايت</span>
963 <span lang="fa">حداكثر ا ندازه يك رديف</span> <span lang="fa">1.6 ترابايت</span>
964 <span lang="fa">حداكثر اندازه يك فيلد</span> <span lang="fa">1 گيگا بايت</span>
965 <span lang="fa">حداكثر اندازه رديفهاي يك جدول</span> <span lang="fa"> نا محدود</span>
966 <span lang="fa">حداكثر ستونهاي يك جدول</span> <span lang="fa"> بسته به نوع جدول بين 250 تا 6000 </span>
967 <span lang="fa">حداكثر انديسهاي يك جدول نا محدود</span>
969 <p dir="rtl"><span lang="fa"><font face="Tahoma">البته در حالت نامحدود نيز ما
970 محدود به حجم هاردديسك و فضاي حافظه خواهيم بود. در صورتي
971 که مقادير مشخص شده به عنوان
972 نامحدود به صورت غير معمولي بزرك شوند كارايي سيستم كاهش خواهد يافت.</font></span></p>
973 <P dir="rtl"><span lang="fa"><font face="Tahoma">براي ذخيره كردن جداول با اندازه
974 خيلي بزرگ نيازي نيست كه سيستم عامل امكان ايجاد فايلهاي بزرگ را داشته باشد. بلكه
975 جداول خيلي بزرگ به صورت فايلهايي به حجم يك گيگا بايت نگاهداري مي‌شوند.</font></span></P>
976 <P dir="rtl"><font face="Tahoma"><span lang="fa">اگر اندازه بلوكهاي داده را
977 برابر 32 كيلو بايت قرار دهيم حداكثر اندازه جدول و حداكثر تعداد ستونها 4 برابر
978 خواهد شد.</span></font></P>
979 <H4 dir="rtl"><font face="Tahoma"><A name=4.6>4.6</A>)
980 <span lang="fa">چقدر فضاي ديسك سخت براي ذخيره كردن داده‌‌هاي يك فايل متني مورد
981 نياز است؟</span></font></H4>
982 <P dir="rtl"><font face="Tahoma"><span lang="fa">يك پايگاه داده </span>
983 PostgreSQL<span lang="fa">‌ تا 5 برابر فضايي روي هاردديسك براي نگاهداري يك فايل
984 متني نياز دارد.</span></font></P>
985 <P dir="rtl"><font face="Tahoma"><span lang="fa">به عنوان مثال يك فايل با 100000
986 خط را در نظر بگيريد كه در هر خط يك عدد صحيح و يك توضيح متني آمده است. فرض كنيد
987 كه رشته متني به طور متوسط 20 بايت باشد. اندازه فايل برابر 2.8 مگا بايت خواهد بود
988 ولي </span>PostgreSQL<span lang="fa"> براي نگاهداري اين فايل به 6.4 مگا بايت
989 اطلاعات نياز خواهد داشت.</span></font></P>
991 <PRE><font face="Tahoma"> 32 bytes: <span lang="fa">اندازه سرايند هر خط به طور تقريبي</span>
992 24 bytes: <span lang="fa">يك عدد صحيح و يك رشته 24 بايتي</span>
993 + 4 bytes: <span lang="fa">اشاره گر روي صفحه به يك چندتايي</span>
994 ----------------------------------------
995 60 bytes <span lang="fa">در هر رديف</span>
997 <span lang="fa">اندازه صفحات داده در </span>PostgreSQL<span lang="fa"> برابر با 8 كيلو بايت است</span>
998 8192 <span lang="fa">تعداد بايت‌ها در هر صفحه</span>
999 ------------------- = 136 <span lang="fa">تعداد رديف‌ها در يك صفحه پايگاه داده</span>
1000 60 <span lang="fa"> تعداد بايت‌هاي هر رديف</span>
1002 100000 <span lang="fa"> تعداد رديفها</span>
1003 -------------------- = <span lang="fa">تعدادصفحات پايگاه داده</span>
1004 128 <span lang="fa">تعداد رديفها در هر صفحه</span>
1006 735 <span lang="fa">تعداد صفحات</span> * 8192 <span lang="fa">تعداد بايت‌هاي هر صفحه</span> = 6,021,120 <span lang="fa">مگا بايت</span>
1009 <P dir="rtl"><span lang="fa"><font face="Tahoma">سربار انديسها يا نمايه‌ها از
1010 اين مقدار كمتر است ولي چون شامل خود داده‌ها هم هست </font></span>
1011 <font face="Tahoma">م<span lang="fa">مکن است اندازه آنها هم بزرگ شود</span>.</font></P>
1012 <p dir="rtl"><font face="Tahoma">NULL<span lang="fa">ها به صورت </span>bitmap<span lang="fa">
1013 ذخيره مي‌شوند و از اينرو فضاي بسيار كمي را اشغال مي‌كنند.</span></font></p>
1014 <H4 dir="rtl"><font face="Tahoma"><A name=4.7>4.7</A>)
1015 <span lang="fa">چگونه مي‌توانم بفهمم كه چه كاربران،‌ پايگاه داده،‌ نمايه و
1016 جداولي در سيستم تعريف شده است؟</span></font></H4>
1017 <P dir="rtl"><font face="Tahoma"><i>psql<span lang="fa"> </span></i>
1018 <span lang="fa">تعداد زيادي دستور دارد كه با </span>\<span lang="fa"> شروع
1019 مي‌شوند و اين اطلاعات را در اختيار ما قرار مي‌دهند. براي ديدن آنها دستور </span>
1020 ?\ <span lang="fa"> را اجرا كنيد. همچنين جداول سيستمي كه نام آنها</span>
1021 <span lang="fa">با
1022 </span>pg<span lang="fa">_</span> <span lang="fa">‌شروع مي‌شود نيز اين اطلاعات
1023 را در خود دارند. اجراي برنامه </span>psql<span lang="fa"> با گزينه </span>l-
1024 <span lang="fa"> نيز باعث نشان دادن ليست تمام پايگاههاي داده مي‌شود.</span></font></P>
1025 <P dir="rtl"><font face="Tahoma"><span lang="fa">همچنين فايل </span> <I>pgsql/src/tutorial/syscat.source<span lang="fa">
1026 </span></I><span lang="fa">نيز فرمانهاي </span>SELECT<span lang="fa"> كه با
1027 استفاده از آن مي‌توان اطلاعات پايگاه داده را استخراج كرد شرح داده است.</span></font></P>
1028 <H4 dir="rtl"><font face="Tahoma"><A name=4.8>4.8</A>)
1029 <span lang="fa">چرا درخواستهاي من كند اجرا مي‌شوند يا چرا از نمايه ها استفاده
1030 نمي‌كنند؟</span></font></H4>
1031 <p dir="rtl"><span lang="fa"><font face="Tahoma">به طور معمول </font></span>
1032 <font face="Tahoma"><span lang="fa">براي درخواستها
1033 از نمايه‌ها استفاده نمي‌شود.
1034 تنها در صورتي از نمايه‌ها استفاده مي‌شود كه اندازه جدول از يك اندازه حداقل
1035 بزرگتر باشد و درخواست هم فقط قسمتي از رديف‌هاي جدول را انتخاب كرده باشد. دليل
1036 اين كار آن است كه دسترسي‌هاي تصادفي به هاردديسك كه به خاطر نمايه‌ها ايجاد مي‌شود
1037 ممكن است از خواندن مستقيم جدول يا خواندن ترتيبي ركوردها كندتر باشد.</span></font></p>
1038 <p dir="rtl"><font face="Tahoma"><span lang="fa">براي تعيين اينكه از نمايه
1039 استفاده شود يا خير، </span>PostgreSQL<span lang="fa"> بايد اطلاعات آماري را در
1040 مورد يك جدول بداند. اين اطلاعات توسط دستور </span>ANALYZE<span lang="fa"> و
1041 </span>VACUUM ANALYZE<span lang="fa"> به دست مي‌آيد. با استفاده از اين اطلاعات،‌
1042 بهينه ساز از تعداد رديف‌هاي يك جدول اطلاع پيدا مي‌كند و بهتر مي‌تواند تعيين كند
1043 كه آيا از نمايه استفاده شود يا خير. اطلاعات آماري همچنين براي تعيين ترتيب الحاق
1044 و روشهاي الحاق به صورت بهينه نيز كاربرد دارد. جمع آوري اطلاعات آماري بايد به صورت
1045 دوره‌اي همزمان با تغيير داده‌هاي جدول انجام شود.</span></font></p>
1046 <P dir="rtl"><font face="Tahoma"><span lang="fa">نمايه‌ها به طور معمول همراه با
1047 دستور </span>ORDER BY<span lang="fa"> به كار برده نمي‌شوند. براي يك جدول بزرگ يك
1048 پيمايش ترتيبي همراه با دستور مرتب سازي از به كار بردن نمايه‌ها سريعتر خواهد بود.</span></font></P>
1049 <p dir="rtl"><font face="Tahoma"><span lang="fa">اما اگر همراه با </span>ORDER
1050 BY<span lang="fa">‌ از </span>LIMIT<span lang="fa"> استفاده شود اغلب از نمايه‌ها
1051 استفاده مي‌شود چون فقط قسمتي از جدول
1052 برگردانده مي‌شود. در حقيقت هر چند</span>
1053 <span lang="fa">توابع ()</span>MIN<span lang="fa">‌ و </span>()MAX
1054 <span lang="fa">از نمايه‌ها استفاده نمي‌كنند ولي مي‌توانيم با استفاده از دستور
1055 زير با استفاده از نمايه‌ها و دستور </span>ORDER BY<span lang="fa"> و </span>
1056 LIMIT<span lang="fa">‌ ، آنها را به دست آوريم.</span></font></p>
1058 <PRE><font face="Tahoma"> SELECT col
1060 ORDER BY col [ DESC ]
1064 <P dir="rtl"><font face="Tahoma"><span lang="fa">اگر شما فكر مي‌كنيد كه بهينه
1065 ساز سيستم در انتخاب پيمايش ترتيبي اشتباه كرده است با دستور </span>'</font><CODE><font face="Tahoma">SET enable_seqscan TO 'off'</font></CODE><font face="Tahoma"><span lang="fa">
1066 مي‌توانيد ببينيد آيا استفاده از نمايه‌ها باعث افزايش سرعت درخواست‌ها خواهد شد
1067 يا خير.</span></font></P>
1068 <P dir="rtl"><font face="Tahoma"><span lang="fa">استفاده از نمايه‌ها هنگامي كه
1069 از علائم ويژه نظير </span>LIKE<span lang="fa"> و </span>~<span lang="fa">
1070 استفاده مي‌كنيد فقط در بعضي شرايط خاص كه در اينجا ذكر شده است ممكن است:</span></font></P>
1073 <p dir="rtl"><font face="Tahoma"><span lang="fa">ابتداي رشته جستجو بايد به
1074 طور صريح مشخص باشد براي مثال:</span></font></li>
1076 <p dir="rtl"><span dir="rtl"><font face="Tahoma"><span lang="fa">- دستورات
1077 </span>LIKE<span lang="fa"> نبايد با علامت
1078 </span>%<span lang="fa"> شروع
1079 شوند</span></font></span></p>
1080 <p dir="rtl"><font face="Tahoma"><span lang="fa">- الگوهاي منظمي كه با
1081 </span>~<span lang="fa"> مي‌آيد حتماً بايد با علامت
1082 </span>^<span lang="fa"> شروع
1083 شود</span></font></p>
1086 <p dir="rtl"><font face="Tahoma"><span lang="fa">رشته جستجو نبايد با يك
1087 مجموعه از كاراكتر‌ها مثل </span>[a-e]<span lang="fa"> شروع شود</span></font></li>
1089 <p dir="rtl"><font face="Tahoma"><span lang="fa">جستجوهاي غيرحساس به متن مثل
1090 </span>ILIKE<span lang="fa">‌ و </span>*~<span lang="fa"> از نمايه‌ها
1091 استفاده نمي‌كنند. در عوض از توابع نمايه‌اي كه در قسمت </span>
1093 href="#4.12">4.12</A><span lang="fa">
1094 توضيح داده شد استفاده مي‌كنند.</span></font></li>
1096 <p dir="rtl"><font face="Tahoma"><span lang="fa">مقدار پيش فرض </span>locale<span lang="fa">‌
1097 بايد در </span>initdb<span lang="fa"> استفاده شود.</span></font></li>
1099 <H4 dir="rtl"><font face="Tahoma"><A name=4.9>4.9</A>)
1100 <span lang="fa">چگونه مي‌توانم نحوه بررسي درخواست را توسط بهينه‌ساز درخواستها
1101 مشاهده كنم؟</span></font></H4>
1102 <p dir="rtl"><font face="Tahoma"><span lang="fa">راهنماي دستور </span>EXPLAIN<span lang="fa">
1103 را نگاه كنيد.</span></font></p>
1104 <H4 dir="rtl"><font face="Tahoma"><A name=4.10>4.10</A>)
1105 <span lang="fa">نمايه </span>R-tree<span lang="fa">‌ چيست؟</span></font></H4>
1106 <p dir="rtl"><font face="Tahoma"><span lang="fa">از نمايه </span>R-Tree
1107 <span lang="fa"> براي انديس كردن داده‌هاي فاصله‌اي استفاده مي‌شود. يك نمايه
1108 </span>hash<span lang="fa"> نمي‌تواند جستجوهاي محدوده‌اي را انجام دهد. نمايه</span>
1109 "B-tree"<span lang="fa"> نيز براي انجام جستجوي محدوده‌اي در يك جهت قابل استفاده
1110 است. اما </span>R-Tree<span lang="fa"> مي‌تواند داده‌هاي چند بعدي را نيز
1111 پشتيباني كند. براي مثال اگر از نمايه </span>R-tree<span lang="fa">‌ براي
1112 گونه </span>Point<span lang="fa"> استفاده شود سرعت درخواست‌هايي نظير "</span>select
1113 all points within a bounding rectangle<span lang="fa">" به مراتب افزايش مي‌يابد.</span></font></p>
1114 <P dir="rtl"><font face="Tahoma"><span lang="fa">مقاله‌اي كه طراحي </span>R-tree<span lang="fa">
1115 را توضيح داده است </span></font></P>
1116 <P><font face="Tahoma">Guttman, A. "R-trees: A Dynamic Index Structure for Spatial Searching."
1117 Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.</font></P>
1118 <P dir="rtl"><font face="Tahoma">R-tree<span lang="fa">‌ مي‌تواند چندضلعيها و
1119 چند وجهي را پشتيباني كند. در تئوري، </span>R-tree<span lang="fa"> مي‌تواند تعداد بعدهاي بالاتري
1120 را نيز پشتيباني كند. در عمل توسعه </span>R-tree<span lang="fa">‌
1121 نياز به كار بيشتري دارد.</span></font></P>
1122 <H4 dir="rtl"><font face="Tahoma"><A name=4.11>4.11</A>)
1123 <span lang="fa">بهينه ساز تكويني درخواست چيست؟</span> (Genetic Query Optimizer)</font></H4>
1124 <p dir="rtl"><font face="Tahoma"><span lang="fa">استفاده از </span>GEQO<span lang="fa">
1125 سرعت بهينه سازي درخواست را هنگاميكه تعداد زيادي جدول را با استفاده از الگوريتم
1126 ژنتيك الحاق مي‌كنيم افزايش مي‌دهد.</span></font></p>
1127 <H4 dir="rtl"><font face="Tahoma"><A name=4.12>4.12</A>)
1128 <span lang="fa">چگونه از عبارات منظم براي جستجو استفاده كنم؟ چگونه جستجويي انجام
1129 دهم كه حساس به متن نباشد؟ چگونه براي يك جستجوي غير حساس به متن از نمايه استفاده
1130 كنم؟</span></font></H4>
1131 <P dir="rtl"><font face="Tahoma"><span lang="fa">براي جستجوي عبارت منظم از عملگر
1132 </span>~<span lang="fa">‌ استفاده مي‌كنيم. براي جستجوي غير حساس به متن از عملگر
1133 </span>*~ <span lang="fa">و يا </span>ILIKE<span lang="fa">‌ استفاده مي‌كنيم.</span></font></P>
1134 <p dir="rtl"><span lang="fa"><font face="Tahoma">روش ديگر انجام جستجوي غير حساس
1135 به متن در زير نشان داده شده است.</font></span></p>
1136 <PRE><font face="Tahoma"> SELECT *
1138 WHERE lower(col) = 'abc';
1140 <p dir="rtl"><span lang="fa"><font face="Tahoma">اين از نمايه‌هاي استاندارد
1141 استفاده نمي‌كند. ولي شما مي توانيد با دستور زير يك نمايه ايجاد كنيد و از آن
1142 استفاده كنيد.</font></span></p>
1143 <PRE><font face="Tahoma"> CREATE INDEX tabindex ON tab (lower(col));
1145 <H4 dir="rtl"><font face="Tahoma"><A name=4.13>4.13</A>) <span lang="fa">چگونه مي‌توانم در يك درخواست تشخيص دهم كه يك فيلد </span>NULL<span lang="fa">‌
1146 است؟</span></font></H4>
1147 <p dir="rtl"><font face="Tahoma"><span lang="fa">با استفاده از توابع </span>IS
1148 NULL<span lang="fa"> و </span>IS NOT NULL<span lang="fa"> مي‌توانيم </span>NULL<span lang="fa">
1149 بودن يك فيلد را تست كنيم.</span></font></p>
1150 <H4 dir="rtl"><font face="Tahoma"><A name=4.14>4.14</A>)
1151 <span lang="fa">تفاوت بين گونه‌هاي مختلف </span>character<span lang="fa"> چيست؟</span></font></H4>
1152 <PRE><font face="Tahoma">Type Internal Name Notes
1153 --------------------------------------------------
1154 VARCHAR(n) varchar <span lang="fa">اندازه، حداكثر طول را نشان مي دهد بدون اضافه شدن كاراكتر اضافه</span>
1155 CHAR(n) <span lang="fa"> </span> bpchar <span lang="fa">كاراكترهاي بلانك براي پر شدن طول مشخص شده استفاده مي‌شود</span>
1156 TEXT <span lang="fa"> </span>text <span lang="fa"> </span>ح<span lang="fa">داكثر طول را مشخص نمي‌كند</span>
1157 BYTEA <span lang="fa"> </span> bytea <span lang="fa">آرايه‌اي از بايت با طول متغير</span>
1158 "char" <span lang="fa"> </span>char <span lang="fa">يك كاراكتر</span>
1160 <p dir="rtl"><font face="Tahoma"><span lang="fa">نام داخلي گونه‌ها را در </span>
1161 system catalogue <span lang="fa">‌و بعضي از پيغامهاي خطا مي‌توان ديد.</span></font></p>
1162 <p dir="rtl"><font face="Tahoma"><span lang="fa">چهار گونه اول همگي از نوع
1163 </span>varlena <span lang="fa">هستند (4 بايت اول روي ديسك طول را مشخص مي‌كند كه
1164 به دنبال آن داده‌ها قرار دارند.)‌بنابراين فضاي واقعي استفاده شده روي ديسك از
1165 اندازه تعريف شده بيشتر است. اما اين گونه‌ها را مي‌توان فشرده كرد كه اينكار باعث
1166 مي‌شود فضاي كمتري روي ديسك اشغال كنند.</span></font></p>
1167 <P dir="rtl"><font face="Tahoma"><span lang="fa">براي ذخيره رشته‌هاي با طول
1168 متغير</span><font size="2">(</font><SMALL>VARCHAR(n<span lang="fa">‌
1169 <font size="3">بهترين انتخاب است. در اين گونه حداكثر طول رشته محدود است بر خلاف
1170 </font></span><font size="3">text<span lang="fa"> كه هيچ محدوديتي روي حداكثر
1171 اندازه رشته نمي‌گذارد.(در اين گونه حداكثر طول يك رشته يك گيگا بايت خواهد بود)</span></font></SMALL></font></P>
1172 <p dir="rtl"><span lang="fa"><font face="Tahoma">گونه <font size="2">(</font></font></span><font face="Tahoma">CHAR(n<span lang="fa">
1173 <font size="3"> براي ذخيره داده‌هاي با طول يكسان است.يك
1174 گونه‌</font>ي</span><font size="3"> </font>
1175 <font size="2"><span lang="fa">(</span></font>CHAR(n <span lang="fa">
1176 <font size="3">با كاراكترهاي بلانك (خالي) پر مي‌شود تا به طول مشخص شده برسد در
1177 حاليكه گونه </font></span><font size="3">VARCHAR</font><font size="3"><span lang="fa">
1178 كاراكترها را به همان صورت كه هستند ذخيره مي‌كند. گونه </span>BYTEA<span lang="fa">
1179 براي ذخيره داده‌هاي باينري است به خصوص داده‌هاي باينري كه شامل بايت‌هاي </span>
1180 NULL<span lang="fa"> هستند. از نظر كارايي تمام اين گونه‌ها يكسان هستند.</span></font></font></p>
1181 <H4 dir="rtl"><font face="Tahoma"><A name=4.15.1>4.15.1</A>)
1182 <span lang="fa">چگونه مي‌توانم يك فيلد سريال يا افزايشي ايجاد كنم؟</span></font></H4>
1183 <p dir="rtl"><font face="Tahoma">PostgreSQL<span lang="fa"> از داده‌هاي سريال
1184 پشتيباني مي‌كند. براي ايجاد يك فيلد سريال (براي داشتن يك فيلد منحصر به فرد براي
1185 هر رديف )به روش زير عمل كنيد:</span></font></p>
1186 <PRE><font face="Tahoma"> CREATE TABLE person (
1191 <p dir="rtl"><span lang="fa"><font face="Tahoma">دستور بالا به طور اتوماتيک به
1192 دستور زير تبديل مي‌شود:</font></span></p>
1193 <PRE><font face="Tahoma"> CREATE SEQUENCE person_id_seq;
1194 CREATE TABLE person (
1195 id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
1199 <p dir="rtl"><font face="Tahoma"><span lang="fa">براي ديدن اطلاعات بيشتر به
1200 راهنماي دستور </span> <I>create_sequence</I> <span lang="fa"> مراجعه كنيد.
1201 همچنين مي‌توان از </span>OID<span lang="fa">‌هر رديف به عنوان يك مقدار منحصر به
1202 فرد استفاده كرد. اما در اين حالت براي </span>dump<span lang="fa"> كردن و </span>
1203 reload<span lang="fa">‌كردن پايگاه داده بايد دستور </span><i>pg_dumps</i><span lang="fa"><i>‌</i>
1204 را با گزينه </span>o-<span lang="fa">‌ اجرا كنيد.</span></font></p>
1205 <H4 dir="rtl"><font face="Tahoma"><A name=4.15.2>4.15.2</A>) <span lang="fa">چگونه مي‌توانم مقدار يك درج سريالي را بدانم؟</span></font></H4>
1206 <P dir="rtl"><font face="Tahoma"><span lang="fa">يك روش براي گرفتن مقدار بعدي يك
1207 فيلد سريال استفاده از تابع </span><i>()nextval</i><span lang="fa"> است.</span>
1208 <span lang="fa">در شبه كُدي كه در ادامه آمده است روش انجام اين كار نشان داده شده
1209 است:</span></font></P>
1210 <PRE><font face="Tahoma"> new_id = execute("SELECT nextval('person_id_seq')");
1211 execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
1213 <p dir="rtl"><font face="Tahoma"><span lang="fa">با اجراي دستور فوق مقدار جديد را
1214 در متغير </span>new_id<span lang="fa"> نيز خواهيدداشت كه مي‌توانيد آن را در بقيه
1215 درخواست‌ها نيز استفاده كنيد. توجه داشته باشيد كه نام </span>SEQUENCE<span lang="fa">يي
1216 كه به طور اتوماتيك ايجاد شده است به صورت </span><i>table</i>_<I>serialcolumn</I>_<I>seq<span lang="fa">‌
1217 </span></I><span lang="fa">خواهد بود</span>. <span lang="fa">كه در آن </span>
1218 table<span lang="fa">‌ نام جدول و </span>serialcolumn<span lang="fa"> نام فيلد
1219 سريال جدول مي‌باشد.</span></font></p>
1220 <P dir="rtl"><font face="Tahoma"><span lang="fa">براي ديدن مقدار نسبت داده شده
1221 به فيلد سريال نيز مي‌توان از تابع <i>()</i></span> <I>currval </I>
1222 <span lang="fa">به صورت زير استفاده كرد. </span></font></P>
1223 <PRE><font face="Tahoma"> execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
1224 new_id = execute("SELECT currval('person_id_seq')");
1226 <p dir="rtl"><font face="Tahoma"><span lang="fa">و سرانجام شما مي‌توانيد از
1227 مقدار </span>OID<span lang="fa"> كه خروجي دستور </span>INSERT <span lang="fa"> است
1228 براي ديدن مقدار پيش فرض استفاده كنيد. هر چند اين روش در همه پلتفرمها قابل
1229 استفاده نيست و ضمن اينكه فيلد </span>oid<span lang="fa">‌ بعد از عدد 4 ميليارد
1230 دوباره صفر مي‌شود. در زبان </span>perl<span lang="fa"> با استفاده از </span>DBI<span lang="fa">
1231 و </span>DBD::Pg<span lang="fa"> مقدار </span>oid<span lang="fa">‌را مي‌توانيد
1232 به اين شكل استخراج كنيد:</span> <span lang="fa">بعد از اجراي ()</span>st->execute<span lang="fa">$
1233 مقدار </span>oid<span lang="fa">‌ در متغير </span> <I>sth->pg_oid_status<span lang="fa">$</span></I><span lang="fa">
1234 ذخيره خواهد شد.</span></font></p>
1235 <H4 dir="rtl"><font face="Tahoma"><A name=4.15.3>4.15.3</A>) <span lang="fa">آیا
1236 توابع ()</span>nextval<span lang="fa"> و ()</span>currval<span lang="fa"> منجر
1237 به ایجاد شرایط </span>race<span lang="fa"> برای سایر کاربران می شوند؟</span></font></H4>
1238 <P dir="rtl"><font face="Tahoma"><span lang="fa">خیر، استفاده از این توابع شرایط
1239 </span>race<span lang="fa"> را به وجود نمی آورد.</span></font></P>
1240 <H4 dir="rtl"><font face="Tahoma"><A name=4.15.4>4.15.4</A>)</font><font face="Tahoma"><span lang="fa">
1241 چرا اعداد سریالی مربوط به تراکنشهای </span>abort<span lang="fa"> شده مجدداً
1242 استفاده نمی شود؟ چرا بین اعداد سریالی یک فاصله خالی ایجاد می شود؟</span></font></H4>
1243 <P dir="rtl"><font face="Tahoma"><span lang="fa">برای بالا بردن امکان اجرای
1244 همزمان تراکنشها، اعداد سریالی به محض اجرای تراکنش به آنها تخصیص می یابد در این
1245 حالت اگر بعضی از تراکنشها </span>abort<span lang="fa"> شوند بین اعداد سریالی
1246 استفاده شده یک فاصله خالی به وجود می آید.</span></font></P>
1247 <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>
1248 <P dir="rtl"><font face="Tahoma">OID<span lang="fa"> راه حل </span>PostgreSQL<span lang="fa">
1249 برای داشتن یک شناسه منحصر به فرد برای هر ردیف است. هر ردیف جدیدی که ایجاد می شود
1250 یک </span>OID<span lang="fa"> منحصر به فرد به آن اختصاص می یابد. تمام </span>OID<span lang="fa">هایی
1251 که در حین </span>initdb<span lang="fa"> ایجاد می شوند از 16384 کمتر هستند و
1252 </span>OID<span lang="fa">هایی بعداً تولید می شود از این عدد بزرگتر خواهد بود.
1253 نکته مهم آن است که </span>OID<span lang="fa">ها نه تنها در یک جدول شبیه نیستند
1254 بلکه در کل پایگاه داده هیچ دو ردیفی دارای </span>OID<span lang="fa"> یکسان
1255 نخواهد بود.</span></font></P>
1256 <P dir="rtl"><font face="Tahoma">PostgreSQL<span lang="fa"> از </span>OID<span lang="fa">
1257 در سیستم داخلی خود برای ایجاد ارتباط بین ردیفهای جداول مختلف استفاده می کند.
1258 توصیه می شود که یک ستون از نوع </span>OID<span lang="fa"> برای ذخیره این فیلد در
1259 جدول ایجاد کنید. ساختن یک نمایه برای این فیلد باعث دسترسی سریعتر به آن خواهد شد.</span></font></P>
1260 <P dir="rtl"><font face="Tahoma"><span lang="fa">تمام پایگاههای داده در </span>
1261 PostgreSQL<span lang="fa"> برای گرفتن </span>OID<span lang="fa"> جدید از یک
1262 ناحیه مرکزی استفاده می کند. ولی اگر بخواهیم </span>OID<span lang="fa"> را به روش
1263 دیگری بگیریم و یا اینکه در حین کپی کردن یک جدول بخواهیم </span>OID<span lang="fa">های
1264 اصلی آن تغییر نکند به روش زیر می توانیم عمل کنیم:</span></font></P>
1265 <P dir="rtl"> </P>
1267 <PRE><font face="Tahoma"> CREATE TABLE new_table(mycol int);
1268 SELECT oid AS old_oid, mycol INTO tmp_table FROM old_table;
1269 COPY tmp_table TO '/tmp/pgtable';
1270 COPY new_table WITH OIDS FROM '/tmp/pgtable';
1271 DROP TABLE tmp_table;
1274 <P dir="rtl"><font face="Tahoma">OID<span lang="fa"> یک عدد صحیح 4 بایتی است و
1275 بنابراین حداکثر مقدار آن 4 میلیارد خواهد بود و بعد از آن مقدار آن سرریز خواهد
1276 شد. البته تا کنون برای کسی این اتفاق نیفتاده است و تصمیم
1277 گرداندگان </span>PostgreSQL<span lang="fa"> آن است که قبل از آنکه این اتفاق رخ
1278 دهد این مشکل را برطرف کنند.</span></font></P>
1279 <P dir="rtl"><font face="Tahoma">TID<span lang="fa">ها برای شناسایی محل فیزیکی
1280 یک ردیف بر اساس بلوک و آفست می باشد. </span>TID<span lang="fa">ها بعد از تغییر
1281 پیدا کردن یک ردیف و یا بازخوانی آن عوض می شوند. </span>TID<span lang="fa">ها
1282 توسط نمایه ها استفاده می شوند.</span></font></P>
1283 <H4 dir="rtl"><font face="Tahoma"><A name=4.17>4.17</A>)
1284 <span lang="fa">معني بعضي از ترمها و كلماتي كه در </span>PostgreSQL<span lang="fa">‌
1285 استفاده مي‌شود چيست؟</span></font></H4>
1286 <P dir="rtl"><font face="Tahoma"><span lang="fa">لیست برخی از ترمها و کلماتی که
1287 استفاده می شوند:</span></font></P>
1290 <p dir="ltr"><font face="Tahoma">table, relation, class <span lang="fa">
1291 :کلاس، رابطه، جدول</span></font><LI dir="ltr">
1292 <p dir="ltr"><font face="Tahoma">row, record, tuple <span lang="fa">چندتایی،
1293 رکورد، ردیف</span></font><LI dir="ltr">
1294 <p dir="ltr"><font face="Tahoma">column, field, attribute <span lang="fa">
1295 صفت، فیلد، ستون</span></font><LI dir="ltr">
1296 <p dir="ltr"><font face="Tahoma">retrieve, select <span lang="fa">انتخاب،
1297 خواندن</span></font><LI dir="ltr">
1298 <p dir="ltr"><font face="Tahoma">replace, update<span lang="fa">به روز کردن،
1299 جایگزینی</span>
1302 <p dir="ltr"><font face="Tahoma">append, insert <span lang="fa">درج، اضافه
1303 کردن</span></font><LI dir="ltr">
1304 <p dir="ltr"><font face="Tahoma"><SMALL>OID</SMALL>, serial value
1305 <span lang="fa">مقدار سریال</span></font><LI dir="ltr">
1306 <p dir="ltr"><font face="Tahoma">portal, cursor
1309 <p dir="ltr"><font face="Tahoma">range variable, table name, table alias
1311 <P dir="rtl"><font face="Tahoma"><span lang="fa">یک لیست عمومی از ترمهای مورد
1312 استفاده در پایگاه داده در آدرس </span> <A
1313 href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html">
1314 http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.htm</A>
1315 <span lang="fa">وجود دارد.</span></font></P>
1316 <H4 dir="rtl"><font face="Tahoma"><A name=4.18>4.18</A>) <span lang="fa">
1317 چرا من خطاي </span><i>"ERROR: Memory exhausted in AllocSetAlloc"</i><span lang="fa">
1318 مي‌گيرم؟</span></font></H4>
1319 <P dir="rtl"><font face="Tahoma"><span lang="fa">این خطا احتمالاً یا به خاطر
1320 تمام شدن حافظه مجازی سیستم شماست و یا اینکه کرنل برای برنامه ها در مورد میزان
1321 استفاده از حافظه مجازی محدودیت اعمال کرده است. قبل از اجرای برنامه اصلی یکی از
1322 دستورات زیر را اجرا کنید.</span></font></P>
1324 <PRE><font face="Tahoma"> ulimit -d 262144
1327 <p dir="rtl"><font face="Tahoma"><span lang="fa">بسته به نوع شل یکی از این
1328 دستورات ممکن است با موفقیت اجرا شود. با اجرای آن دستور محدودیت حافظه مجازی برای
1329 برنامه ها برداشته شده و با این کار احتمالاً درخواستی که قبلاً خطا می داده است
1330 اجرا خواهد شد.</span></font></p>
1331 <H4 dir="rtl"><font face="Tahoma"><A name=4.19>4.19</A>) <span lang="fa">از كجا
1332 تشخيص دهم كه ويرايش يا نسخه </span>PostgreSQL<span lang="fa">يي
1333 كه من استفاده مي‌كنم چيست؟</span></font></H4>
1334 <P dir="rtl"><font face="Tahoma"><span lang="fa">با اجرای دستور</span>
1335 <span lang="fa">()</span>SELECT version</font></P>
1336 <H4 dir="rtl"><font face="Tahoma"><A name=4.20>4.20</A>) <span lang="fa">چرا
1337 حین اجرای عملیات روی </span>large-object<span lang="fa">ها خطای </span>"<I>invalid
1338 large obj descriptor</I>"<span lang="fa">به وجود می آید؟</span></font></H4>
1339 <p align="right" dir="rtl"><font face="Tahoma"><span lang="fa">شما باید قبل از
1340 شروع دستوراتی که با </span>large-object<span lang="fa">ها کار می کنند </span>BEGIN<span lang="fa"> و بعد از آنها هم یک </span>END<span lang="fa">
1341 بگذارید. در حال حاضر </span>PostgreSQL<span lang="fa"> هندل </span>large-object<span lang="fa">ها
1342 را در زمان نهایی شدن تراکنش (</span>commit<span lang="fa">شدن)</span>
1343 <span lang="fa">می بندد. به همین دلیل اولین تلاش برای انجام هر کاری با هندل منجر
1344 به خطای </span><i>invalid large obj descriptor</i><span lang="fa"> خواهد شد.</span>
1345 <span lang="fa">برای جلوگیری از این خطا حتماً باید از یک تراکنش استفاده کنید.
1346 این کار همانطور که قبلاً گفته شد با استفاده از قرار دادن </span>BEGIN<span lang="fa">
1347 و </span>END<span lang="fa"> در ابتدا و انتهای دستورات انجام می شود.</span></font></p>
1348 <p dir="rtl"><font face="Tahoma"><span lang="fa">اگر این خطا را در حین استفاده
1349 از یک درایور </span>ODBC<span lang="fa"> دریافت کردید احتمالاً باید این دستور را
1350 اجرا کنید: </span>set </font> <CODE><font face="Tahoma">auto-commit off</font></CODE></p>
1351 <H4 dir="rtl"><font face="Tahoma"><A name=4.21>4.21</A>)
1352 <span lang="fa">چگونه يك ستون ايجاد كنم كه مقدار زمان جاري را به عنوان مقدار
1353 پيش‌فرض داشته باشد؟</span></font></H4>
1354 <P dir="rtl"><font face="Tahoma"><span lang="fa">از</span> <I>CURRENT_TIMESTAMP
1355 <span lang="fa"> </span></I><span lang="fa">استفاده کنید در مثال زیر نحوه
1356 انجام این کار نشان داده شده است:</span></font></P>
1358 <PRE><CODE><font face="Tahoma">CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
1359 </font></CODE><font face="Tahoma">
1362 <H4 dir="rtl"><font face="Tahoma"><A name=4.22>4.22</A>)
1363 <span lang="fa">چرا "زير درخواستهايي" كه از </span>IN<span lang="fa"> استفاده
1364 مي‌كنند كند هستند؟</span></font></H4>
1365 <P dir="rtl"><font face="Tahoma"><span lang="fa">در نسخه های قبل از 7.4 عمل
1366 الحاق زیر درخواست و درخواست اصلی به این صورت انجام می شود که نتایج به دست آمده
1367 از زیر درخواست به صورت ترتیبی برای هر ردیف اعمال می شود. اگر زیردرخواست ردیف های
1368 کمی را به عنوان خروجی برگرداند و درخواست بیرونی ردیف های زیادی را شامل شود
1369 استفاده از </span>IN<span lang="fa"> بهترین روش است در غیر اینصورت بهتر است از
1370 </span>EXISTS<span lang="fa"> استفاده شود</span></font></P>
1372 <PRE><font face="Tahoma"> SELECT *
1374 WHERE col IN (SELECT subcol FROM subtab);
1376 <p dir="rtl"><span lang="fa"><font face="Tahoma">به:</font></span></p>
1378 <PRE><font face="Tahoma"> SELECT *
1380 WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
1382 <p dir="rtl"><font face="Tahoma"><span lang="fa">برای اجرای سریع این درخواست
1383 باید برای ستون </span>subcol<span lang="fa"> نمایه ایجاد شده باشد.</span></font></p>
1384 <P dir="rtl"><font face="Tahoma"><span lang="fa">در نسخه های بعد از 7.4 </span>
1385 IN<span lang="fa"> برای الحاق از همان تکنیک پیچیده مورد استفاده در دستورات
1386 معمولی استفاده می کند و بنابراین استفاده از آن نسبت به </span>EXISTS<span lang="fa">
1387 ارجحیت دارد.</span></font><H4 dir="rtl"><font face="Tahoma"><A name=4.23>4.23</A>) <span lang="fa">چگونه مي‌توانم يك الحاق خارجي (</span>outer join<span lang="fa">)
1388 انجام دهم؟</span></font></H4>
1389 <p dir="rtl"><span lang="fa"><font face="Tahoma">برای انجام الحاق خارجی به روش
1390 زیر عمل کنید:</font></span></p>
1392 <PRE><font face="Tahoma"> SELECT *
1393 FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
1395 <p dir="rtl"><span lang="fa"><font face="Tahoma">یا</font></span></p>
1397 <PRE><font face="Tahoma"> SELECT *
1398 FROM t1 LEFT OUTER JOIN t2 USING (col);
1401 <P dir="rtl"><font face="Tahoma"><span lang="fa">درخواستهای بالا </span>t1.col ,
1402 t2.col<span lang="fa"> را به هم الحاق می کند و همچنین ردیفهای </span>t1<span lang="fa">
1403 که نظیر آنها در </span>t2<span lang="fa"> نبوده است را نیز برمی گرداند. اگر از
1404 </span>RIGHT<span lang="fa"> استفاده شود نتیجه بر عکس است. یعنی ردیفهای </span>
1405 t2<span lang="fa"> که نظیر آنها در </span>t1 <span lang="fa">نباشد را نشان می
1406 دهد و اگر از </span>FULL<span lang="fa"> استفاده شود نتیجه هم شامل ردیفهای
1407 </span>t1<span lang="fa"> است و هم شامل ردیفهای </span>t2<span lang="fa">.
1408 استفاده از کلمه </span>OUTER<span lang="fa"> اختیاری است چرا که این کلمه به طور
1409 ضمنی در دستورهای </span>LEFT, RIGHT, FULL<span lang="fa"> وجود دارد.</span></font></P>
1410 <P dir="rtl"><font face="Tahoma"><span lang="fa">در نسخه های قبلی پایگاه داده می
1411 توانیم الحاق خارجی را به کمک دستورهای </span>UNION, NOT IN<span lang="fa"> شبیه
1412 سازی کنیم. این کار در مثال زیر نشان داده شده است:</span><BR></font></P>
1414 <PRE><font face="Tahoma"> SELECT tab1.col1, tab2.col2
1416 WHERE tab1.col1 = tab2.col1
1418 SELECT tab1.col1, NULL
1420 WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
1424 <H4 dir="rtl"><font face="Tahoma"><A name=4.24>4.24</A>)
1425 <span lang="fa">چگونه مي‌توان درخواستهايي از چند پايگاه داده توليد كرد؟</span></font></H4>
1426 <P dir="rtl"><font face="Tahoma"><span lang="fa">در حال حاضر این کار امکان پذیر
1427 نیست. </span>PostgreSQL<span lang="fa"> فقط امکان درخواست از پایگاه داده ای را
1428 می دهد که در حال حاضر به آن متصل باشید و نمی‌توان به طور همزمان از دو پایگاه
1429 داده استفاده کرد. البته یک برنامه کاربردی خود می تواند به طور همزمان دو
1430 پایگاه داده را مورد استفاده قرار داده و نتایج را با هم ترکیب کند ولی نمی تواند
1431 در یک درخواست به هر دو پایگاه داده رجوع کند.</span></font></P>
1432 <H4 dir="rtl"><font face="Tahoma"><A name=4.25>4.25</A>)
1433 <span lang="fa">چگونه خروجي يك تابع مي‌تواند چند رديف يا ستون باشد؟</span></font></H4>
1434 <P dir="rtl"><span lang="fa"><font face="Tahoma">در نسخه 7.3 خروجی یک تابع می
1435 تواند چند ردیف یا چند ستون باشد. برای دیدن اطلاعات بیشتر به سایت زیر
1436 مراجعه کنید:</font></span><font face="Tahoma"><A
1437 href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A><span lang="fa">
1438 </span> </font><H4 dir="rtl"><font face="Tahoma"><A name=4.26>4.26</A>)
1439 <span lang="fa">در توابع </span>PL/PgSQL<span lang="fa"> چرا نمي‌توان با اطمينان
1440 جداول موقت را ايجاد يا حذف كرد؟</span></font></H4>
1441 <P dir="rtl"><font face="Tahoma">PL/PgSQL<span lang="fa"> محتوای توابع را ذخیره
1442 (</span>cache<span lang="fa">) می کند.</span> <span lang="fa">یک اثر بد جانبی
1443 این کار آن است که اگر در تابع از یک جدول موقت استفاده شود و بعداً آن جدول حذف و
1444 یک جدول جدید به جای آن ایجاد شود، در فراخوانی مجدد آن تابع، محتوای ذخیره
1445 شده تابع هنوز به جدول قدیمی اشاره می کند و بنابراین اجرای تابع با اشکال
1446 مواجه می شود. راه حل این مشکل آن است که برای جداول موقت از دستور </span>EXECUTE<span lang="fa">
1447 استفاده شود که این کار سبب می شود که درخواست برای هر بار اجرا مجدداً پیمایش و
1448 تفسیر شود.</span></font></P>
1449 <H4 dir="rtl"><font face="Tahoma"><A name=4.27>4.27</A>)
1450 <span lang="fa">چه گزينه‌هايي براي تكرار (</span>replication<span lang="fa">)</span>
1451 <span lang="fa">وجود دارد؟</span>
1453 <P dir="rtl"><font face="Tahoma">There are several master/slave replication options available. These allow
1454 only the master to make database changes and the slave can only do database
1455 reads. The bottom of <A
1456 href="http://gborg.postgresql.org/genpage?replication_research">http://gborg.PostgreSQL.org/genpage?replication_research</A>
1457 lists them. A multi-master replication solution is being worked on at <A
1458 href="http://gborg.postgresql.org/project/pgreplication/projdisplay.php">http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</A>.</font></P>
1459 <H4 dir="rtl"><font face="Tahoma"><A name=4.28>4.28</A>)
1460 <span lang="fa">چه گزينه‌هايي براي رمزنگاري وجود دارد؟</span>
1464 <p dir="rtl"><font face="Tahoma">contrib<I>/pgcrypto </I><span lang="fa">
1465 شامل توابع رمزنگاری زیادی است که می توان از آنها در دستورات </span>SQL<span lang="fa">
1466 استفاده کرد.</span></font><LI dir="rtl">
1467 <p dir="rtl"><font face="Tahoma"><span lang="fa">برای رمز کردن ارتباط بین
1468 </span>client<span lang="fa"> و </span>server<span lang="fa"> پایگاه داده
1469 حتماً گزینه </span>SSL<span lang="fa"> را بر روی پایگاه داده فعال کنیم.</span></font><LI dir="rtl">
1470 <p dir="rtl"><font face="Tahoma"><span lang="fa">در نسخه 7.3 به بعد کلمات
1471 عبور کاربران به طور اتوماتیک به صورت رمز شده ذخیره می شود ولی در نسخه های
1472 قبلی باید گزینه </span>
1473 <I>PASSWORD_ENCRYPTION</I> <span lang="fa">را در فایل</span><I>postgresql.conf </I>
1474 <span lang="fa">فعال کنیم. </span>
1477 <p dir="rtl"><span lang="fa"><font face="Tahoma">می توان پایگاههای داده را
1478 روی یک فایل سیستم رمزشده نگاهداری کرد</font></span></LI></UL>
1481 <H2 align=center dir="rtl"><font face="Tahoma">Extending PostgreSQL</font></H2>
1482 <H4 dir="rtl"><font face="Tahoma"><A name=5.1>5.1</A>)
1483 <span lang="fa">من يك تابع نوشته‌ام. چگونه آن را در </span>psql<span lang="fa">
1484 اجرا كنم؟ چرا با اجراي آن </span>core dump<span lang="fa"> مي‌گيرم؟</span></font></H4>
1485 <p dir="rtl"><span lang="fa"><font face="Tahoma">دلایل مختلفی می تواند باعث بروز
1486 این مشکل شود. اما قبل از همه، تابع خود را به صورت جدا تست کنید.</font></span></p>
1487 <H4 dir="rtl"><font face="Tahoma"><A name=5.2>5.2</A>) <span lang="fa">چگونه مي‌توانم در توليد نوع‌ها و توابع جديد و جالب براي
1488 </span>PostgreSQL<span lang="fa">‌ همكاري و مشاركت داشته باشم</span></font><span lang="fa"><font face="Tahoma">؟</font></span></H4>
1489 <p dir="rtl"><span lang="fa"><font face="Tahoma">کد خود را به گروه پستی </font>
1490 </span><font face="Tahoma"> <I>pgsql-hackers<span lang="fa"> </span></I>
1491 <span lang="fa"> ارسال کنید.</span></font></p>
1492 <H4 dir="rtl"><font face="Tahoma"><A name=5.3>5.3</A>)
1493 <span lang="fa">چگونه مي‌توانم يك تابع به زبان </span>C<span lang="fa"> بنويسم
1494 كه خروجي آن يك</span> <span lang="fa">‌</span>tuple<span lang="fa"> </span> <span lang="fa">(چند
1495 تايي) باشد؟</span></font></H4>
1496 <P dir="rtl"><font face="Tahoma"><span lang="fa">در نسخه های 7.3 به بعد یک تابع
1497 می تواند یک جدول را به عنوان خروجی برگرداند. این ویژگی در توابعی که به زبانهای
1498 </span>C<span lang="fa"> و </span>PL/PgSQL<span lang="fa"> نوشته می‌شوند به طور
1499 کامل وجود دارد. راهنما برنامه نویسان را مطالعه کنید. یک مثال از نحوه برگرداندن
1500 یک جدول به عنوان خروجی در </span><i>contrib/tablefunc</i><span lang="fa"> آمده
1501 است.</span></font></P>
1502 <H4 dir="rtl"><font face="Tahoma"><A name=5.4>5.4</A>)
1503 <span lang="fa">من يك فايل منبع را عوض كرده ام چرا در عمليات كامپيل مجدد آن،
1504 تغيير ديده نمي‌شود؟</span></font></H4>
1505 <P dir="rtl"><font face="Tahoma">Makefile<span lang="fa"> برای فایلهای </span>
1506 include<span lang="fa"> شده وابستگیها را به درستی نشان نمی دهد. برای اطمینان از
1507 اینکه فایلی که عوض کرده اید حتماً دوباره کامپیل می‌شود دستور </span>make clean<span lang="fa">
1508 را اجرا کنید. اگر از کامپیلر </span>gcc<span lang="fa"> استفاده می کنید می
1509 توانید از گزینه </span>enable-depend--<span lang="fa"> در موقع اجرای برنامه
1510 </span>configure<span lang="fa"> استفاده کنید این گزینه باعث می شود که وابستگیها
1511 به طور اتوماتیک تولید شود.</span></font></P></BODY></HTML>