~ubuntu-branches/ubuntu/lucid/postgresql-8.4/lucid-proposed

« back to all changes in this revision

Viewing changes to doc/src/FAQ/FAQ_farsi.html

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2009-09-06 14:11:13 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20090906141113-qf5f3hkw7n036jfy
Tags: 8.4.1-1
* Urgency medium due to security fix.
* New upstream security/bug fix release:
  - Disallow "RESET ROLE" and "RESET SESSION AUTHORIZATION" inside
    security-definer functions. This covers a case that was missed in the
    previous patch that disallowed "SET ROLE" and "SET SESSION
    AUTHORIZATION" inside security-definer functions. [CVE-2007-6600]
  - Fix WAL page header initialization at the end of archive recovery.
    This could lead to failure to process the WAL in a subsequent archive
    recovery.
  - Fix "cannot make new WAL entries during recovery" error.
  - Fix problem that could make expired rows visible after a crash.
    This bug involved a page status bit potentially not being set
    correctly after a server crash.
  - Make "LOAD" of an already-loaded loadable module into a no-op.
    Formerly, "LOAD" would attempt to unload and re-load the module,
    but this is unsafe and not all that useful.
  - Make window function PARTITION BY and ORDER BY items always be
    interpreted as simple expressions.
    In 8.4.0 these lists were parsed following the rules used for
    top-level GROUP BY and ORDER BY lists. But this was not correct per
    the SQL standard, and it led to possible circularity.
  - Fix several errors in planning of semi-joins. These led to wrong query
    results in some cases where IN or EXISTS was used together with another
    join.
  - Fix handling of whole-row references to subqueries that are within
    an outer join. An example is SELECT COUNT(ss.-) FROM ... LEFT JOIN
    (SELECT ...) ss ON .... Here, ss.- would be treated as
    ROW(NULL,NULL,...) for null-extended join rows, which is not the same as
    a simple NULL.  Now it is treated as a simple NULL.
  - Fix locale handling with plperl. This bug could cause the server's
    locale setting to change when a plperl function is called, leading to
    data corruption.
  - Fix handling of reloptions to ensure setting one option doesn't
    force default values for others.
  - Ensure that a "fast shutdown" request will forcibly terminate open
    sessions, even if a "smart shutdown" was already in progress.
  - Avoid memory leak for array_agg() in GROUP BY queries.
  - Treat to_char(..., 'TH') as an uppercase ordinal suffix with
    'HH'/'HH12'.  It was previously handled as 'th'.
  - Include the fractional part in the result of EXTRACT(second) and
    EXTRACT(milliseconds) for time and time with time zone inputs.
    This has always worked for floating-point datetime configurations,
    but was broken in the integer datetime code.
  - Fix overflow for INTERVAL 'x ms' when "x" is more than 2 million
    and integer datetimes are in use.
  - Improve performance when processing toasted values in index scans.
    This is particularly useful for PostGIS.
  - Fix a typo that disabled commit_delay.
  - Output early-startup messages to "postmaster.log" if the server is
    started in silent mode. Previously such error messages were discarded,
    leading to difficulty in debugging.
  - Remove translated FAQs. They are now on the wiki. The main FAQ was moved
    to the wiki some time ago.
  - Fix pg_ctl to not go into an infinite loop if "postgresql.conf" is
    empty.
  - Fix several errors in pg_dump's --binary-upgrade mode. pg_dump
    --binary-upgrade is used by pg_migrator.
  - Fix "contrib/xml2"'s xslt_process() to properly handle the maximum
    number of parameters (twenty).
  - Improve robustness of libpq's code to recover from errors during
    "COPY FROM STDIN".
  - Avoid including conflicting readline and editline header files when
    both libraries are installed.
  - Work around gcc bug that causes "floating-point exception" instead
    of "division by zero" on some platforms.
* debian/control: Bump Standards-Version to 3.8.3 (no changes necessary).

Show diffs side-by-side

added added

removed removed

Lines of Context:
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">سوالاتي كه اغلب در مورد
8
 
</span> </font>
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
15
 
<A 
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">&nbsp;محمود 
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">&nbsp;<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">
26
 
&nbsp;<A 
27
 
href="http://www.postgresql.org/docs/index.html">http://www.PostgreSQL.org/docs/index.html</A></font></P>
28
 
<HR dir="rtl">
29
 
 
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 
33
 
href="#1.2">1.2</A>)
34
 
<span lang="fa">قانون كپي رايت‌ (حقوق معنوي) در مورد </span>PostgreSQL
35
 
<span lang="fa">&nbsp;به چه صورت است؟</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 
39
 
href="#1.4">1.4</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 
44
 
href="#1.6">1.6</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 
48
 
href="#1.8">1.8</A>) 
49
 
</font><span lang="fa"><font face="Tahoma">چه مستندات و راهنمائيهايي وجود دارند؟</font></span><font face="Tahoma"><BR><A 
50
 
href="#1.9">1.9</A>) 
51
 
<span lang="fa">چگونه مي‌توانم ازاشكالات شناخته شده و يا امكاناتي كه در اين 
52
 
پايگاه داده وجود ندارد&nbsp; مطلع شوم؟</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">&nbsp;وضعيت </font></span>
68
 
<font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma">‌ در 
69
 
مقايسه با ساير </font></span><font face="Tahoma">DBMS<span lang="fa">ها به چه 
70
 
