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