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>