صورت است؟</span><BR><A 
71
 
href="#1.15">1.15</A>)
72
 
<span lang="fa">من چگونه مي‌توانم از نظر مالي به </span>PostgreSQL<span lang="fa"> 
73
 
كمك كنم؟</span><BR>
74
 
</font></p>
75
 
<h2 align="center" dir="rtl"><font face="Tahoma"><span lang="fa">سوالات مربوط به 
76
 
استفاده از پايگاه داده</span></font></h2>
77
 
<p dir="rtl"><font face="Tahoma"><A 
78
 
href="#2.1">2.1</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 
82
 
href="#2.2">2.2</A>)
83
 
<span lang="fa">چه ابزارهايي براي استفاده از </span>PostgreSQL<span lang="fa">‌ 
84
 
با صفحات وب وجود دارد؟</span><BR><A 
85
 
href="#2.3">2.3</A>)
86
 
<span lang="fa">آيا </span>PostgreSQL<span lang="fa">‌ يك واسط كاربري گرافيكي 
87
 
دارد؟</span><BR><A 
88
 
href="#2.4">2.4</A>)
89
 
<span lang="fa">با چه زبانهاي برنامه‌نويسي مي‌توان با </span>PostgreSQL<span lang="fa">‌ 
90
 
ارتباط برقرار كرد؟</span><BR>
91
 
</font></p>
92
 
<h2 align="center" dir="rtl"><span lang="fa"><font face="Tahoma">سوالات مربوط به 
93
 
راهبري</font></span></h2>
94
 
<p dir="rtl"><font face="Tahoma"><A 
95
 
href="#3.1">3.1</A>)
96
 
<span lang="fa">چگونه مي‌توانم </span>PostgreSQL<span lang="fa">‌ را در شاخه‌اي 
97
 
غير از </span>/usr/local/pgsql/<span lang="fa">&nbsp; نصب كنم؟</span><BR><A 
98
 
href="#3.2">3.2</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 
102
 
href="#3.3">3.3</A>)
103
 
<span lang="fa">چرا موقعي كه من سعي مي‌كنم برنامه </span>postmaster<span lang="fa">‌ 
104
 
را اجرا كنم خطاي</span> <I>IpcMemoryCreate</I>&nbsp; <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">&nbsp;</span>IpcSemaphoreCreate<span lang="fa">
108
 
</span></I><span lang="fa">مي‌گيرم؟</span><BR><A 
109
 
href="#3.5">3.5</A>) 
110
 
<span lang="fa">چگونه مي‌توانم اتصالات ساير ماشينها را كنترل كنم؟</span><BR><A 
111
 
href="#3.6">3.6</A>) 
112
 
<span lang="fa">براي كارايي بالاتر و بهتر پايگاه داده من چه تنظيماتي را بايد 
113
 
انجام دهم؟</span><BR><A 
114
 
href="#3.7">3.7</A>) 
115
 
<span lang="fa">چه امكاناتي براي پيدا كردن اشكال‌ وجود دارد؟</span><BR><A 
116
 
href="#3.8">3.8</A>)
117
 
<span lang="fa">چرا موقعي كه من مي‌خواهم به پايگاه داده وصل شوم پيام</span> <I>
118
 
&quot;Sorry, too many clients&quot;
119
 
<span lang="fa">‌</span></I><span lang="fa">مي‌گيرم؟</span><BR><A 
120
 
href="#3.9">3.9</A>)<span lang="fa"> 
121
 
در شاخه </span>&nbsp;<I>pgsql_tmp</I> <span lang="fa">&nbsp;چه چيزي قرار دارد؟</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>
127
 
</font></p>
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 
132
 
href="#4.2">4.2</A>)
133
 
<span lang="fa">من چگونه مي‌توانم فقط روي چند رديف اول يا يك رديف تصادفي درخواست </span>
134
 
SELECT<span lang="fa">‌ بزنم؟</span><BR><A 
135
 
href="#4.3">4.3</A>)
136
 
<span lang="fa">من چگونه مي‌توانم ليستي از جداول يا ساير چيزهايي كه در </span>
137
 
psql<span lang="fa">‌ وجود دارد را ببينم؟</span><BR><A 
138
 
href="#4.4">4.4</A>) 
139
 
<span lang="fa">چگونه يك ستون جدول را حذف مي‌كنيد؟ چگونه نوع داده آن را عوض 
140
 
كنيم؟</span><BR><A 
141
 
href="#4.5">4.5</A>) 
142
 
<span lang="fa">حداكثر اندازه يك رديف،‌ جدول و خود پايگاه داده چقدر است؟</span><BR><A 
143
 
href="#4.6">4.6</A>)
144
 
<span lang="fa">چقدر فضاي ديسك سخت براي ذخيره كردن داده‌‌هاي يك فايل متني مورد 
145
 
نياز است؟</span><BR><A 
146
 
href="#4.7">4.7</A>)
147
 
<span lang="fa">چگونه مي‌توانم بفهمم كه چه كاربران،‌ پايگاه داده،‌ نمايه و 
148
 
جداولي در سيستم تعريف شده است؟</span><BR><A 
149
 
href="#4.8">4.8</A>) 
150
 
<span lang="fa">چرا درخواستهاي من كند اجرا مي‌شوند يا چرا از نمايه ها استفاده 
151
 
نمي‌كنند؟</span><BR><A 
152
 
href="#4.9">4.9</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
 
دهم كه حساس به متن نباشد؟ چگونه براي يك جستجوي غير حساس به متن از نمايه استفاده 
162
 
كنم؟</span><BR><A 
163
 
href="#4.13">4.13</A>)
164
 
<span lang="fa">چگونه مي‌توانم در يك درخواست تشخيص دهم كه يك فيلد </span>NULL<span lang="fa">‌ 
165
 
است؟</span><BR><A 
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"> چه 
179
 
هستند؟</span><BR><A 
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>&quot;ERROR: Memory exhausted in AllocSetAlloc&quot;</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>&quot;<I>invalid large obj descriptor</I>&quot;<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">چگونه خروجي يك تابع مي‌تواند&nbsp; چند رديف يا ستون باشد؟</span><BR><A 
205
 
href="#4.26">4.26</A>)&nbsp;
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>
213
 
</font></p>
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 
217
 
href="#5.1">5.1</A>)
218
 
<span lang="fa">من يك تابع نوشته‌ام. چگونه آن را در </span>psql<span lang="fa"> 
219
 
اجرا كنم؟ چرا با اجراي آن </span>core dump<span lang="fa"> مي‌گيرم؟</span><BR><A 
220
 
href="#5.2">5.2</A>)
221
 
<span lang="fa">چگونه مي‌توانم در توليد نوع‌ها و توابع جديد و جالب براي </span>
222
 
PostgreSQL<span lang="fa">‌ همكاري و مشاركت داشته باشم.</span><BR><A 
223
 
href="#5.3">5.3</A>)
224
 
<span lang="fa">چگونه مي‌توانم يك تابع به زبان </span>C<span lang="fa"> بنويسم 
225
 
كه خروجي آن يك</span> <span lang="fa">‌</span>tuple<span lang="fa"> </span>&nbsp;<span lang="fa">(چند 
226
 
تايي) باشد؟</span><BR><A 
227
 
href="#5.4">5.4</A>) 
228
 
<span lang="fa">من يك فايل منبع را عوض كرده ام چرا در عمليات كامپيل مجدد آن 
229
 
تغيير ديده نمي‌شود؟</span><BR>
230
 
</font></p>
231
 
<HR dir="rtl">
232
 
 
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&#8204;"><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
 
همان الگوي داده قوي و انواع داده&nbsp; را حفظ كرده است ولي زبان
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>&nbsp;توسط يك 
250
 
تيم برنامه‌نويس كه همگي در گروه پست الكترونيك برنامه‌نويسان
251
 
<span lang="en-us">PostgreSQL</span>&nbsp; عضو هستند، انجام مي‌شود. هماهنگ كننده 
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>&nbsp; مي‌باشد. (براي ديدن نحوه ملحق شدن به اين 
255
 
تيم قسمت <A 
256
 
href="#1.6">1.6</A> 
257
 
را ببينيد). اين تيم در حاضر مسئوليت تمام مسائل مربوط به برنامه‌نويسي
258
 
<span lang="en-us">PostgreSQL</span> را بر عهده دارد. اين يك پروژه گروهي است و 
259
 
تحت كنترل هيچ شركتي نيست. براي اطلاعات بيشتر در مورد اين تيم به آدرس
260
 
<A 
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 &quot;AS IS&quot; 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
 
استفاده از متن در آن ديده نمي‌شود. ما آن را دوست داريم و هيچ قصدي براي تغيير آن 
301
 
نداريم.</font></P>
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>‌&nbsp; را نيز دارد.</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
 
سايت اصلي آن&nbsp; <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>
359
 
<div dir="rtl">
360
 
        <PRE><font face="Tahoma">    subscribe
361
 
    end
362
 
</font></PRE>
363
 
</div>
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
 
پيامها وجود دارد. براي عضو شدن در اين گروه يك نامه با محتويات زير به این آدرس&nbsp; 
369
 
ارسال كنيد. <A 
370
 
href="mailto:pgsql-general-digest-request@PostgreSQL.org">
371
 
pgsql-general-digest-request@PostgreSQL.org</A> 
372
 
</font></P>
373
 
<div dir="rtl">
374
 
        <PRE><font face="Tahoma">    subscribe
375
 
    end
376
 
</font></PRE></div>
377
 
<p dir="rtl"><font face="Tahoma">در اين گروه هر موقع حجم نامه‌ها به 30 كيلوبايت 
378
 
رسيد براي تمام اعضاء ارسال مي‌شود.</font></p>
379
 
<p dir="rtl"><font face="Tahoma">گروه پستي بررسي اِشكالات هم وجود دارد. براي عضو 
380
 
شدن در اين گروه يك نامه با محتويات زير به 
381
 
<A 
382
 
href="mailto:pgsql-bugs-request@PostgreSQL.org">
383
 
pgsql-bugs-request@PostgreSQL.org</A> 
384
 
ارسال كنيد.</font></p>
385
 
<div dir="rtl">
386
 
        <PRE><font face="Tahoma">    subscribe
387
 
    end
388
 
</font></PRE></div>
389
 
<P dir="rtl"><font face="Tahoma" size="3">گروه پستي مخصوص توسعه دهندگان (برنامه‌نويسان) 
390
 
نيز وجوددارد. براي عضويت در اين گروه يك نامه به آدرس زير با محتويات مشخص شده 
391
 
ارسال كنيد.&nbsp; </font><font face="Tahoma">
392
 
<A 
393
 
href="mailto:pgsql-hackers-request@PostgreSQL.org"><font size="3">pgsql-hackers-request@PostgreSQL.org</font></A><span lang="en-us">
394
 
</span>&nbsp;</font></p>
395
 
<div dir="rtl">
396
 
        <PRE><font face="Tahoma">    subscribe
397
 
    end
398
 
</font></PRE>
399
 
</div>
400
 
<p dir="rtl"><font face="Tahoma">گروههاي پستي ديگري نيز در زمينه
401
 
<span lang="en-us">PostgreSQL</span>‌ وجود دارد&nbsp; كه مي‌توانيد در سايت <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 &#39;#PostgreSQL&#39; &quot;$USER&quot; irc.phoenix.net.</font></CODE><font face="Tahoma"> 
408
 
يا </font> <CODE>
409
 
<font face="Tahoma">irc -c &#39;#PostgreSQL&#39; &quot;$USER&quot; 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> دريافت كنيد در اين 
413
 
آدرس <A 
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>&nbsp;كه وجود دارد 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>وجود دارد. براي ديدن صفحات راهنما مي‌توانيد به 
428
 
سايت <A 
429
 
href="http://www.postgresql.org/docs">http://www.PostgreSQL.org/docs</A><span lang="en-us">
430
 
</span>&nbsp;نيز مراجعه نماييد.</font></p>
431
 
<p dir="rtl"><font face="Tahoma">دو كتاب در زمينه <span lang="en-us">PostgreSQL</span>‌<span lang="en-us">
432
 
</span>&nbsp;در آدرس‌هاي <A 
433
 
href="http://www.postgresql.org/docs/awbook.html">
434
 
http://www.PostgreSQL.org/docs/awbook.htm</A> 
435
 
و <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
 
پايگاه داده وجود ندارد&nbsp; مطلع شوم؟</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">&nbsp;</span><A 
454
 
href="http://developer.postgresql.org/todo.php">TODO</A>&nbsp;&nbsp; اِشكالات 
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
 
وجود دارد. يك راهنماي خيلي خوب هم در سايت‌هاي&nbsp; <A 
466
 
href="http://www.intermedia.net/support/sql/sqltut.shtm">
467
 
http://www.intermedia.net/support/sql/sqltut.shtm</A> 
468
 
و <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
 
و&nbsp; <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">&quot;SQL</span> 
475
 
را در 21 روز ياد بگيريد،‌ ويرايش دوم<span lang="en-us">&quot; </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> 
482
 
مي‌باشد.</font></p>
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>&nbsp;</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">&nbsp;</span>همچنين براي ديدن 
512
 
نسخه‌هاي جديدتر <span lang="en-us">PostgreSQL</span> و يا وجود يك وصله جديد از 
513
 
سايت <A 
514
 
href="ftp://ftp.postgresql.org/pub">ftp://ftp.PostgreSQL.org/pub</A> بازديد 
515
 
كنيد.</font></p>
516
 
<H4 dir="rtl"><font face="Tahoma"><A name=1.14>1.14</A>) </font><span lang="fa"><font face="Tahoma">
517
 
وضعيت </font></span>
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
 
نرم‌افزارها وجود دارد كه عبارتند از امكانات، كارايي، قابليت اعتماد، پشتيباني و 
523
 
قيمت</font></p>
524
 
<DL>
525
 
  <div dir="rtl">
526
 
  <dl>
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>
536
 
        </dl>
537
 
        </div>
538
 
  <DD>
539
 
        <p dir="rtl">&nbsp;<div dir="rtl">
540
 
  <b><font face="Tahoma">كارايي</font></b><p><font face="Tahoma"><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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
 
        قابليت اعتماد بالاست در ضمن آنكه تلاش مي‌كنيم تا كارايي آن نيز بهبود يابد. 
549
 
        در آدرس <A 
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>
557
 
  <DD>
558
 
        <p dir="rtl">&nbsp;<div dir="rtl">
559
 
  <dl>
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>
569
 
        </dl>
570
 
        </div>
571
 
  <DD>
572
 
        <div dir="rtl">
573
 
  <dl>
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>&nbsp; مراجعه كنيد.</font></dd>
582
 
        </dl>
583
 
        </div>
584
 
  <DD>
585
 
        <div dir="rtl">
586
 
  <dl>
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>
592
 
        </dl>
593
 
        </div>
594
 
  </DL>
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>&nbsp;داراي يك 
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> گزارش 
616
 
دهيد.</font></p>
617
 
<HR dir="rtl">
618
 
 
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"> 
629
 
به سايت </span> <A 
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> را از اين 
634
 
سايت <A 
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>وجود 
655
 
دارد.</font></P>
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
 
&nbsp;مي‌باشد. همچنين يك <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">‌ ارتباط برقرار كنند. به همراه&nbsp; 
684
 
سورس </span>PostgreSQL<span lang="fa"> تعدادي از واسطهاي مورد نياز براي ارتباط 
685
 
با پايگاه داده از طريق زبانهاي مختلف آمده است كه در زير ليست آنها را مشاهده 
686
 
مي‌كنيد.</span></font></p>
687
 
<ul dir="rtl">
688
 
        <li dir="ltr">
689
 
        <p dir="ltr" align="left"><font face="Tahoma">C (libpq) </font></li>
690
 
        <li dir="ltr">
691
 
        <p dir="ltr" align="left"><font face="Tahoma">Embedded C (ecpg) </font>
692
 
        </li>
693
 
        <li dir="ltr">
694
 
        <p dir="ltr" align="left"><font face="Tahoma">Java (jdbc) </font></li>
695
 
        <li dir="ltr">
696
 
        <p dir="ltr" align="left"><font face="Tahoma">Python (PyGreSQL) </font>
697
 
        </li>
698
 
        <li dir="ltr">
699
 
        <p dir="ltr" align="left"><font face="Tahoma">TCL (libpgtcl) </font></li>
700
 
</ul>
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>
706
 
<HR dir="rtl">
707
 
 
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">&nbsp; نصب كنم؟</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>&nbsp; <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&amp;idoc=1&amp;file=kernel-resources.html">
732
 
PostgreSQL Administrator&#39;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
 
&nbsp;</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>&nbsp;</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>‌ كردن سيستم 
749
 
شوند.</font></P>
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
 
تغييرات زيادي در پايگاه داده انجام مي‌شود انديسهاي قبلي را حذف و مجدداً‌ ايجاد 
778
 
كنيد.</font></p>
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>&nbsp; 
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>
807
 
<div dir="ltr">
808
 
        <PRE><font face="Tahoma">    cd /usr/local/pgsql
809
 
    ./bin/postmaster &gt;server.log 2&gt;&amp;1 &amp;
810
 
</font></PRE>
811
 
</div>
812
 
<P dir="rtl"><font face="Tahoma">اين كار يك فايل<span lang="en-us"> 
813
 
log</span> 
814
 
در بالاترين شاخه <span lang="en-us">PostgreSQL</span>‌ ايجاد مي‌كند. اين فايل 
815
 
حاوي اطلاعات مفيدي در مورد مسائل و خطاهايي است كه براي سرور اتفاق افتاده است. 
816
 
براي ديدن جزئيات بيشتر مي‌توان از <span lang="en-us">d-</span>&nbsp; به همراه 
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
 
از خط فرمان اجرا كرده و&nbsp; دستورات <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
 
&quot;PGOPTIONS=&quot;-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
 
برنامه اشكال‌ياب را به آن متصل كرده و با قرار دادن يك نقطه توقف&nbsp; روند اجراي 
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
 
&quot;Sorry, too many clients&quot;
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> بيش از منابع موجود سيستم 
867
 
نباشد.</font></p>
868
 
<H4 dir="rtl"><font face="Tahoma"><A name=3.9>3.9</A>) <span lang="fa"> 
869
 
در شاخه </span>&nbsp;<I>pgsql_tmp</I> <span lang="fa">&nbsp;چه چيزي قرار دارد؟</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>&nbsp;باشد. در يادداشتي كه به همراه هر توزيع مي‌آيد 
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>
900
 
</font></H4>
901
 
<P dir="rtl"><font face="Tahoma">چون اكثر سخت‌افزارهاي <span lang="en-us">PC
902
 
</span>&nbsp;سازگار هستند مردم فكر مي‌كنند كه كيفيت آنها نيز يكسان است. در حاليكه 
903
 
اينطور نيست. استفاده از هاردهاي <span lang="en-us">SCSI</span> و حافظه‌هاي <span lang="en-us">
904
 
ECC</span> و مادربردهاي با كيفيت بالا نسبت به سخت افزارهاي ارزانتر نتايج بهتري 
905
 
از نظر كارايي و پايداري سيستم بهمراه خواهد داشت.<span lang="en-us"> 
906
 
PostgreSQL</span> روي بيشتر سخت افزارها اجرا مي‌شود اما اگر كارايي و اطمينان 
907
 
فاكتورهاي مهمي هستند بايد سخت افزار مناسب استفاده شود. در گروههاي پستي در مورد 
908
 
سخت افزار مناسب&nbsp; و انتخاب آن بحث شده است. </font></P>
909
 
<HR dir="rtl">
910
 
 
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> 
914
 
چيست؟</font></H4>
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">&nbsp;يا </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
931
 
    FROM tab
932
 
    ORDER BY random()
933
 
    LIMIT 1;
934
 
</font></PRE>
935
 
</div>
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">براي ديدن ليست جداول دستور&nbsp;
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
 
براي&nbsp; دستوراتي كه با </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
 
مي‌توان با استفاده از آن&nbsp; اطلاعات داخلي پايگاه داده را استخراج كرد.</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>
957
 
<div dir="ltr">
958
 
        <PRE><font face="Tahoma">    BEGIN;
959
 
    LOCK TABLE old_table;
960
 
    SELECT ...  -- <span lang="fa">تمام ستونها غير از ستوني كه مي‌خواهيد آن را حذف كنيد را در اينجا بياوريد</span>
961
 
    INTO TABLE new_table
962
 
    FROM old_table;
963
 
    DROP TABLE old_table;
964
 
    ALTER TABLE new_table RENAME TO old_table;
965
 
    COMMIT;
966
 
</font></PRE>
967
 
</div>
968
 
<P dir="rtl"><span lang="fa"><font face="Tahoma">براي عوض كردن نوع داده يك ستون 
969
 
به روش زير عمل كنيد:</font></span></P>
970
 
<div dir="ltr">
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;
975
 
    COMMIT;
976
 
</font></PRE>
977
 
</div>
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>
981
 
<div dir="rtl">
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>
989
 
</font></PRE></div>
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>
1010
 
<div dir="rtl">
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>
1016
 
 
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>
1021
 
 
1022
 
   100000 <span lang="fa"> تعداد رديفها</span>
1023
 
   --------------------  = <span lang="fa">تعدادصفحات پايگاه داده</span>
1024
 
      128 <span lang="fa">تعداد رديفها در هر صفحه</span>
1025
 
 
1026
 
735 <span lang="fa">تعداد صفحات</span> * 8192 <span lang="fa">تعداد بايت‌هاي هر صفحه</span>  =  6,021,120 <span lang="fa">مگا بايت</span>
1027
 
</font></PRE>
1028
 
</div>
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">&nbsp;را اجرا كنيد.&nbsp; همچنين جداول سيستمي كه با نام آنها
1041
 
</span>pg<span lang="fa">_</span> <span lang="fa">‌شروع مي‌شود نيز اين اطلاعات 
1042
 
را در خود دارند. اجراي برنامه </span>psql<span lang="fa"> با گزينه </span>l-
1043
 
<span lang="fa">&nbsp;نيز باعث نشان دادن ليست تمام پايگاههاي داده مي‌شود.</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>
1075
 
<div dir="ltr">
1076
 
        <PRE><font face="Tahoma">    SELECT col
1077
 
    FROM tab
1078
 
    ORDER BY col [ DESC ]
1079
 
    LIMIT 1;
1080
 
</font></PRE>
1081
 
</div>
1082
 
<P dir="rtl"><font face="Tahoma"><span lang="fa">اگر شما فكر مي‌كنيد كه بهينه 
1083
 
ساز سيستم در انتخاب پيمايش ترتيبي اشتباه كرده است با دستور </span>&#39;</font><CODE><font face="Tahoma">SET 
1084
 
enable_seqscan TO &#39;off&#39;</font></CODE><font face="Tahoma"><span lang="fa">&nbsp; 
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>
1089
 
<ul dir="rtl">
1090
 
        <li dir="rtl">
1091
 
        <p dir="rtl"><font face="Tahoma"><span lang="fa">ابتداي رشته جستجو بايد به 
1092
 
        طور صريح مشخص باشد براي مثال:</span></font></li>
1093
 
        <li dir="rtl">
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>
1097
 
        <li dir="rtl">
1098
 
        <p dir="rtl"><font face="Tahoma"><span lang="fa">الگوهاي منظمي كه با </span>
1099
 
        ~<span lang="fa"> مي‌ايد حتماً بايد با علامت </span>^<span lang="fa"> شروع 
1100
 
        شود</span></font></li>
1101
 
        <li dir="rtl">
1102
 
        <p dir="rtl"><font face="Tahoma"><span lang="fa">رشته جستجو نبايد با يك 
1103
 
        مجموعه از كاراكتر‌ها&nbsp; مثل </span>[a-e]<span lang="fa"> شروع شود</span></font></li>
1104
 
        <li dir="rtl">
1105
 
        <p dir="rtl"><font face="Tahoma"><span lang="fa">جستجوهاي غيرحساس به متن مثل&nbsp;
1106
 
        </span>ILIKE<span lang="fa">‌ و </span>*~<span lang="fa"> از نمايه‌ها 
1107
 
        استفاده نمي‌كنند. در عوض از توابع نمايه‌اي كه در قسمت </span>
1108
 
        <A 
1109
 
  href="#4.12">4.12</A><span lang="fa"> 
1110
 
        توضيح داده شد استفاده مي‌كنند.</span></font></li>
1111
 
        <li dir="rtl">
1112
 
        <p dir="rtl"><font face="Tahoma"><span lang="fa">مقدار پيش فرض </span>locale<span lang="fa">‌ 
1113
 
        بايد در </span>initdb<span lang="fa"> استفاده شود.</span></font></li>
1114
 
</ul>
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">&nbsp;براي انديس كردن داده‌هاي فاصله‌اي استفاده مي‌شود. يك نمايه
1124
 
</span>hash<span lang="fa"> نمي‌توانند جستجوهاي محدوده‌اي را انجام دهد. نمايه</span> 
1125
 
&quot;B-tree&quot;<span lang="fa"> نيز براي انجام جستجوي محدوده‌اي در يك جهت قابل استفاده 
1126
 
است. اما </span>R-Tree<span lang="fa"> مي‌تواند داده‌هاي چند بعدي را نيز 
1127
 
پشتيباني كند. براي مثال استفاده اگر از نمايه </span>R-tree<span lang="fa">‌ براي 
1128
 
گونه </span>Point<span lang="fa"> استفاده شود سرعت درخواست‌هايي نظير &quot;</span>select 
1129
 
all points within a bounding rectangle<span lang="fa">&quot; به مراتب افزايش مي‌يابد.</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. &quot;R-trees: A Dynamic Index Structure for 
1133
 
Spatial Searching.&quot; Proceedings of the 1984 ACM SIGMOD Int&#39;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 *
1154
 
    FROM tab
1155
 
    WHERE lower(col) = &#39;abc&#39;;
1156
 
</font></PRE>
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));
1161
 
</font></PRE>
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
 
&quot;char&quot;          <span lang="fa">     </span>char           <span lang="fa">يك كاراكتر</span>
1176
 
</font></PRE>
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">&nbsp;براي ذخيره داده‌هاي با طول يكسان است.يك گونه‌</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 ( 
1203
 
        id   SERIAL, 
1204
 
        name TEXT 
1205
 
    );
1206
 
</font></PRE>
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(&#39;person_id_seq&#39;),
1212
 
        name TEXT 
1213
 
    );
1214
 
</font></PRE>
1215
 
<p dir="rtl"><font face="Tahoma"><span lang="fa">براي ديدن اطلاعات بيشتر به 
1216
 
راهنماي دستور </span> <I>create_sequence</I> <span lang="fa">&nbsp;مراجعه كنيد. 
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(&quot;SELECT nextval(&#39;person_id_seq&#39;)&quot;);
1228
 
    execute(&quot;INSERT INTO person (id, name) VALUES (new_id, &#39;Blaise Pascal&#39;)&quot;);
1229
 
</font></PRE>
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(&quot;INSERT INTO person (name) VALUES (&#39;Blaise Pascal&#39;)&quot;);
1241
 
    new_id = execute(&quot;SELECT currval(&#39;person_id_seq&#39;)&quot;);
1242
 
</font></PRE>
1243
 
<p dir="rtl"><font face="Tahoma"><span lang="fa">و سرانجام شما مي‌توانيد از 
1244
 
مقدار </span>OID<span lang="fa"> كه خروجي دستور </span>INSERT <span lang="fa">
1245
 
&nbsp;است براي ديدن مقدار پيش فرض استفاده كنيد. هر چند اين روش در همه پلتفرمها قابل 
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-&gt;execute<span lang="fa">$ 
1250
 
مقدار </span>oid<span lang="fa">‌ در متغير </span>&nbsp;<I>sth-&gt;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">&nbsp;</P>
1284
 
<div dir="ltr">
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 &#39;/tmp/pgtable&#39;;
1288
 
        COPY new_table WITH OIDS FROM &#39;/tmp/pgtable&#39;;
1289
 
        DROP TABLE tmp_table;
1290
 
</font></PRE>
1291
 
</div>
1292
 
<P dir="rtl"><font face="Tahoma">OID<span lang="fa"> یک عدد صحیح 4 بایتی است و 
1293
 
بنابراین حداکثر مقدار آن 4 میلیارد خواهد بود و بعد از آن مقدار آن سرریز خواهد 
1294
 
شد.&nbsp; البته تا کنون برای&nbsp; کسی&nbsp; این اتفاق نیفتاده است و تصمیم 
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>
1306
 
<UL>
1307
 
  <LI dir="ltr">
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">به روز کردن، 
1317
 
        جایگزینی</span> 
1318
 
  </font> 
1319
 
  <LI dir="ltr">
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 
1325
 
  </font> 
1326
 
  <LI dir="ltr">
1327
 
        <p dir="ltr"><font face="Tahoma">range variable, table name, table alias 
1328
 
        </font> </LI></UL>
1329
 
<P dir="rtl"><font face="Tahoma"><span lang="fa">یک لیست عمومی از ترمهای مورد 
1330
 
استفاده در پایگاه داده در آدرس&nbsp; </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>&quot;ERROR: Memory exhausted in AllocSetAlloc&quot;</i><span lang="fa"> 
1336
 
مي‌گيرم؟</span></font></H4>
1337
 
<P dir="rtl"><font face="Tahoma"><span lang="fa">این خطا احتمالاً یا به خاطر 
1338
 
تمام شدن حافظه مجازی سیستم شماست و یا اینکه کرنل برای برنامه ها در مورد میزان 
1339
 
استفاده از حافظه مجازی محدودیت اعمال کرده است. قبل از اجرای برنامه اصلی یکی از 
1340
 
دستورات زیر را اجرا کنید.</span></font></P>
1341
 
<div dir="ltr">
1342
 
        <PRE><font face="Tahoma">    ulimit -d 262144
1343
 
    limit datasize 256m
1344
 
</font></PRE></div>
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>&quot;<I>invalid 
1356
 
large obj descriptor</I>&quot;<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">&nbsp; و بعد از آنها هم یک </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">&nbsp;</span></I><span lang="fa">استفاده کنید در مثال زیر نحوه انجام 
1375
 
این کار نشان داده شده است:</span></font></P>
1376
 
<div dir="ltr">
1377
 
        <PRE><CODE><font face="Tahoma">CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
1378
 
</font></CODE><font face="Tahoma">
1379
 
</font></PRE>
1380
 
</div>
1381
 
<H4 dir="rtl"><font face="Tahoma"><A name=4.22>4.22</A>) 
1382
 
<span lang="fa">چرا &quot;زير درخواستهايي&quot; كه از </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>
1390
 
<div dir="ltr">
1391
 
        <PRE><font face="Tahoma">    SELECT *
1392
 
    FROM tab
1393
 
    WHERE col IN (SELECT subcol FROM subtab);
1394
 
</font></PRE></div>
1395
 
<p dir="rtl"><span lang="fa"><font face="Tahoma">به:</font></span></p>
1396
 
<div dir="ltr">
1397
 
        <PRE><font face="Tahoma">    SELECT *
1398
 
    FROM tab
1399
 
    WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
1400
 
</font></PRE></div>
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>
1410
 
<div dir="ltr">
1411
 
        <PRE><font face="Tahoma">    SELECT *
1412
 
    FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
1413
 
</font></PRE></div>
1414
 
<p dir="rtl"><span lang="fa"><font face="Tahoma">یا</font></span></p>
1415
 
<div dir="ltr">
1416
 
        <PRE><font face="Tahoma">    SELECT *
1417
 
    FROM t1 LEFT OUTER JOIN t2 USING (col);
1418
 
</font></PRE>
1419
 
</div>
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"> است&nbsp; و هم شامل ردیفهای </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>
1432
 
<div dir="ltr">
1433
 
        <PRE><font face="Tahoma">    SELECT tab1.col1, tab2.col2
1434
 
    FROM tab1, tab2
1435
 
    WHERE tab1.col1 = tab2.col1
1436
 
    UNION ALL
1437
 
    SELECT tab1.col1, NULL
1438
 
    FROM tab1
1439
 
    WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
1440
 
    ORDER BY col1
1441
 
</font></PRE>
1442
 
</div>
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
 
داده استفاده کرد. البته یک برنامه کاربردی خود می تواند به طور همزمان دو&nbsp; 
1449
 
پایگاه داده را مورد استفاده قرار داده و نتایج را با هم ترکیب کند ولی نمی تواند 
1450
 
در یک درخواست به هر&nbsp; دو پایگاه داده رجوع کند.</span></font></P>
1451
 
<H4 dir="rtl"><font face="Tahoma"><A name=4.25>4.25</A>)  
1452
 
<span lang="fa">چگونه خروجي يك تابع مي‌تواند&nbsp; چند رديف يا ستون باشد؟</span></font></H4>
1453
 
<P dir="rtl"><span lang="fa"><font face="Tahoma">در نسخه 7.3 خروجی یک تابع می 
1454
 
تواند چند ردیف یا چند ستون باشد. برای دیدن&nbsp; اطلاعات بیشتر به سایت زیر 
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>&nbsp;</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
 
یک جدول جدید به جای آن ایجاد شود، در فراخوانی مجدد&nbsp; آن تابع، محتوای ذخیره 
1464
 
شده تابع&nbsp; هنوز به جدول قدیمی اشاره می کند و بنابراین اجرای تابع با اشکال 
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> 
1471
 
</font> </H4>
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> 
1482
 
</font> </H4>
1483
 
<UL>
1484
 
  <LI dir="rtl">
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">&nbsp;در فایل</span><I>postgresql.conf </I>
1495
 
    <span lang="fa">فعال کنیم. </span> 
1496
 
  </font> 
1497
 
  <LI dir="rtl">
1498
 
        <p dir="rtl"><span lang="fa"><font face="Tahoma">می توان پایگاههای داده را 
1499
 
        روی یک فایل سیستم رمزشده نگاهداری کرد</font></span></LI></UL>
1500
 
<HR dir="rtl">
1501
 
 
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">&nbsp; </span></I>
1513
 
<span lang="fa">&nbsp;ارسال کنید.</span></font></p>
1514
 
<H4 dir="rtl"><font face="Tahoma"><A name=5.3>5.3</A>)&nbsp;
1515
 
<span lang="fa">چگونه مي‌توانم يك تابع به زبان </span>C<span lang="fa"> بنويسم 
1516
 
كه خروجي آن يك</span> <span lang="fa">‌</span>tuple<span lang="fa"> </span>&nbsp;<span lang="fa">(چند 
1517
 
تايي) باشد؟</span></font></H4>
1518
 
<P dir="rtl"><font face="Tahoma"><span lang="fa">در نسخه های 7.3 به بعد یک تابع 
1519
 
می تواند یک جدول را به عنوان خروجی برگرداند. این ویژگی در توابعی که به زبانهای
1520
 
</span>C<span lang="fa"> و </span>PL/PgSQL<span lang="fa"> نوشته می شوند به طور 
1521
 
کامل وجود دارد. راهنما برنامه نویسان را مطالعه کنید. یک مثال از نحوه برگرداندن 
1522
 
یک جدول به عنوان خروجی در </span><i>contrib/tablefunc</i><span lang="fa"> آمده 
1523
 
است.</span></font></P>
1524
 
<H4 dir="rtl"><font face="Tahoma"><A name=5.4>5.4</A>) 
1525
 
<span lang="fa">من يك فايل منبع را عوض كرده ام چرا در عمليات كامپيل مجدد آن 
1526
 
تغيير ديده نمي‌شود؟</span></font></H4>
1527
 
<P dir="rtl"><font face="Tahoma">Makefile<span lang="fa"> برای فایلهای </span>
1528
 
include<span lang="fa"> شده وابستگیها را به درستی نشان نمی دهد. برای اطمینان از 
1529
 
اینکه فایلی که عوض کرده اید حتماً دوباره کامپیل می شود دستور </span>make clean<span lang="fa"> 
1530
 
را اجرا کنید. اگر از کامپیلر </span>gcc<span lang="fa"> استفاده می کنید می 
1531
 
توانید از گزینه </span>enable-depend--<span lang="fa"> در موقع اجرای برنامه
1532
 
</span>configure<span lang="fa"> استفاده کنید این گزینه باعث می شود که وابستگیها 
1533
 
به طور اتوماتیک تولید شود.</span></font></P></BODY></HTML>
 
 
b'\\ No newline at end of file'