diff options
Diffstat (limited to 'doc/src/FAQ/FAQ_farsi.html')
-rw-r--r-- | doc/src/FAQ/FAQ_farsi.html | 1533 |
1 files changed, 0 insertions, 1533 deletions
diff --git a/doc/src/FAQ/FAQ_farsi.html b/doc/src/FAQ/FAQ_farsi.html deleted file mode 100644 index b304095b750..00000000000 --- a/doc/src/FAQ/FAQ_farsi.html +++ /dev/null @@ -1,1533 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> -<!-- saved from url=(0122) --> -<HTML dir="rtl"><HEAD><TITLE>PostgreSQL FAQ</TITLE> -<META content="Microsoft FrontPage 6.0" name=GENERATOR> -<META http-equiv=Content-Type content="text/html; charset=utf-8"></HEAD> -<BODY text=#000000 vLink=#A00000 aLink=#0000FF link=#FF0000 bgColor=#ffffff> -<h1 dir="rtl"><font face="Tahoma"><span lang="fa">سوالاتي كه اغلب در مورد -</span> </font> -<font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma"> -پرسيده مي شوند</font></span></h1> -<p dir="rtl"><font face="Tahoma"><span lang="fa">تاريخ آخرين اصلاح اين فايل: 28 -شهریور 1383 هجری شمسی</span></font></p> -<P dir="rtl"><span lang="fa"><font face="Tahoma">نگهدارنده اصلي فايل (زبان -انگليسي)در حال حاضر </font></span><font face="Tahoma">: Bruce Momjian -<A -href="mailto:[email protected]">[email protected]</A></font></P> -<P dir="rtl"><span lang="fa"><font face="Tahoma">نگهدارنده فايل به زبان فارسي: -</font></span><font face="Tahoma"><a href="mailto:[email protected]"> [email protected]</a> </font><span lang="fa"><font face="Tahoma"> محمود -تقيزاده مهرجردی</font></span><font face="Tahoma"><BR></font></P> -<P dir="rtl"><span lang="fa"><font face="Tahoma">آخرين نسخه اين فايل را -ميتوانيد از اين آدرس بگيريد </font></span><font face="Tahoma"> <A -href="http://www.postgresql.org/docs/faqs/FAQ.html">http://www.PostgreSQL.org/docs/faqs/FAQ.html</A></font></P> -<P dir="rtl"><span lang="fa"><font face="Tahoma">سوالاتي كه در مورد يك -سکوی(پلتفرم) خاص است در اين آدرس جواب داده شده اند </font></span><font face="Tahoma"> - <A -href="http://www.postgresql.org/docs/index.html">http://www.PostgreSQL.org/docs/index.html</A></font></P> -<HR dir="rtl"> - -<H2 align=center dir="rtl"><font face="Tahoma"><span lang="fa">سوالات عمومي</span></font></H2> -<p dir="rtl"><font face="Tahoma"><a href="#1.1">1.1</a>) PostgreSQL</font><span lang="fa"><font face="Tahoma"> -چيست و چگونه بايد آن را تلفظ كرد؟</font></span><font face="Tahoma"><BR><A -href="#1.2">1.2</A>) -<span lang="fa">قانون كپي رايت (حقوق معنوي) در مورد </span>PostgreSQL -<span lang="fa"> به چه صورت است؟</span><BR><A -href="#1.3">1.3</A>)<span lang="fa"> -</span>PostgreSQL</font><span lang="fa"><font face="Tahoma"> روي چه نوع -يونيكسهايي اجرا ميشود؟</font></span><font face="Tahoma"><BR><A -href="#1.4">1.4</A>) -</font><span lang="fa"><font face="Tahoma">روي چه محيطهاي غير يونيكسي ميتوان آن -را اجرا كرد؟</font></span><font face="Tahoma"><BR><A -href="#1.5">1.5</A>) PostgreSQL</font><span lang="fa"><font face="Tahoma"> -را از كجا ميتوانم بگيرم؟</font></span><font face="Tahoma"><BR><A -href="#1.6">1.6</A>) -</font><span lang="fa"><font face="Tahoma">از كجا خدمات پشتيباني بگيرم؟</font></span><font face="Tahoma"><BR><A -href="#1.7">1.7</A>)</font><span lang="fa"><font face="Tahoma"> -آخرين نسخه اعلام شده چيست؟</font></span><font face="Tahoma"><BR><A -href="#1.8">1.8</A>) -</font><span lang="fa"><font face="Tahoma">چه مستندات و راهنمائيهايي وجود دارند؟</font></span><font face="Tahoma"><BR><A -href="#1.9">1.9</A>) -<span lang="fa">چگونه ميتوانم ازاشكالات شناخته شده و يا امكاناتي كه در اين -پايگاه داده وجود ندارد مطلع شوم؟</span><BR><A -href="#1.10">1.10</A>) -</font><span lang="fa"><font face="Tahoma">چگونه ميتوانم زبان </font></span> -<font face="Tahoma">SQL</font><span lang="fa"><font face="Tahoma"> را ياد بگيرم؟</font></span><font face="Tahoma"><BR><A -href="#1.11">1.11</A>)</font><span lang="fa"><font face="Tahoma"> -آيا </font></span><font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma"> -مشكل </font></span><font face="Tahoma">Y2K</font><span lang="fa"><font face="Tahoma"> -دارد يا خير؟</font></span><font face="Tahoma"><BR><A -href="#1.12">1.12</A>) -</font><span lang="fa"><font face="Tahoma">چگونه ميتوانم به تيم برنامه نويس -</font></span><font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma"> -ملحق شوم؟</font></span><font face="Tahoma"><BR><A -href="#1.13">1.13</A>) -<span lang="fa">چگونه ميتوانم يك اشكال را به گروه برنامه نويس اعلام كنم؟</span><BR><A -href="#1.14">1.14</A>) -</font><span lang="fa"><font face="Tahoma"> وضعيت </font></span> -<font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma"> در -مقايسه با ساير </font></span><font face="Tahoma">DBMS<span lang="fa">ها به چه -صورت است؟</span><BR><A -href="#1.15">1.15</A>) -<span lang="fa">من چگونه ميتوانم از نظر مالي به </span>PostgreSQL<span lang="fa"> -كمك كنم؟</span><BR> -</font></p> -<h2 align="center" dir="rtl"><font face="Tahoma"><span lang="fa">سوالات مربوط به -استفاده از پايگاه داده</span></font></h2> -<p dir="rtl"><font face="Tahoma"><A -href="#2.1">2.1</A>) -<span lang="fa">آيا هيچ درايور </span>ODBC</font><span lang="fa"><font face="Tahoma"> -براي </font></span><font face="Tahoma">PostgreSQL</font><font face="Tahoma"><span lang="fa"> -وجود دارد؟</span><BR><A -href="#2.2">2.2</A>) -<span lang="fa">چه ابزارهايي براي استفاده از </span>PostgreSQL<span lang="fa"> -با صفحات وب وجود دارد؟</span><BR><A -href="#2.3">2.3</A>) -<span lang="fa">آيا </span>PostgreSQL<span lang="fa"> يك واسط كاربري گرافيكي -دارد؟</span><BR><A -href="#2.4">2.4</A>) -<span lang="fa">با چه زبانهاي برنامهنويسي ميتوان با </span>PostgreSQL<span lang="fa"> -ارتباط برقرار كرد؟</span><BR> -</font></p> -<h2 align="center" dir="rtl"><span lang="fa"><font face="Tahoma">سوالات مربوط به -راهبري</font></span></h2> -<p dir="rtl"><font face="Tahoma"><A -href="#3.1">3.1</A>) -<span lang="fa">چگونه ميتوانم </span>PostgreSQL<span lang="fa"> را در شاخهاي -غير از </span>/usr/local/pgsql/<span lang="fa"> نصب كنم؟</span><BR><A -href="#3.2">3.2</A>) -<span lang="fa">چرا موقعي كه من برنامه </span>postmaster<span lang="fa"> را -اجرا مي كنم پيام </span>Bad system call<span lang="fa"> و يا </span>core dump -<span lang="fa">ميگيرم؟</span><BR><A -href="#3.3">3.3</A>) -<span lang="fa">چرا موقعي كه من سعي ميكنم برنامه </span>postmaster<span lang="fa"> -را اجرا كنم خطاي</span> <I>IpcMemoryCreate</I> <span lang="fa">ميگيرم؟</span><BR><A -href="#3.4">3.4</A>)<I><span lang="fa"> -</span></I><span lang="fa">چرا موقعي كه من سعي ميكنم برنامه </span>postmaster<span lang="fa"> -را اجرا كنم خطاي</span> <I><span lang="fa"> </span>IpcSemaphoreCreate<span lang="fa"> -</span></I><span lang="fa">ميگيرم؟</span><BR><A -href="#3.5">3.5</A>) -<span lang="fa">چگونه ميتوانم اتصالات ساير ماشينها را كنترل كنم؟</span><BR><A -href="#3.6">3.6</A>) -<span lang="fa">براي كارايي بالاتر و بهتر پايگاه داده من چه تنظيماتي را بايد -انجام دهم؟</span><BR><A -href="#3.7">3.7</A>) -<span lang="fa">چه امكاناتي براي پيدا كردن اشكال وجود دارد؟</span><BR><A -href="#3.8">3.8</A>) -<span lang="fa">چرا موقعي كه من ميخواهم به پايگاه داده وصل شوم پيام</span> <I> -"Sorry, too many clients" -<span lang="fa"></span></I><span lang="fa">ميگيرم؟</span><BR><A -href="#3.9">3.9</A>)<span lang="fa"> -در شاخه </span> <I>pgsql_tmp</I> <span lang="fa"> چه چيزي قرار دارد؟</span><BR><A -href="#3.10">3.10</A>) -<span lang="fa">چرا براي به روز كردن نسخه پايگاه داده من بايد كل داده ها را -</span>dump<span lang="fa"> و مجدداً </span>restore<span lang="fa"> كنم؟</span><BR><A -href="#3.11">3.11</A>) -<span lang="fa">از چه سخت افزاري بايد استفاده كنم؟</span><BR> -</font></p> -<H2 align=center dir="rtl"><span lang="fa"><font face="Tahoma">سوالات عملياتي</font></span></H2> -<p dir="rtl"><font face="Tahoma"><A -href="#4.1">4.1</A>) تفاوت بين <span lang="en-us">binary cursors</span> و <span lang="en-us"> -Normal cursors</span> چيست؟<BR><A -href="#4.2">4.2</A>) -<span lang="fa">من چگونه ميتوانم فقط روي چند رديف اول يا يك رديف تصادفي درخواست </span> -SELECT<span lang="fa"> بزنم؟</span><BR><A -href="#4.3">4.3</A>) -<span lang="fa">من چگونه ميتوانم ليستي از جداول يا ساير چيزهايي كه در </span> -psql<span lang="fa"> وجود دارد را ببينم؟</span><BR><A -href="#4.4">4.4</A>) -<span lang="fa">چگونه يك ستون جدول را حذف ميكنيد؟ چگونه نوع داده آن را عوض -كنيم؟</span><BR><A -href="#4.5">4.5</A>) -<span lang="fa">حداكثر اندازه يك رديف، جدول و خود پايگاه داده چقدر است؟</span><BR><A -href="#4.6">4.6</A>) -<span lang="fa">چقدر فضاي ديسك سخت براي ذخيره كردن دادههاي يك فايل متني مورد -نياز است؟</span><BR><A -href="#4.7">4.7</A>) -<span lang="fa">چگونه ميتوانم بفهمم كه چه كاربران، پايگاه داده، نمايه و -جداولي در سيستم تعريف شده است؟</span><BR><A -href="#4.8">4.8</A>) -<span lang="fa">چرا درخواستهاي من كند اجرا ميشوند يا چرا از نمايه ها استفاده -نميكنند؟</span><BR><A -href="#4.9">4.9</A>) -<span lang="fa">چگونه ميتوانم نحوه بررسي درخواست را توسط بهينهساز درخواستها -مشاهده كنم؟</span><BR><A -href="#4.10">4.10</A>) -<span lang="fa">نمايه </span>R-tree<span lang="fa"> چيست؟</span><BR><A -href="#4.11">4.11</A>) -<span lang="fa">بهينه ساز تكويني درخواست چيست؟</span> (Genetic Query Optimizer)<BR><A -href="#4.12">4.12</A>) -<span lang="fa">چگونه از عبارات منظم براي جستجو استفاده كنم؟ چگونه جستجويي انجام -دهم كه حساس به متن نباشد؟ چگونه براي يك جستجوي غير حساس به متن از نمايه استفاده -كنم؟</span><BR><A -href="#4.13">4.13</A>) -<span lang="fa">چگونه ميتوانم در يك درخواست تشخيص دهم كه يك فيلد </span>NULL<span lang="fa"> -است؟</span><BR><A -href="#4.14">4.14</A>) -<span lang="fa">تفاوت بين گونههاي مختلف </span>character<span lang="fa"> چيست؟</span><BR><A -href="#4.15.1">4.15.1</A>) -<span lang="fa">چگونه ميتوانم يك فيلد سريال يا افزايشي ايجاد كنم؟</span><BR><A -href="#4.15.2">4.15.2</A>) -<span lang="fa">چگونه ميتوانم مقدار يك درج سريالي را بدانم؟</span><BR><A -href="#4.15.3">4.15.3</A>) <span lang="fa">آیا توابع ()</span>nextval<span lang="fa"> -و ()</span>currval<span lang="fa"> منجر به ایجاد شرایط </span>race<span lang="fa"> -برای سایر کاربران می شوند؟</span><BR><A -href="#4.15.4">4.15.4</A>) -<span lang="fa">چرا اعداد سریالی مربوط به تراکنشهای </span>abort<span lang="fa"> -شده مجدداً استفاده نمی شود؟ چرا بین اعداد سریالی یک فاصله خالی ایجاد می شود؟</span><BR><A -href="#4.16">4.16</A>) OID<span lang="fa"> و </span>TID<span lang="fa"> چه -هستند؟</span><BR><A -href="#4.17">4.17</A>) -<span lang="fa">معني بعضي از ترمها و كلماتي كه در </span>PostgreSQL<span lang="fa"> -استفاده ميشود چيست؟</span><BR><A -href="#4.18">4.18</A>)<span lang="fa"> -چرا من خطاي </span><i>"ERROR: Memory exhausted in AllocSetAlloc"</i><span lang="fa"> -ميگيرم؟</span><BR><A -href="#4.19">4.19</A>) -<span lang="fa">از كجا تشخيص دهم كه ويرايش يا نسخه </span>PostgreSQL<span lang="fa">يي -كه من استفاده ميكنم چيست؟</span><BR><A -href="#4.20">4.20</A>) <span lang="fa">چرا در حین اجرای عملیات روی </span> -large-object<span lang="fa">ها خطای </span>"<I>invalid large obj descriptor</I>"<span lang="fa">به -وجود می آید؟</span><BR><A -href="#4.21">4.21</A>) -<span lang="fa">چگونه يك ستون ايجاد كنم كه مقدار زمان جاري را به عنوان مقدار -پيشفرض داشته باشد؟</span><BR><A -href="#4.22">4.22</A>) -<span lang="fa">چرا زير درخواستهايي كه از </span>IN<span lang="fa"> استفاده -ميكنند كند هستند؟</span><BR><A -href="#4.23">4.23</A>) -<span lang="fa">چگونه ميتوانم يك الحاق خارجي (</span>outer join<span lang="fa">) -انجام دهم؟</span><BR><A -href="#4.24">4.24</A>) -<span lang="fa">چگونه ميتوان درخواستهايي از چند پايگاه داده توليد كرد؟</span><BR><A -href="#4.25">4.25</A>) -<span lang="fa">چگونه خروجي يك تابع ميتواند چند رديف يا ستون باشد؟</span><BR><A -href="#4.26">4.26</A>) -<span lang="fa">در توابع </span>PL/PgSQL<span lang="fa"> چرا نميتوان با اطمينان -جداول موقت را ايجاد يا حذف كرد؟</span><BR><A -href="#4.27">4.27</A>) -<span lang="fa">چه گزينههايي براي تكرار (</span>replication<span lang="fa">)</span> -<span lang="fa">وجود دارد؟</span><BR><A -href="#4.28">4.28</A>) -<span lang="fa">چه گزينههايي براي رمزنگاري وجود دارد؟</span><BR> -</font></p> -<h2 align="center" dir="rtl"><font face="Tahoma"><span lang="fa">توسعه </span> -PostgreSQL</font></h2> -<p dir="rtl"><font face="Tahoma"><A -href="#5.1">5.1</A>) -<span lang="fa">من يك تابع نوشتهام. چگونه آن را در </span>psql<span lang="fa"> -اجرا كنم؟ چرا با اجراي آن </span>core dump<span lang="fa"> ميگيرم؟</span><BR><A -href="#5.2">5.2</A>) -<span lang="fa">چگونه ميتوانم در توليد نوعها و توابع جديد و جالب براي </span> -PostgreSQL<span lang="fa"> همكاري و مشاركت داشته باشم.</span><BR><A -href="#5.3">5.3</A>) -<span lang="fa">چگونه ميتوانم يك تابع به زبان </span>C<span lang="fa"> بنويسم -كه خروجي آن يك</span> <span lang="fa"></span>tuple<span lang="fa"> </span> <span lang="fa">(چند -تايي) باشد؟</span><BR><A -href="#5.4">5.4</A>) -<span lang="fa">من يك فايل منبع را عوض كرده ام چرا در عمليات كامپيل مجدد آن -تغيير ديده نميشود؟</span><BR> -</font></p> -<HR dir="rtl"> - -<H2 align=center dir="rtl"><font face="Tahoma"><span lang="fa">سوالات عمومي</span></font></H2> -<H4 dir="rtl"><font face="Tahoma"><A name=1.1>1.1</A>) <span lang="en-us"> -PostgreSQL</span> چيست و چگونه آن را بايد تلفظ كرد؟</font></H4> -<p dir="rtl"><span lang="en-us">PostgreSQL</span> به صورت <span lang="en-us"> -Post-Gres-Q-L</span> تلفظ ميشود. يك فايل صوتي در آدرس -<a href="http://www.postfresql.org/postgresql.mp3‌"><span lang="en-us"> -http://www.postfresql.org/postgresql.mp3</span></a> براي كساني كه مايلند تلفظ -صحيح را بشنوند وجود دارد.</p> -<P dir="rtl"><span lang="en-us">PostgreSQL</span> از روي سيستم مديريت پايگاه -داده <span lang="en-us">POSTGRES</span> توسعه داده شده است (هنوز هم بعضي مواقع -براي سادگي به آن <span lang="en-us">Postgres</span> گفته ميشود) كه يك نمونه -تحقيقاتي از پايگاه دادههاي نسل بعد است. <span lang="en-us">PostgreSQL</span> -همان الگوي داده قوي و انواع داده را حفظ كرده است ولي زبان -<span lang="en-us">PostQuel</span> را با يك زيرمجموعه پيشرفته از -<span lang="en-us">SQL</span> جايگزين كرده است. <span lang="en-us">PostgreSQL</span> -متن باز بوده و متن كامل آن در دسترس است.</P> -<P dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL </span> توسط يك -تيم برنامهنويس كه همگي در گروه پست الكترونيك برنامهنويسان -<span lang="en-us">PostgreSQL</span> عضو هستند، انجام ميشود. هماهنگ كننده -اصلي در حال حاضر <span lang="en-us">Marc G. Fournier</span> به آدرس -<span lang="en-us"><a href="mailto:[email protected]"> [email protected]</a></span> ميباشد. (براي ديدن نحوه ملحق شدن به اين -تيم قسمت <A -href="#1.6">1.6</A> -را ببينيد). اين تيم در حاضر مسئوليت تمام مسائل مربوط به برنامهنويسي -<span lang="en-us">PostgreSQL</span> را بر عهده دارد. اين يك پروژه گروهي است و -تحت كنترل هيچ شركتي نيست. براي اطلاعات بيشتر در مورد اين تيم به آدرس -<A -href="http://www.postgresql.org/docs/faqs/FAQ_DEV.html"> -http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html</A> -مراجعه كنيد.</font></P> -<P dir="rtl"><font face="Tahoma">اولين نسخه <span lang="en-us">PostgreSQL</span> -توسط Andrew Yu and Jolly Chen به وجود آمد. افراد بسياري در توسعه و رفع اشكال و -انتقال آن شركت كردهاند. متن اصلي <span lang="en-us">Postgres</span> كه -<span lang="en-us">PostgreSQL</span> از روي آن نوشته شده است، توسط تعداد زيادي -دانشجوي كارشناسي ارشدو دانشجوي كارشناسي و تيم برنامهنويسي كه تحت نظر پروفسور -Michael Stonebrake در دانشگاه بركلي،كاليفرنيا كار ميكردهاند نوشته شده است.</font></P> -<P dir="rtl"><font face="Tahoma">نام اصلي نرم افزار در دانشگاه بركلي -<span lang="en-us">Postgres</span> بود. در سال 1995 بعد از اضافه شدن -<span lang="en-us">SQL</span> نام آن به<span lang="en-us"> Postgres95</span> -تغيير داده شد.<span lang="en-us"> </span>در سال 1996 نام آن به -<span lang="en-us">PostgreSQL</span> تغيير داده شد.</font></P> -<H4 dir="rtl"><font face="Tahoma"><A name=1.2>1.2</A>) قوانين كپي رايت در مورد -<span lang="en-us">PostgreSQL</span> به چه صورت است؟</font></H4> -<p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL</span> تحت قانون -كپي رايت زير قرار دارد:</font></p> -<P dir="ltr"><font face="Tahoma">PostgreSQL Data Base Management System</font></P> -<P dir="ltr"><font face="Tahoma">Portions copyright (c) 1996-2004, PostgreSQL -Global Development Group Portions Copyright (c) 1994-6 Regents of the University -of California</font></P> -<P dir="ltr"><font face="Tahoma">Permission to use, copy, modify, and distribute -this software and its documentation for any purpose, without fee, and without a -written agreement is hereby granted, provided that the above copyright notice -and this paragraph and the following two paragraphs appear in all copies.</font></P> -<P dir="ltr"><font face="Tahoma">IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA -BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR -CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS -SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</font></P> -<P dir="ltr"><font face="Tahoma">THE UNIVERSITY OF CALIFORNIA SPECIFICALLY -DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED -HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO -OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR -MODIFICATIONS.</font></P> -<P dir="rtl"><font face="Tahoma">قانون بالا ليسانس <span lang="en-us">BSD</span> -كه يك ليسانس كلاسيك براي متنهاي باز است ميباشد. هيچ محدوديتي در مورد نحوه -استفاده از متن در آن ديده نميشود. ما آن را دوست داريم و هيچ قصدي براي تغيير آن -نداريم.</font></P> -<H4 dir="rtl"><font face="Tahoma"><A name=1.3>1.3</A>) PostgreSQL</font><span lang="fa"><font face="Tahoma"> -روي چه نوع يونيكسهايي اجرا ميشود؟</font></span></H4> -<p dir="rtl"><font face="Tahoma">در حالت كلي <span lang="en-us">PostgreSQL</span> -روي هر پلتفرم (سكوي) سازگار با يونيكس اجرا ميشود. ليست پلتفرمهايي كه تاكنون -<span lang="en-us">PostgreSQL</span> روي آنها نصب و تست شده است درقسمت -دستورالعملهاي نصب آمده است.</font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=1.4>1.4</A>) </font><span lang="fa"><font face="Tahoma"> -روي چه محيطهاي غير يونيكسي ميتوان آن را اجرا كرد؟</font></span></H4> -<P dir="rtl"><font face="Tahoma"><STRONG>Client</STRONG></font></P> -<P dir="rtl"><font face="Tahoma">ميتوان <span lang="en-us">psql, </span> -كتابخانه <span lang="en-us">libpq</span> و ساير واسطها و برنامههاي كاربردي را -طوري كامپيل كرد كه روي محيطهاي ويندوز نيز اجرا شوند. در اين حالت -<span lang="en-us">Client</span> روي ويندوز اجرا ميشود و از طربق شبكه و پروتكل -<span lang="en-us">TCP/IP</span> با يك سرور كه روي يك پلتفرم لينوكس در حال -اجراست ارتباط برقرار ميكند.يك فايل <span lang="en-us">win32.mak</span> همراه با -كدهاي <span lang="en-us">PostgreSQL</span> وجود دارد كه براي كامپيل كردن -كتابخانه <span lang="en-us">libpq</span> و برنامه <span lang="en-us">psql</span> -ميباشد. <span lang="en-us">P</span><span lang="en-us">ostgreSQL</span> همچنين -امكان ارتباط به صورت <span lang="en-us">ODBC</span> را نيز دارد.</font></P> -<P dir="rtl"><font face="Tahoma"><STRONG>Server</STRONG></font></P> -<P dir="rtl"><strong style="font-weight: 400"><font face="Tahoma">با استفاده از -<span lang="en-us">Cygwin</span> و كتابخانه <span lang="en-us">Cygnus</span> -ميتوان پايگاه داده را روي ويندوز <span lang="en-us">NT</span> و يا -<span lang="en-us">Win2K</span> اجرا كرد.براي ديدن اطلاعات بيشتر فايل<span lang="en-us"> -</span></font></strong><font face="Tahoma"> <I>pgsql/doc/FAQ_MSWIN<span lang="en-us"> -</span></I>را كه بهمراه توزبعهاي <span lang="en-us">PostgreSQL</span> آمده است -ببينيد و يا اينكه به اين صفحه <A -href="http://www.postgresql.org/docs/faqs/text/FAQ_MSWIN"> -http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A> -مراجعه كنيد.</font></P> -<P dir="rtl"><font face="Tahoma">در حال حاضر يك عمليات انتقال <span lang="en-us"> -PostgreSQL</span> به روي سكوهاي <span lang="en-us">Win NT/2000/XP</span> در -جريان است. براي ديدن وضعيت اين پروژه به سايتهاي <A -href="http://momjian.postgresql.org/main/writings/pgsql/win32.html"> -http://momjian.postgresql.org/main/writings/pgsql/win32.htm</A> و <A -href="http://techdocs.postgresql.org/guides/Windows"> -http://techdocs.postgresql.org/guides/Windows</A> -مراجعه كنيد. </font></P> -<P dir="rtl"><font face="Tahoma">همچنين يك عمليات انتقال بر روي -<span lang="en-us">Novell Netware 6</span> نيز در حال انجام است كه در سايت <A -href="http://forge.novell.com/">http://forge.novell.com</A> ميتوانيد اطلاعات -بيشتر را ببينيد.</font></P> -<H4 dir="rtl"><font face="Tahoma"><A name=1.5>1.5</A>) PostgreSQL</font><span lang="fa"><font face="Tahoma"> -را از كجا ميتوانم بگيرم؟</font></span></H4> -<p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL</span> را از -سايت اصلي آن <A -href="ftp://ftp.postgresql.org/pub">ftp://ftp.PostgreSQL.org/pub</A> ميتوانيد -بگيريد. در صفحه اصلي سايت ليست ساير آدرسهايي كه ميتوانيد <span lang="en-us"> -PostgreSQL</span> را از آنها بگيريد آمده است.</font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=1.6>1.6</A>) </font><span lang="fa"><font face="Tahoma"> -از كجا خدمات پشتيباني بگيرم؟</font></span></H4> -<p dir="rtl"><font face="Tahoma">گروه پستي اصلي <A -href="mailto:[email protected]">[email protected]</A> -ميباشد. اين گروه براي بحث در مورد موضوعات مختلف در زمينه <span lang="en-us"> -PostgreSQL</span> است. براي عضو شدن در اين گروه پستي يك نامه الكترونيكي به آدرس -گروه با محتوياتی كه در ادامه آمده است ارسال كنيد. در قسمت <span lang="en-us"> -Subject</span> چيزي ننويسيد.</font></p> -<div dir="rtl"> - <PRE><font face="Tahoma"> subscribe - end -</font></PRE> -</div> -<P dir="rtl"><font face="Tahoma">آدرس گروه: <A -href="mailto:[email protected]"> [email protected]</A></font></P> -<P dir="rtl"><font face="Tahoma">همچنين يك گروه پستي هم به صورت ارسال چكيده -پيامها وجود دارد. براي عضو شدن در اين گروه يك نامه با محتويات زير به این آدرس -ارسال كنيد. <A -href="mailto:[email protected]"> -</font></P> -<div dir="rtl"> - <PRE><font face="Tahoma"> subscribe - end -</font></PRE></div> -<p dir="rtl"><font face="Tahoma">در اين گروه هر موقع حجم نامهها به 30 كيلوبايت -رسيد براي تمام اعضاء ارسال ميشود.</font></p> -<p dir="rtl"><font face="Tahoma">گروه پستي بررسي اِشكالات هم وجود دارد. براي عضو -شدن در اين گروه يك نامه با محتويات زير به -<A -href="mailto:[email protected]"> -ارسال كنيد.</font></p> -<div dir="rtl"> - <PRE><font face="Tahoma"> subscribe - end -</font></PRE></div> -<P dir="rtl"><font face="Tahoma" size="3">گروه پستي مخصوص توسعه دهندگان (برنامهنويسان) -نيز وجوددارد. براي عضويت در اين گروه يك نامه به آدرس زير با محتويات مشخص شده -ارسال كنيد. </font><font face="Tahoma"> -<A -href="mailto:[email protected]"><font size="3">[email protected]</font></A><span lang="en-us"> -</span> </font></p> -<div dir="rtl"> - <PRE><font face="Tahoma"> subscribe - end -</font></PRE> -</div> -<p dir="rtl"><font face="Tahoma">گروههاي پستي ديگري نيز در زمينه -<span lang="en-us">PostgreSQL</span> وجود دارد كه ميتوانيد در سايت <A - href="http://www.postgresql.org/">http://www.postgresql.org</A> ببينيد.</font></p> -<p dir="rtl"><font face="Tahoma">همچنين يك كانال <span lang="en-us">IRC</span> -روي <span lang="en-us">Freenode</span> و <span lang="en-us">EFNet</span> بنام <I> -PostgreSQL<span lang="en-us">#</span> </I> -وجود دارد. شما ميتوانيد از فرمان يونيكسي </font> <CODE> -<font face="Tahoma">irc -c '#PostgreSQL' "$USER" irc.phoenix.net.</font></CODE><font face="Tahoma"> -يا </font> <CODE> -<font face="Tahoma">irc -c '#PostgreSQL' "$USER" irc.freenode.net<span lang="en-us"> -</span>استفاده كنيد.</font></CODE></p> -<p dir="rtl"><font face="Tahoma">ليست شركتهايي كه از طريق آنها ميتوانيد خدمات -پشتيباني تجاري در زمينه <span lang="en-us">PostgreSQL</span> دريافت كنيد در اين -آدرس <A -href="http://techdocs.postgresql.org/companies.php"> -http://techdocs.postgresql.org/companies.php</A></font><code><font face="Tahoma"> -موجود است.</font></code></p> -<H4 dir="rtl"><font face="Tahoma"><A name=1.7>1.7</A>) </font><span lang="fa"><font face="Tahoma"> -آخرين نسخه اعلام شده چيست؟</font></span></H4> -<p dir="rtl"><font face="Tahoma">آخرين نسخه <span lang="en-us">PostgreSQL</span><span lang="en-us"> -</span> كه وجود دارد 7.4.3 است.</font></p> -<p dir="rtl"><font face="Tahoma">هدف ما آن است كه هر 6 ماه تا 8 ماه يك نسخه جديد -ارائه شود.</font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=1.8>1.8</A>) </font><span lang="fa"><font face="Tahoma"> -چه مستندات و راهنمائيهايي وجود دارند؟</font></span></H4> -<p dir="rtl"><font face="Tahoma">چندين كتابچه و صفحات راهنما و مثالهاي كوچك -همراه با متن اصلي <span lang="en-us">PostgreSQL</span> در شاخه -<span lang="en-us">doc </span>وجود دارد. براي ديدن صفحات راهنما ميتوانيد به -سايت <A -href="http://www.postgresql.org/docs">http://www.PostgreSQL.org/docs</A><span lang="en-us"> -</span> نيز مراجعه نماييد.</font></p> -<p dir="rtl"><font face="Tahoma">دو كتاب در زمينه <span lang="en-us">PostgreSQL</span><span lang="en-us"> -</span> در آدرسهاي <A -href="http://www.postgresql.org/docs/awbook.html"> -http://www.PostgreSQL.org/docs/awbook.htm</A> -و <A -href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook</A> -وجود دارد. ليستي از كتابهايي كه قابل خريد است در آدرس <A -href="http://techdocs.postgresql.org/techdocs/bookreviews.php"> -http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</A><span lang="en-us"> -</span>وجود دارد. همچنين ليستي از مقالات فني در مورد <span lang="en-us"> -PostgreSQL</span> در آدرس <A -href="http://techdocs.postgresql.org/">http://techdocs.PostgreSQL.org</A><span lang="en-us"> -</span>وجود دارد.</font></p> -<p dir="rtl"><font face="Tahoma">برنامه <span lang="en-us">psql</span> يك دستور -<span lang="en-us">d\</span> دارد كه اطلاعاتي در مورد انواع دادههاي قابل تعريف -و عملگرها و توابع و ... به ما نشان ميدهد. در سايت اصلي ما اطلاعات بيشتري را -ميتوانيد پيدا كنيد.</font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=1.9>1.9</A>) -<span lang="fa">چگونه ميتوانم ازاشكالات شناخته شده و يا امكاناتي كه در اين -پايگاه داده وجود ندارد مطلع شوم؟</span></font></H4> -<p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL</span> يك زير -مجموعه پيشرفته از <span lang="en-us">SQL-92</span> را پشتيباني ميكند. در ليست -<span lang="en-us"> </span><A -href="http://developer.postgresql.org/todo.php">TODO</A> اِشكالات -شناخته شده يا امكاناتي كه وجود ندارد و يا برنامههاي آينده آمده است.</font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=1.10>1.10</A>) </font><span lang="fa"><font face="Tahoma"> -چگونه ميتوانم زبان </font></span> -<font face="Tahoma">SQL</font><span lang="fa"><font face="Tahoma"> را ياد بگيرم؟</font></span></H4> -<p dir="rtl"><font face="Tahoma">كتاب <span lang="en-us">PostgreSQL</span> در -آدرس <span lang="en-us">SQL</span> <A -href="http://www.postgresql.org/docs/awbook.html"> -http://www.PostgreSQL.org/docs/awbook.html</A><span lang="en-us"> -</span>را آموزش ميدهد. همچنين يك كتاب در آدرس <A -href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook </A> -وجود دارد. يك راهنماي خيلي خوب هم در سايتهاي <A -href="http://www.intermedia.net/support/sql/sqltut.shtm"> -http://www.intermedia.net/support/sql/sqltut.shtm</A> -و <A -href="http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM"> -http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM</A> -و <A href="http://sqlcourse.com/">http://sqlcourse.com</A> در مورد -<span lang="en-us">SQL</span> وجود دارد.</font></p> -<p dir="rtl"><font face="Tahoma">كتاب ديگري كه ميتوان براي يادگيري -<span lang="en-us">SQL</span> از آن استفاده كرد كتاب <span lang="en-us">"SQL</span> -را در 21 روز ياد بگيريد، ويرايش دوم<span lang="en-us">" </span>در سايت <A -href="http://members.tripod.com/er4ebus/sql/index.htm"> -http://members.tripod.com/er4ebus/sql/index.htm</A><span lang="en-us"> -</span>ميباشد.</font></p> -<p dir="rtl"><font face="Tahoma">تعداد زيادي از كاربران كتاب <span lang="en-us"> -The Practical SQL</span> را ترجيح ميدهند. كتاب ديگر <span lang="en-us">The -Complete Refrence SQL</span> انتشارات <span lang="en-us">McGraw-Hill</span> -ميباشد.</font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=1.11>1.11</A>) </font><span lang="fa"><font face="Tahoma"> -آيا </font></span><font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma"> -مشكل </font></span><font face="Tahoma">Y2K</font><span lang="fa"><font face="Tahoma"> -دارد يا خير؟</font></span></H4> -<p dir="rtl"><font face="Tahoma">خير،<span lang="en-us">PostgreSQL</span> با -تاريخهاي قبل و بعد از 2000 مشكلي ندارد.</font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=1.12>1.12</A>) </font><span lang="fa"><font face="Tahoma"> -چگونه ميتوانم به تيم برنامه نويس -</font></span><font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma"> -ملحق شوم؟</font></span></H4> -<p dir="rtl"><font face="Tahoma">ابتدا،آخرين سورس را دونلود كرده و مستندات -مربوط به برنامهنويسي <span lang="en-us">PostgreSQL</span> را در سايت مطالعه -كنيد. سپس به گروههاي پستي <I>pgsql-patches </I> -و <i><span lang="en-us">pgsql-hackers -</span> </i>عضو شويد. در مرحله آخر وصلههاي با كيفيت بالا را به -<span lang="en-us">pgsql-patches</span> ارسال كنيد.</font></p> -<p dir="rtl"><font face="Tahoma">تعداد زيادي از برنامهنويسان وجود دارند كه -امتياز انجام تغييرات در <span lang="en-us">cvs</span> را دارند. هر كدام از آنها -تعداد زيادي وصله با كيفيت بالا به گروه ارسال كردهاند كه اعتماد گردانندگان -<span lang="en-us">PostgreSQL</span> را به دست آوردهاند.</font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=1.13>1.13</A>) -<span lang="fa">چگونه ميتوانم يك اِشكال را به گروه برنامه نويس اعلام كنم؟</span></font></H4> -<p dir="rtl"><font face="Tahoma">لطفاً صفحه مربوط به اِشكالات <span lang="en-us"> -PostgreSQL</span> را در سايت <A -href="http://www.postgresql.org/bugs/bugs.php"> -http://www.PostgreSQL.org/bugs/bugs.php</A><span lang="en-us"> -</span>مشاهده<span lang="en-us"> </span>كنيد. در اين سايت نحوه گزارش و ارسال يك -اشكال توضيح داده شده است.</font></p> -<p dir="rtl"><font face="Tahoma"><span lang="en-us"> </span>همچنين براي ديدن -نسخههاي جديدتر <span lang="en-us">PostgreSQL</span> و يا وجود يك وصله جديد از -سايت <A -href="ftp://ftp.postgresql.org/pub">ftp://ftp.PostgreSQL.org/pub</A> بازديد -كنيد.</font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=1.14>1.14</A>) </font><span lang="fa"><font face="Tahoma"> -وضعيت </font></span> -<font face="Tahoma">PostgreSQL</font><span lang="fa"><font face="Tahoma"> در -مقايسه با ساير </font></span><font face="Tahoma">DBMS<span lang="fa">ها به چه -صورت است؟</span></font></H4> -<p dir="rtl"><font face="Tahoma">راههاي مختلفي براي اندازهگيري و مقايسه -نرمافزارها وجود دارد كه عبارتند از امكانات، كارايي، قابليت اعتماد، پشتيباني و -قيمت</font></p> -<DL> - <div dir="rtl"> - <dl> - <dt><b><font face="Tahoma">امكانات</font></b></dt> - <dd><font face="Tahoma"><span lang="en-us">PostgreSQL</span> بيشتر امكانات - موجود در سيستمهاي پايگاه داده تجاري بزرگ نظير <span lang="en-us"> - transactions, subselets, triggers, views, foreign key referential integrity - </span>و <span lang="en-us">sophisticated locking</span> را دارد. در - <span lang="en-us">PostgreSQL</span> امكاناتي وجود دارد كه پايگاههاي داده - ديگر آن را ندارند نظير <span lang="en-us">user-defined types</span>و - <span lang="en-us">Inheritance</span>و <span lang="en-us">rules</span>و - <span lang="en-us">multi-version concurrency control</span></font></dd> - </dl> - </div> - <DD> - <p dir="rtl"> <div dir="rtl"> - <b><font face="Tahoma">كارايي</font></b><p><font face="Tahoma"><b> - </b>كارايي <span lang="en-us">PostgreSQL</span> در حد بقيه سيستمهاي تجاري و - متن باز است. در بعضي موارد سريعتر و در بعضي موارد از آنها كندتر است. در - مقايسه با <span lang="en-us">MySQL</span> براي كاربران بيشتر و درخواستهاي - پيچيده و بار زياد خواندن/نوشتن سريعتر است. در درخواستهاي ساده<span lang="en-us"> - SELECT</span> از <span lang="en-us">MySQL</span> كندتر است. البته - <span lang="en-us">MySQL</span> خيلي از امكانات <span lang="en-us"> - PostgreSQL</span> كه در بالا به آن اشاره شد را ندارد. هدف اصلي ما امكانات و - قابليت اعتماد بالاست در ضمن آنكه تلاش ميكنيم تا كارايي آن نيز بهبود يابد. - در آدرس <A - href="http://openacs.org/philosophy/why-not-mysql.html"> - http://openacs.org/philosophy/why-not-mysql.html</A> - يك مقايسه جالب بين <span lang="en-us">MySQL</span> و <span lang="en-us"> - PostgreSQL</span> وجود دارد. از طرف ديگر <span lang="en-us">MySQL</span> يك - شركت است كه محصول خود را به صورت متن باز ارائه ميكند ولي براي نرمافزار غير - متن باز خود احتياج به ليسانس تجاري دارد بر خلاف <span lang="en-us"> - PostgreSQL</span> كه يك گروه كاملاً متن باز هستند.</font></div> - <DD> - <p dir="rtl"> <div dir="rtl"> - <dl> - <dt><b><font face="Tahoma">قابليت اطمينان</font></b></dt> - <dd><font face="Tahoma">ما فكر ميكنيم كه يك سيستم پايگاه دادهاي كه مطمئن - نباشد ارزشي ندارد. ما تمام تلاشمان را براي ارائه كدهاي پايداري كه به خوبي - تست شده باشند و كمترين اِشكالات را داشته باشند ميكنيم. هر نسخه جديدي كه - ارائه ميشود حداقل يك ماه را در مرحله تست بتا ميگذراند. ما بر اين باور - هستيم كه قابليت اطمينان <span lang="en-us">PostgreSQL</span> در مقايسه با - ساير سيستمهاي پايگاه داده قابل توجه است و نسخههايي كه تاكنون ارائه شده است - نشان ميدهد كه ما توانايي ارائه يك سيستم قوي و محكم و مطمئن را كه آماده - بهرهبرداري است داريم.</font></dd> - </dl> - </div> - <DD> - <div dir="rtl"> - <dl> - <dt><b><font face="Tahoma">پشتيباني</font></b></dt> - <dd><font face="Tahoma">گروههاي پستي ما امكان ارتباط و تماس به گروه بزرگي از - برنامه نويسان و كاربران را ميدهد كه ميتوانند در حل مشكلات به ديگران كمك - كنند. دسترسي مستقيم به برنامهنويسان و گروههاي كاربران و راهنماها و كداصلي - باعث ميشود كه پشتيباني <span lang="en-us">PostgreSQL</span> نسبت به ساير - پايگاههاي داده به نحو بهتري انجام شود. همچنين امكان ارائه خدمات پشتيباني به - صورت تجاري نيز وجود دارد. براي ديدن اطلاعات بيشتر به <A - href="#1.6">FAQ section 1.6</A> مراجعه كنيد.</font></dd> - </dl> - </div> - <DD> - <div dir="rtl"> - <dl> - <dt><b><font face="Tahoma">قيمت</font></b></dt> - <dd><font face="Tahoma">هم براي استفاده تجاري و هم غير تجاري هيچ هزينهاي - نبايد پرداخت شود. هيچ محدوديتي براي انجام تغييرات در <span lang="en-us"> - PostgreSQL</span> توسط استفاده كنندگان وجود ندارد به جز مواردي كه در ليسانس - <span lang="en-us">BSD</span> به آن اشاره شده است.</font></dd> - </dl> - </div> - </DL> -<H4 dir="rtl"><font face="Tahoma"><A name=1.15>1.15</A>) -<span lang="fa">من چگونه ميتوانم از نظر مالي به </span>PostgreSQL<span lang="fa"> -كمك كنم؟</span></font></H4> -<p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgreSQL </span> داراي يك -ساختار تشكيلاتي درجه اول است كه آن را مديون <span lang="en-us">Marc Fournier</span> -است كه اين ساختار را ايجاد كرده است.</font></p> -<p dir="rtl"><font face="Tahoma">كيفيت يك ساختار براي يك پروژه متن باز بسيار -اهميت دارد. يك ساختار خوب ميتواند مانع از حوادثي شود كه در حركت روبهجلوي پروژه -خللي وارد ميكنند.</font></p> -<p dir="rtl"><font face="Tahoma">البته اين ساختار تشكيلاتي ارزان نيست. هزينههاي -ثابت ماهانه و روزمره براي نگهداري و حفظ اين ساختار مورد نياز است. اگر شما يا -شركت شما مايل است كه از نظر مالي به اين حركت كمك كند لطفاً به سايت <A -href="http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping</A> -مراجعه كرده و كمك خود را اهدا كنيد.</font></p> -<p dir="rtl"><font face="Tahoma">هر چند در صفحه اصلي عبارت <span lang="en-us"> -PostgreSQL,Inc</span> ذكر شده است ولي مشاركت عمدتاً براي پشتيباني از پروژه -<span lang="en-us">PostgreSQL</span> مي باشد و نه براي يك شركت مشخص. اگر ترجيح -ميدهيد ميتوانيد يك چك به آدرس مشخص شده ارسال كنيد.</font></p> -<p dir="rtl"><font face="Tahoma">اگر يك استفاده موفق از <span lang="en-us"> -PostgreSQL</span> سراغ داريد لطفاً آن را به سايت <A -href="http://advocacy.postgresql.org/">http://advocacy.postgresql.org</A> گزارش -دهيد.</font></p> -<HR dir="rtl"> - -<h2 align="center" dir="rtl"><font face="Tahoma"><span lang="fa">سوالات مربوط به -استفاده از پايگاه داده</span></font></h2> -<H4 dir="rtl"><font face="Tahoma"><A name=2.1>2.1</A>) -<span lang="fa">آيا هيچ درايور </span>ODBC</font><span lang="fa"><font face="Tahoma"> -براي </font></span><font face="Tahoma">PostgreSQL<span lang="fa"> -وجود دارد؟</span></font></H4> -<p dir="rtl"><font face="Tahoma"><span lang="fa">دو درايور </span>ODBC<span lang="fa"> -بنامهاي </span>psqlODBC<span lang="fa"> و </span>OpenLink<span lang="fa"> براي -</span>PostgreSQL<span lang="fa"> وجود دارد.</span></font></p> -<p dir="rtl"><font face="Tahoma"><span lang="fa">براي گرفتن </span>psqlODBC<span lang="fa"> -به سايت </span> <A -href="http://gborg.postgresql.org/project/psqlodbc/projdisplay.php"> -http://gborg.postgresql.org/project/psqlodbc/projdisplay.php</A><span lang="fa"> -مراجعه كنيد.</span></font></p> -<p dir="rtl"><font face="Tahoma"><span lang="en-us">OpenLlink</span> را از اين -سايت <A -href="http://www.openlinksw.com/">http://www.openlinksw.com</A> ميتوانيد -بگيريد. اين درايور با نرمافزارهاي مختلف <span lang="en-us">ODBC</span> كار -ميكند بنابراين شما قادر خواهيد بود با استفاده از <span lang="en-us">OpenLink</span> -روي اكثر سكوهايي كه نرمافزار<span lang="en-us">ODBC</span>دارند بدون مشكل به -<span lang="en-us">PostgreSQL</span> نيز متصل شويد.</font></p> -<p dir="rtl"><font face="Tahoma">اين محصول به كساني كه احتياج به خدمات پشتيباني -تجاري دارند فروخته ميشود. ولي نسخه آزاد اين نرمافزار هميشه در درسترس ميباشد. -براي كسب اطلاعات بيشتر سوالات خود را به آدرس <A -href="mailto:[email protected]">[email protected]</A><span lang="en-us"> -</span>ارسال نماييد.</font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=2.2>2.2</A>) -<span lang="fa">چه ابزارهايي براي استفاده از </span>PostgreSQL<span lang="fa"> -با صفحات وب وجود دارد؟</span></font></H4> -<p dir="rtl"><font face="Tahoma">در سايت <A -href="http://www.webreview.com/">http://www.webreview.com</A> براي استفاده از -<span lang="en-us">PostgreSQL</span> در صفحات وب راهنماييهاي خوبي وجود دارد.</font></p> -<P dir="rtl"><font face="Tahoma">براي تركيب و استفاده در صفحات وب زبان -<span lang="en-us">PHP</span> يك واسط بسيار مناسب است. اطلاعات بيشتر راجع به -<span lang="en-us">PHP</span>در سايت <A -href="http://www.php.net/">http://www.php.net</A><span lang="en-us"> </span>وجود -دارد.</font></P> -<P dir="rtl"><font face="Tahoma">مثالهايي نيز با استفاده از <span lang="en-us"> -Perl</span> و<span lang="en-us"> CGI.pm</span> و <span lang="en-us">mod_perl</span> -وجود دارد.</font></P> -<H4 dir="rtl"><font face="Tahoma"><A name=2.3>2.3</A>) -<span lang="fa">آيا </span>PostgreSQL<span lang="fa"> يك واسط كاربري گرافيكي -دارد؟</span></font></H4> -<p dir="rtl"><font face="Tahoma">چند نرم افزار گرافيكي براي <span lang="en-us"> -PostgreSQL</span> وجود دارد كه شامل <span lang="en-us">pgAccess</span> درسايت <A -href="http://www.pgaccess.org/">http://www.pgaccess.org</A><span lang="en-us"> -</span>و <span lang="en-us">pgAdmin III</span> در سايت <A -href="http://www.pgadmin.org/">http://www.pgadmin.org</A><span lang="en-us"> -</span>و <span lang="en-us">RHDB Admin</span> در سايت <A -href="http://sources.redhat.com/rhdb/">http://sources.redhat.com/rhdb</A><span lang="en-us"> -</span>و <span lang="en-us">Rekall</span> در سايت <A href="http://www.thekompany.com/products/rekall/"> -http://www.thekompany.com/products/rekall<span lang="en-us"> </span></A> - ميباشد. همچنين يك <span lang="en-us">phpPgAdmin</span> هم در سايت <A href="http://phppgadmin.sourceforge.net/"> -http://phppgadmin.sourceforge.net</A><span lang="en-us"> </span>وجود دارد كه يك -واسط وبي براي مديريت <span lang="en-us">PostgreSQL</span> ميباشد.</font></p> -<P dir="rtl"><font face="Tahoma">براي ديدن اطلاعات بيشتر راجع به نرمافزارهاي -گرافيكي براي <span lang="en-us">PostgreSQL</span> به آدرس <A -href="http://techdocs.postgresql.org/guides/GUITools"> -http://techdocs.postgresql.org/guides/GUITools</A><span lang="en-us"> -</span>مراجعه كنيد.</font></P> -<H4 dir="rtl"><font face="Tahoma"><A name=2.4>2.4</A>) -<span lang="fa">با چه زبانهاي برنامهنويسي ميتوان با </span>PostgreSQL<span lang="fa"> -ارتباط برقرار كرد؟</span></font></H4> -<p dir="rtl"><font face="Tahoma"><span lang="fa">بيشتر زبانهاي برنامهنويسي -ميتوانند با </span>PostgreSQL<span lang="fa"> ارتباط برقرار كنند. به همراه -سورس </span>PostgreSQL<span lang="fa"> تعدادي از واسطهاي مورد نياز براي ارتباط -با پايگاه داده از طريق زبانهاي مختلف آمده است كه در زير ليست آنها را مشاهده -ميكنيد.</span></font></p> -<ul dir="rtl"> - <li dir="ltr"> - <p dir="ltr" align="left"><font face="Tahoma">C (libpq) </font></li> - <li dir="ltr"> - <p dir="ltr" align="left"><font face="Tahoma">Embedded C (ecpg) </font> - </li> - <li dir="ltr"> - <p dir="ltr" align="left"><font face="Tahoma">Java (jdbc) </font></li> - <li dir="ltr"> - <p dir="ltr" align="left"><font face="Tahoma">Python (PyGreSQL) </font> - </li> - <li dir="ltr"> - <p dir="ltr" align="left"><font face="Tahoma">TCL (libpgtcl) </font></li> -</ul> -<p dir="rtl" align="right"><span lang="fa"><font face="Tahoma">واسطهاي ديگر در -سايت </font></span><font face="Tahoma"> <A -href="http://gborg.postgresql.org/">http://gborg.postgresql.org</A> -<span lang="fa">در قسمت </span><i>Drivers/Interfaces</i><span lang="fa"> وجود -دارد.</span></font></p> -<HR dir="rtl"> - -<h2 align="center" dir="rtl"><span lang="fa"><font face="Tahoma">سوالات مديريتي</font></span></h2> -<H4 dir="rtl"><font face="Tahoma"><A name=3.1>3.1</A>) -<span lang="fa">چگونه ميتوانم </span>PostgreSQL<span lang="fa"> را در شاخهاي -غير از </span>/usr/local/pgsql/<span lang="fa"> نصب كنم؟</span></font></H4> -<p dir="rtl"><font face="Tahoma">موقع اجراي دستور <i><span lang="en-us"> -configure</span> </i>از گزينه <span lang="en-us">prefix--</span> استفاده كنيد.</font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=3.2>3.2</A>) -<span lang="fa">چرا موقعي كه من برنامه </span>postmaster<span lang="fa"> را -اجرا مي كنم پيام </span>Bad system call<span lang="fa"> و يا </span>core dump -<span lang="fa">ميگيرم؟</span></font></H4> -<p dir="rtl"><font face="Tahoma">به دلايل مختلف ممكن است اين اتفاق بيفتد. اما در -قدم اول شما مطمئن شويد كه كه امكانات اضافه <span lang="en-us">System V</span> -در كرنل شما نصب شده باشد. <span lang="en-us">PostgreSQL</span> براي اجرا شدن -نياز به استفاده از امكانات حافظه مشترك و سمافورها دارد.</font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=3.3>3.3</A>) -<span lang="fa">چرا موقعي كه من سعي ميكنم برنامه </span>postmaster<span lang="fa"> -را اجرا كنم خطاي</span> <I>IpcMemoryCreate</I> <span lang="fa">ميگيرم؟</span></font></H4> -<p dir="rtl"><font face="Tahoma">احتمالاً قسمت ايجاد حافظه مشترك در كرنل به -درستي تنظيم نشده است و يا اينكه بايد فضاي حافظه اشتراكي در كرنل را زياد كرد. -ميزان دقيق حافظه مشترك مورد نياز بسته به معماري و نحوه استفاده از بافرها توسط -برنامه <span lang="en-us"><i>postmaster </i></span>دارد. براي بيشتر سيستمها كه -با تنظيمات پيشفرض كار ميكنند مقدار اين حافظه حدود <span lang="en-us">1</span> -مگابايت است. براي ديدن اطلاعات بيشتر راجع به حافظه مشترك و سمافور به <A -href="http://www.postgresql.org/docs/view.php?version=current&idoc=1&file=kernel-resources.html"> -PostgreSQL Administrator's Guide</A><span lang="en-us"> </span>مراجعه كنيد.</font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=3.4>3.4</A>) <span lang="fa">چرا موقعي -كه من سعي ميكنم برنامه </span>postmaster<span lang="fa"> را اجرا كنم خطاي</span> <I><span lang="fa"> - </span>IpcSemaphoreCreate<span lang="fa"> -</span></I><span lang="fa">ميگيرم؟</span></font></H4> -<p dir="rtl"><font face="Tahoma">اگر پيغام خطا<span lang="en-us"> </span><i> -(pcSemaphoreCreate: semget failed (No space left on devi<span lang="en-us">ce -</span> </i>باشد به اين معني است كه تعداد سمافورهاي تنظيم شده در كرنل كافي نيست. <span lang="en-us"> -PostgreSQL</span> براي هر فرايندي كه در -<span lang="en-us">backend</span> اجرا ميشود به يك سمافور نياز دارد. يك راه حل -موقت براي اين مسئله آن است كه <i><span lang="en-us">postmaster</span> </i>را با -اعمال محدوديت روي تعداد فرايندهايي كه ميتواند ايجاد كند اجرا كنيم. براي اينكار -از گزينه <span lang="en-us">N-</span> و يك عدد كمتر از 32 استفاده كنيد. راه حل -دائمي اين مشكل آن است كه پارامترهاي <span lang="en-us">SEMMNS, SEMMNI</span> -كرنل را افزايش دهيم.</font></p> -<P dir="rtl"><font face="Tahoma">در زمان دسترسي خيلي زياد به پايگاه داده، -سمافورهاي نامعتبر ميتوانند باعث <span lang="en-us">crash</span> كردن سيستم -شوند.</font></P> -<P dir="rtl"><font face="Tahoma">اگر پيغام خطا چيز ديگري باشد احتمالاً به دليل -آن است كه كرنل از سمافورها پشتيباني نميكند. براي ديدن اطلاعات بيشتر راهنماي -مديريتي <span lang="en-us">PostgreSQL</span> را مطالعه كنيد.</font></P> -<H4 dir="rtl"><font face="Tahoma"><A name=3.5>3.5</A>) -<span lang="fa">چگونه ميتوانم اتصالات ساير ماشينها را كنترل كنم؟</span></font></H4> -<p dir="rtl"><font face="Tahoma">به صورت پيش فرض فقط از ماشيني كه -<span lang="en-us">PostgreSQL </span>روي آن در حال اجراست ميتوان با استفاده از -سوكتهاي يونيكسي به آن متصل شد. ساير ماشينها قادر نيستند به <span lang="en-us"> -PostgreSQL</span> متصل شوند مگر آنكه گزينه <span lang="en-us">tcp_sockets</span> -در فايل <span lang="en-us">postgresql.conf</span> فعال شده و همچنين با اصلاح -فايل <span lang="en-us">PGDATA/ph_hba.conf</span> هويتشناسي مبتني بر ميزبان نيز -فعال شود. با اين كار ميتوان اتصالات <span lang="en-us">TCP/IP</span> به -<span lang="en-us">PostgreSQL</span> ايجاد كرد.</font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=3.6>3.6</A>) -<span lang="fa">براي كارايي بالاتر و بهتر پايگاه داده من چه تنظيماتي را بايد -انجام دهم؟</span></font></H4> -<p dir="rtl"><font face="Tahoma">به طور حتم استفاده از انديسها باعث بالا رفتن -سرعت پاسخگويي به درخواستها خواهد شد. دستور <span lang="en-us">EXPLAIN ANALYZE</span> -به شما امكان ديدن نحوه پردازش يك دستور توسط <span lang="en-us">PostgreSQL</span> -را ميدهد.</font></p> -<p dir="rtl"><font face="Tahoma">اگر شما تعداد زيادي<span lang="en-us"> INSERT</span> -داريد سعي كنيد آنها را با قرار دادن در يك فايل با دستور <span lang="en-us">COPY</span> -اجرا كنيد. اين دستور به مراتب از <span lang="en-us">INSERT</span> سريعتر است. -حتيالامكان سعي كنيد از تراكنشها استفاده نكنيد. تراكنشها مجموعه دستوراتي هستند -كه بيند <span lang="en-us">BEGIN</span> و <span lang="en-us">COMMIT</span> -ميآيند. اگر يك دستور به صورت عادي اجرا شود <span lang="en-us">PostgreSQL</span> -خود آن دستور را به صورت يك تراكنش مستقل نگاه كرده و اجرا ميكند. موقعی كه -تغييرات زيادي در پايگاه داده انجام ميشود انديسهاي قبلي را حذف و مجدداً ايجاد -كنيد.</font></p> -<p dir="rtl"><font face="Tahoma">استفاده از گزينه <span lang="en-us">o -F-</span> -در فرمان <i><span lang="en-us">postmaster</span></i> باعث غير فعال كردن -<span lang="en-us">()fsync</span> ميشود. اين دستور بعد از هر تراكنش اطلاعات را -روي هاردديسك منتقل ميكند.</font></p> -<p dir="rtl"><font face="Tahoma">براي افزايش تعداد بافرهاي حافظه اشتراكي از -گزينه <span lang="en-us">B-</span> به همراه فرمان <i><span lang="en-us"> -postmaster</span></i> استفاده كنيد. توجه كنيد كه اگر اين عدد خيلي بزرگ باشد ممكن -است <i><span lang="en-us">postmaster</span></i> اصلاً اجرا نشود. هر بافر 8 كيلو -بايت حافظه نياز دارد و تعداد بافرها به طور پيش فرض 64 است.</font></p> -<p dir="rtl"><font face="Tahoma">همچنين ميتوان با گزينه <span lang="en-us">S-</span> -ميزان حافظهاي كه براي مرتبسازيهاي موقت توسط <span lang="en-us">PostgreSQL</span> -استفاده ميشود را افزايش داد. مقدار پيش فرض 512 كيلو بايت است.</font></p> -<p dir="rtl"><font face="Tahoma">استفاده از دستور <span lang="en-us">CLUSTER</span> -نيز براي بالا بردن كارايي موثر ا ست. دستور راهنماي <span lang="en-us">CLUSTER</span> -اطلاعات بيشتري در اين زمينه به شما ميدهد.</font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=3.7>3.7</A>) -<span lang="fa">چه امكاناتي براي پيدا كردن اشكال وجود دارد؟</span></font></H4> -<p dir="rtl"><font face="Tahoma"><span lang="en-us">PostgerSQL</span> امكانات -مختلفي براي گزارش دادن وضعيت خود دارد كه براي اشكال زدايي ميتوان از آنها -استفاده كرد.</font></p> -<P dir="rtl"><font face="Tahoma">با استفاده از گزينه <span lang="en-us"> -enable-assert--</span> -تعداد زيادي <span lang="en-us">()assert</span> براي مونيتور كردن و توقف برنامه -در صورت بروز خطاهاي ناخواسته فعال ميشود.</font></P> -<P dir="rtl"><font face="Tahoma">هم <i><span lang="en-us">Postmaster</span></i> -و هم <i><span lang="en-us">postgres</span></i> گزينههاي زيادي براي اشكال زدايي -دارند. موقعي كه <i><span lang="en-us">postmaster</span></i> را اجرا ميكنيد -خروجي استاندارد و خطا را سمت فايل <span lang="en-us">log</span> ارسال كنيد.</font></P> -<div dir="ltr"> - <PRE><font face="Tahoma"> cd /usr/local/pgsql - ./bin/postmaster >server.log 2>&1 & -</font></PRE> -</div> -<P dir="rtl"><font face="Tahoma">اين كار يك فايل<span lang="en-us"> -log</span> -در بالاترين شاخه <span lang="en-us">PostgreSQL</span> ايجاد ميكند. اين فايل -حاوي اطلاعات مفيدي در مورد مسائل و خطاهايي است كه براي سرور اتفاق افتاده است. -براي ديدن جزئيات بيشتر ميتوان از <span lang="en-us">d-</span> به همراه -فرمان <i><span lang="en-us">postmaster</span></i> استفاده كرد. گزينه -<span lang="en-us">d-</span> همچنين يك عدد ميگيرد كه نشان دهنده سطح جزئياتي است -كه در <span lang="en-us">Log</span>فايل نوشته ميشود. با بالابردن اين عدد حجم -اطلاعات توليد شده در <span lang="en-us">Log</span>فايل نيز افزايش مييابد.</font></P> -<P dir="rtl"><font face="Tahoma">اگر <i><span lang="en-us">postmaster</span></i> -در حال اجرا نباشد، ميتوانيم <span lang="en-us">postgres</span> را به طور مستقيم -از خط فرمان اجرا كرده و دستورات <span lang="en-us">SQL</span> را به آن -بدهيم. اين كار فقط براي اشكاليابي توصيه ميشود. توجه كنيد كه در اين حالت يك -دستور با كاراكتر <span lang="en-us">newline</span> خاتمه پيدا ميكند و نه با -<span lang="en-us">;. </span>اگر <span lang="en-us">postmaster</span> را با -امكانات اشكاليابي كامپيل كرده باشيد ميتوانيد با استفاده از يك برنامه اشكالياب -اجراي برنامه را مونيتور كنيد. </font></P> -<P dir="rtl"><font face="Tahoma">اگر <i><span lang="en-us">postmaster</span></i> -در حال اجرا باشد با دستور <span lang="en-us">psql</span> ميتوان به -<span lang="en-us">postgres</span> متصل شد. با پيدا كردن <span lang="en-us">PID</span> -فرايند <span lang="en-us">postgres</span> كه <span lang="en-us">psql</span> به -آن متصل شده است ميتوان آن را مونيتور كرد. براي اينكار بايد يك برنامه اشكالياب -را به آن <span lang="en-us">pid</span> متصل كرد. اگر بخواهيم بالا آمدن -<span lang="en-us">postgres</span> را مونيتور كنيم كافي است<span lang="en-us"> -"PGOPTIONS="-W</span> <span lang="en-us">n</span> و <span lang="en-us">psql</span> -را اجرا كنيم. اين كار باعث ميشود كه <span lang="en-us">postgres</span> با -<span lang="en-us">n</span> ثانيه تاخير اجرا شود و در اين فاصله شما ميتوانيد -برنامه اشكالياب را به آن متصل كرده و با قرار دادن يك نقطه توقف روند اجراي -آن را مونيتور كنيد.</font></P> -<P dir="rtl"><font face="Tahoma"><i><span lang="en-us">postgres</span></i> -گزينههاي <span lang="en-us">s-</span> و <span lang="en-us">A-</span> و -<span lang="en-us">t-</span> دارد كه براي پيدا كردن اشكالات بسيار مناسب هستند.</font></P> -<p dir="rtl"><font face="Tahoma">شما ميتوانيد <span lang="en-us">postgreSQL</span> -را با امكانات <span lang="en-us">profiling</span> كامپيل كنيد. اين كار باعث -ميشود كه زمان اجراي دقيق هر تابع در برنامه مشخص شود. خروجيهاي توليد شده در اين -حالت در فايل <span lang="en-us">DLINUX_PROFILE.</span> ريخته ميشود.</font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=3.8>3.8</A>) -<span lang="fa">چرا موقعي كه من ميخواهم به پايگاه داده وصل شوم پيام</span> <I> -"Sorry, too many clients" -<span lang="fa"></span></I><span lang="fa">ميگيرم؟</span></font></H4> -<p dir="rtl"><font face="Tahoma">شما بايد حداكثر تعداد فرايندهاي همزمان <i> -<span lang="en-us">postmaster</span></i> را افزايش دهيد. مقدار پيش فرض 32 است. -براي افزايش آن ميتوان از گزينه <span lang="en-us">N-</span> استفاده كرد و يا -فايل <i><span lang="en-us">postgresql.conf</span></i> را اصلاح نمود</font></p> -<p dir="rtl"><font face="Tahoma">توجه كنيد كه اگر <span lang="en-us">N-</span> -مقداري بيشتر از 32 داشته باشد بايد مقدار <span lang="en-us">B-</span> را نيز -افزايش دهيم. اين مقدار بايد حداقل دو برابر مقدار <span lang="en-us">N-</span> -باشد. براي اعداد خيلي بالا بايد بعضي از پارامترهاي كرنل را نيز اصلاح كرد. -پارامترهايي نظير حداكثر اندازه حافظه اشتراكي <span lang="en-us">SHMMAX</span> ، -حداكثر تعداد سمافورها<span lang="en-us"> SEMMNI</span> و <span lang="en-us"> -SEMMNS </span>، حداكثر تعداد فرايندها <span lang="en-us">NPROC</span>، حداكثر -فرايندهاي يك كاربر <span lang="en-us">MAXUPRC</span> و حداكثر فايلهاي باز -<span lang="en-us">NFILE</span> و <span lang="en-us">NINODE. </span>يكي از -دلايلي كه تعداد اتصالات همزمان <span lang="en-us">postgreSQL</span> محدود است آن -است كه نيازهاي <span lang="en-us">PostgreSQL</span> بيش از منابع موجود سيستم -نباشد.</font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=3.9>3.9</A>) <span lang="fa"> -در شاخه </span> <I>pgsql_tmp</I> <span lang="fa"> چه چيزي قرار دارد؟</span></font></H4> -<p dir="rtl"><font face="Tahoma">دراين شاخه فايلهاي موقتي قرار دارد كه با اجراي -درخواستها به وجود آمده است. به عنوان مثال اگر براي اجراي دستور -<span lang="en-us">order by</span> نياز به انجام مرتب سازي باشد و در صورتي كه -حافظه مشخص شده با گزينه <span lang="en-us">S-</span> براي اينكار كافي نباشد -سيستم يك فايل موقت در اين شاخه ايجاد ميكند تا عمل مرتب سازي را انجام دهد.</font></p> -<P dir="rtl"><font face="Tahoma">فايلهاي موقت معمولاً به صورت اتوماتيك پاك -ميشود اما اگر <span lang="en-us">postgreSQL</span> در حين مرتب سازي -<span lang="en-us">crash</span> كند آن فايلها باقي ميمانند. با -<span lang="en-us">stop</span> و <span lang="en-us">start</span> كردن برنامه <i> -<span lang="en-us">postmaster</span></i> اين فايلها پاك ميشوند.</font></P> -<H4 dir="rtl"><font face="Tahoma"><A name=3.10>3.10</A>) -<span lang="fa">چرا براي به روز كردن نسخه پايگاه داده من بايد كل داده ها را -</span>dump<span lang="fa"> و مجدداً </span>restore<span lang="fa"> كنم؟</span></font></H4> -<p dir="rtl"><font face="Tahoma">تيم برنامه نويس <span lang="en-us">postgreSQL</span> -در نسخههاي ارائه شده كه فقط <span lang="en-us">minor</span> آنها متفاوت است فقط -تغييرات كوچكي اعمال ميكنند؛ بنابراين براي به روز كردن از نسخه -<span lang="en-us">7.2</span>به 7.2.1<span lang="en-us"> </span>نيازي به -<span lang="en-us">dump</span> و <span lang="en-us">restore</span> نيست. اما در -نسخههايي كه <span lang="en-us">major</span> آنها تغيير ميكند غالباً ساختار -داخلي جداول و فايلهاي داده تغيير ميكند. اين تغييرات معمولاً پيچيده هستند. براي -انتقال دادههاي موجود در پايگاه داده در اين حالت بايد از <span lang="en-us"> -dump</span> و <span lang="en-us">restore</span> استفاده كرد.</font></p> -<P dir="rtl"><font face="Tahoma">در نسخههايي كه ساختار روي ديسك تغييري نميكند -مي توان از برنامه <span lang="en-us">pg_upgrade</span> براي به روز كردن پايگاه -داده استفاده كرد بدون اينكه نيازي به استفاده از <span lang="en-us">dump</span> و -<span lang="en-us">restore </span> باشد. در يادداشتي كه به همراه هر توزيع ميآيد -ذكر شده است كه آيا برنامه <span lang="en-us">pg_upgrade</span> براي اين توزيع -وجود دارد يا خير.</font></P> -<H4 dir="rtl"><font face="Tahoma"><A name=3.11>3.11</A>) -<span lang="fa">از چه سخت افزاري بايد استفاده كنم؟</span><BR> -</font></H4> -<P dir="rtl"><font face="Tahoma">چون اكثر سختافزارهاي <span lang="en-us">PC -</span> سازگار هستند مردم فكر ميكنند كه كيفيت آنها نيز يكسان است. در حاليكه -اينطور نيست. استفاده از هاردهاي <span lang="en-us">SCSI</span> و حافظههاي <span lang="en-us"> -ECC</span> و مادربردهاي با كيفيت بالا نسبت به سخت افزارهاي ارزانتر نتايج بهتري -از نظر كارايي و پايداري سيستم بهمراه خواهد داشت.<span lang="en-us"> -PostgreSQL</span> روي بيشتر سخت افزارها اجرا ميشود اما اگر كارايي و اطمينان -فاكتورهاي مهمي هستند بايد سخت افزار مناسب استفاده شود. در گروههاي پستي در مورد -سخت افزار مناسب و انتخاب آن بحث شده است. </font></P> -<HR dir="rtl"> - -<H2 align=center dir="rtl"><span lang="fa"><font face="Tahoma">سوالات عملياتي</font></span></H2> -<H4 dir="rtl"><font face="Tahoma"><A name=4.1>4.1</A>) تفاوت بين -<span lang="en-us">binary cursors</span> و <span lang="en-us">Normal cursors</span> -چيست؟</font></H4> -<p dir="rtl"><font face="Tahoma"><span lang="fa">راهنماي دستور </span>DECLARE<span lang="fa"> -را مطالعه كنيد.</span></font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=4.2>4.2</A>) -<span lang="fa">من چگونه ميتوانم فقط روي چند رديف اول يا يك رديف تصادفي درخواست </span> -SELECT<span lang="fa"> بزنم؟</span></font></H4> -<p dir="rtl"><font face="Tahoma"><span lang="fa">راهنماي دستور </span>FETCH -<span lang="fa"> يا </span>SELECT...LIMIT<span lang="fa"> را ببينيد.</span></font></p> -<P dir="rtl"><font face="Tahoma"><span lang="fa">در واقع كل درخواست بايد بررسي و -ارزيابي شود حتي اگر شما فقط چند رديف اول را بخواهيد. براي مثال درخواست </span> -ORDER BY<span lang="fa"> را در نظر بگيريد. اگر انديس يا نمايهاي براي </span> -ORDER BY<span lang="fa"> وجود داشته باشد،</span>postgreSQL<span lang="fa"> -ممكن است بتواند فقط چند سطر اول درخواستي را ارزيابي كند و يا اينكه كل درخواست -پردازش شود تا تعداد رديفهاي درخواستي توليد شود.</span></font></P> -<P dir="rtl"><span lang="fa"><font face="Tahoma">براي انتخاب يك سطر تصادفي به -روش زير عمل ميكنيم:</font></span><div dir="ltr"> - <PRE><font face="Tahoma"> SELECT col - FROM tab - ORDER BY random() - LIMIT 1; -</font></PRE> -</div> -<H4 dir="rtl"><font face="Tahoma"><A name=4.3>4.3</A>) -<span lang="fa">من چگونه ميتوانم ليستي از جداول يا ساير چيزهايي كه در </span> -psql<span lang="fa"> وجود دارد را ببينم؟</span></font></H4> -<P dir="rtl"><font face="Tahoma"><span lang="fa">براي ديدن ليست جداول دستور -</span>dt\<span lang="fa"> را در برنامه </span><i>psql</i><span lang="fa"><i></i> -استفاده كنيد. براي ديدن ليست كامل فرمانها </span>?\<span lang="fa"> را اجرا -كنيد. راه ديگر خواندن متن برنامه </span>psql<span lang="fa"> است كه در شاخه -</span> <I>pgsql/src/bin/psql/describe.c <span lang="fa"></span></I><span lang="fa">قرار -دارد.<I> </I>اين فايل حاوي فرامين </span>SQL<span lang="fa">يي است كه خروجي را -براي دستوراتي كه با </span>\<span lang="fa">در </span>psql<span lang="fa"> -شروع ميشوند توليد ميكنند. راه ديگر اجراي </span>psql<span lang="fa"> با گزينه -</span>E-<span lang="fa">است. اينكار باعث ميشود كه </span>psql<span lang="fa"> -قبل از اجرا هر دستور </span>SQL<span lang="fa">متناظر آن را نشان دهد. </span> -PostgreSQL<span lang="fa">همچنين يك برنامه </span>SQLi<span lang="fa"> دارد كه -ميتوان با استفاده از آن اطلاعات داخلي پايگاه داده را استخراج كرد.</span></font></P> -<H4 dir="rtl"><font face="Tahoma"><A name=4.4>4.4</A>) -<span lang="fa">چگونه يك ستون جدول را حذف ميكنيد؟ چگونه نوع داده آن را عوض -كنيم؟</span></font></H4> -<P dir="rtl"><font face="Tahoma"><span lang="fa">حذف يك ستون در توزيع </span>7.3 -<span lang="fa">با استفاده از دستور </span>ALTER TABLE DROP COLUMN<span lang="fa"> -اضافه شده است. در نسخههاي قبلي به روش زير عمل كنيد:</span></font></P> -<div dir="ltr"> - <PRE><font face="Tahoma"> BEGIN; - LOCK TABLE old_table; - SELECT ... -- <span lang="fa">تمام ستونها غير از ستوني كه ميخواهيد آن را حذف كنيد را در اينجا بياوريد</span> - INTO TABLE new_table - FROM old_table; - DROP TABLE old_table; - ALTER TABLE new_table RENAME TO old_table; - COMMIT; -</font></PRE> -</div> -<P dir="rtl"><span lang="fa"><font face="Tahoma">براي عوض كردن نوع داده يك ستون -به روش زير عمل كنيد:</font></span></P> -<div dir="ltr"> - <PRE><font face="Tahoma"> BEGIN; - ALTER TABLE tab ADD COLUMN new_col <I>new_data_type</I>; - UPDATE tab SET new_col = CAST(old_col AS <I>new_data_type</I>); - ALTER TABLE tab DROP COLUMN old_col; - COMMIT; -</font></PRE> -</div> -<H4 dir="rtl"><font face="Tahoma"><A name=4.5>4.5</A>) -<span lang="fa">حداكثر اندازه يك رديف، جدول و خود پايگاه داده چقدر است؟</span></font></H4> -<p dir="rtl"><span lang="fa"><font face="Tahoma">محدوديتها عبارتند از:</font></span></p> -<div dir="rtl"> - <PRE><font face="Tahoma"> <span lang="fa">حداكثر اندازه پايگاه داده </span> <span lang="fa">نامحدود (تا 32 ترابايت وجود دارد)</span> - <span lang="fa">حداكثر اندازه يك جدول</span> <span lang="fa">32 ترابايت</span> - <span lang="fa">حداكثر ا ندازه يك رديف</span> <span lang="fa">1.6 ترابايت</span> - <span lang="fa">حداكثر اندازه يك فيلد</span> <span lang="fa">1 گيگا بايت</span> - <span lang="fa">حداكثر اندازه رديفهاي يك جدول</span> <span lang="fa"> نا محدود</span> - <span lang="fa">حداكثر ستونهاي يك جدول</span> <span lang="fa"> بسته به نوع جدول بين 250 تا 6000 </span> - <span lang="fa">حداكثر انديسهاي يك جدول نا محدود</span> -</font></PRE></div> -<p dir="rtl"><span lang="fa"><font face="Tahoma">البته در حالت نامحدود نيز ما -محدود به حجم هاردديسك و فضاي حافظه خواهيم بود. در صورتي که مقادير مشخص شده به -عنوان نامحدود به صورت غير معمولي بزرك شوند كارايي سيستم كاهش خواهد يافت.</font></span></p> -<P dir="rtl"><span lang="fa"><font face="Tahoma">براي ذخيره كردن جداول با اندازه -خيلي بزرگ نيازي نيست كه سيستم عامل امكان ايجاد فايلهاي بزرگ را داشته باشد. بلكه -جداول خيلي بزرگ به صورت فايلهايي به حجم يك گيگا بايت نگاهداري ميشوند.</font></span></P> -<P dir="rtl"><font face="Tahoma"><span lang="fa">اگر اندازه بلوكهاي داده را -برابر 32 كيلو بايت قرار دهيم حداكثر اندازه جدول و حداكثر تعداد ستونها 4 برابر -خواهد شد.</span></font></P> -<H4 dir="rtl"><font face="Tahoma"><A name=4.6>4.6</A>) -<span lang="fa">چقدر فضاي ديسك سخت براي ذخيره كردن دادههاي يك فايل متني مورد -نياز است؟</span></font></H4> -<P dir="rtl"><font face="Tahoma"><span lang="fa">يك پايگاه داده </span> -PostgreSQL<span lang="fa"> تا 5 برابر فضايي روي هاردديسك براي نگاهداري يك فايل -متني نياز دارد.</span></font></P> -<P dir="rtl"><font face="Tahoma"><span lang="fa">به عنوان مثال يك فايل با 100000 -خط را در نظر بگيريد كه در هر خط يك عدد صحيح و يك توضيح متني آمده است. فرض كنيد -كه رشته متني به طور متوسط 20 بايت باشد. اندازه فايل برابر 2.8 مگا بايت خواهد بود -ولي </span>PostgreSQL<span lang="fa"> براي نگاهداري اين فايل به 6.4 مگا بايت -اطلاعات نياز خواهد داشت.</span></font></P> -<div dir="rtl"> - <PRE><font face="Tahoma"> 32 bytes: <span lang="fa">اندازه سرايند هر خط به طور تقريبي</span> - 24 bytes: <span lang="fa">يك عدد صحيح و يك رشته 24 بايتي</span> - + 4 bytes: <span lang="fa">اشاره گر روي صفحه به يك چندتايي</span> - ---------------------------------------- - 60 bytes <span lang="fa">در هر رديف</span> - -<span lang="fa">اندازه صفحات داده در </span>PostgreSQL<span lang="fa"> برابر با 8 كيلو بايت است</span> - 8192 <span lang="fa">تعداد بايتها در هر صفحه</span> - ------------------- = 136 <span lang="fa">تعداد رديفها در يك صفحه پايگاه داده</span> - 60 <span lang="fa"> تعداد بايتهاي هر رديف</span> - - 100000 <span lang="fa"> تعداد رديفها</span> - -------------------- = <span lang="fa">تعدادصفحات پايگاه داده</span> - 128 <span lang="fa">تعداد رديفها در هر صفحه</span> - -735 <span lang="fa">تعداد صفحات</span> * 8192 <span lang="fa">تعداد بايتهاي هر صفحه</span> = 6,021,120 <span lang="fa">مگا بايت</span> -</font></PRE> -</div> -<P dir="rtl"><span lang="fa"><font face="Tahoma">سربار انديسها يا نمايهها از -اين مقدار كمتر است ولي چون شامل خود دادهها هم هست </font></span> -<font face="Tahoma">م<span lang="fa">مکن است اندازه آنها هم بزرگ شود</span>.</font></P> -<p dir="rtl"><font face="Tahoma">NULL<span lang="fa">ها به صورت </span>bitmap<span lang="fa"> -ذخيره ميشوند و از اينرو فضاي بسيار كمي را اشغال ميكنند.</span></font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=4.7>4.7</A>) -<span lang="fa">چگونه ميتوانم بفهمم كه چه كاربران، پايگاه داده، نمايه و -جداولي در سيستم تعريف شده است؟</span></font></H4> -<P dir="rtl"><font face="Tahoma"><i>psql<span lang="fa"> </span></i> -<span lang="fa">تعداد زيادي دستور دارد كه با </span>\<span lang="fa"> شروع -ميشوند و اين اطلاعات را در اختيار ما قرار ميدهند. براي ديدن آنها دستور </span> -?\ <span lang="fa"> را اجرا كنيد. همچنين جداول سيستمي كه با نام آنها -</span>pg<span lang="fa">_</span> <span lang="fa">شروع ميشود نيز اين اطلاعات -را در خود دارند. اجراي برنامه </span>psql<span lang="fa"> با گزينه </span>l- -<span lang="fa"> نيز باعث نشان دادن ليست تمام پايگاههاي داده ميشود.</span></font></P> -<P dir="rtl"><font face="Tahoma"><span lang="fa">همچنين فايل </span> <I> -pgsql/src/tutorial/syscat.source<span lang="fa"> -</span></I><span lang="fa">نيز فرمانهاي </span>SELECT<span lang="fa"> كه با -استفاده از آن ميتوان اطلاعات پايگاه داده را استخراج كرد شرح داده است.</span></font></P> -<H4 dir="rtl"><font face="Tahoma"><A name=4.8>4.8</A>) -<span lang="fa">چرا درخواستهاي من كند اجرا ميشوند يا چرا از نمايه ها استفاده -نميكنند؟</span></font></H4> -<p dir="rtl"><span lang="fa"><font face="Tahoma">به طور معمول </font></span> -<font face="Tahoma"><span lang="fa">براي درخواستها از نمايهها استفاده نميشود. -تنها در صورتي از نمايهها استفاده ميشود كه اندازه جدول از يك اندازه حداقل -بزرگتر باشد و درخواست هم فقط قسمتي از رديفهاي جدول را انتخاب كرده باشد. دليل -اين كار آن است كه دسترسيهاي تصادفي به هاردديسك كه به خاطر نمايهها ايجاد ميشود -ممكن است از خواندن مستقيم جدول يا خواندن ترتيبي ركوردها كندتر باشد.</span></font></p> -<p dir="rtl"><font face="Tahoma"><span lang="fa">براي تعيين اينكه از نمايه -استفاده شود يا خير، </span>PostgreSQL<span lang="fa"> بايد اطلاعات آماري را در -مورد يك جدول بداند. اين اطلاعات توسط دستور </span>ANALYZE<span lang="fa"> و -</span>VACUUM ANALYZE<span lang="fa"> به دست ميآيد. با استفاده از اين اطلاعات، -بهينه ساز از تعداد رديفهاي يك جدول اطلاع پيدا ميكند و بهتر ميتواند تعيين كند -كه آيا از نمايه استفاده شود يا خير. اطلاعات آماري همچنين براي تعيين ترتيب الحاق -و روشهاي الحاق به صورت بهينه نيز كاربر دارد. جمع آوري اطلاعات آماري بايد به صورت -دورهاي همزمان با تغيير دادههاي جدول انجام شود.</span></font></p> -<P dir="rtl"><font face="Tahoma"><span lang="fa">نمايهها به طور معمول همراه با -دستور </span>ORDER BY<span lang="fa"> به كار برده نميشوند. براي يك جدول بزرگ يك -پيمايش ترتيبي همراه با دستور مرتب سازي از به كار بردن نمايهها سريعتر خواهد بود.</span></font></P> -<p dir="rtl"><font face="Tahoma"><span lang="fa">اما اگر همراه با </span>ORDER -BY<span lang="fa"> از </span>LIMIT<span lang="fa"> استفاده شود اغلب از نمايهها -استفاده ميشود چون فقط قسمتي از جدول استفاده ميشود. در حقيقت هر چند</span> -<span lang="fa">توابع ()</span>MIN<span lang="fa"> و </span>()MAX -<span lang="fa">از نمايهها استفاده نميكنند ولي ميتوانيم با استفاده از دستور -زير با استفاده از نمايهها و دستور </span>ORDER BY<span lang="fa"> و </span> -LIMIT<span lang="fa"> آنها را به دست آوريم.</span></font></p> -<div dir="ltr"> - <PRE><font face="Tahoma"> SELECT col - FROM tab - ORDER BY col [ DESC ] - LIMIT 1; -</font></PRE> -</div> -<P dir="rtl"><font face="Tahoma"><span lang="fa">اگر شما فكر ميكنيد كه بهينه -ساز سيستم در انتخاب پيمايش ترتيبي اشتباه كرده است با دستور </span>'</font><CODE><font face="Tahoma">SET -enable_seqscan TO 'off'</font></CODE><font face="Tahoma"><span lang="fa"> -ميتوانيد ببينيد آيا استفاده از نمايهها باعث افزايش سرعت درخواستها خواهد شد.</span></font></P> -<P dir="rtl"><font face="Tahoma"><span lang="fa">استفاده از نمايهها هنگامي كه -از علائم ويژه نظير </span>LIKE<span lang="fa"> و </span>~<span lang="fa"> -استفاده ميكنيد فقط در بعضي شرايط خاصي كه در اينجا ذكر شده است ممكن است:</span></font></P> -<ul dir="rtl"> - <li dir="rtl"> - <p dir="rtl"><font face="Tahoma"><span lang="fa">ابتداي رشته جستجو بايد به - طور صريح مشخص باشد براي مثال:</span></font></li> - <li dir="rtl"> - <p dir="rtl"><span dir="rtl"><font face="Tahoma"><span lang="fa">دستورات - </span>LIKE<span lang="fa"> نبايد با علامت </span>%<span lang="fa"> شروع - شوند</span></font></span></li> - <li dir="rtl"> - <p dir="rtl"><font face="Tahoma"><span lang="fa">الگوهاي منظمي كه با </span> - ~<span lang="fa"> ميايد حتماً بايد با علامت </span>^<span lang="fa"> شروع - شود</span></font></li> - <li dir="rtl"> - <p dir="rtl"><font face="Tahoma"><span lang="fa">رشته جستجو نبايد با يك - مجموعه از كاراكترها مثل </span>[a-e]<span lang="fa"> شروع شود</span></font></li> - <li dir="rtl"> - <p dir="rtl"><font face="Tahoma"><span lang="fa">جستجوهاي غيرحساس به متن مثل - </span>ILIKE<span lang="fa"> و </span>*~<span lang="fa"> از نمايهها - استفاده نميكنند. در عوض از توابع نمايهاي كه در قسمت </span> - <A - href="#4.12">4.12</A><span lang="fa"> - توضيح داده شد استفاده ميكنند.</span></font></li> - <li dir="rtl"> - <p dir="rtl"><font face="Tahoma"><span lang="fa">مقدار پيش فرض </span>locale<span lang="fa"> - بايد در </span>initdb<span lang="fa"> استفاده شود.</span></font></li> -</ul> -<H4 dir="rtl"><font face="Tahoma"><A name=4.9>4.9</A>) -<span lang="fa">چگونه ميتوانم نحوه بررسي درخواست را توسط بهينهساز درخواستها -مشاهده كنم؟</span></font></H4> -<p dir="rtl"><font face="Tahoma"><span lang="fa">راهنماي دستور </span>EXPLAIN<span lang="fa"> -را نگاه كنيد.</span></font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=4.10>4.10</A>) -<span lang="fa">نمايه </span>R-tree<span lang="fa"> چيست؟</span></font></H4> -<p dir="rtl"><font face="Tahoma"><span lang="fa">از نمايه </span>R-Tree -<span lang="fa"> براي انديس كردن دادههاي فاصلهاي استفاده ميشود. يك نمايه -</span>hash<span lang="fa"> نميتوانند جستجوهاي محدودهاي را انجام دهد. نمايه</span> -"B-tree"<span lang="fa"> نيز براي انجام جستجوي محدودهاي در يك جهت قابل استفاده -است. اما </span>R-Tree<span lang="fa"> ميتواند دادههاي چند بعدي را نيز -پشتيباني كند. براي مثال استفاده اگر از نمايه </span>R-tree<span lang="fa"> براي -گونه </span>Point<span lang="fa"> استفاده شود سرعت درخواستهايي نظير "</span>select -all points within a bounding rectangle<span lang="fa">" به مراتب افزايش مييابد.</span></font></p> -<P dir="rtl"><font face="Tahoma"><span lang="fa">مقالهاي كه طراحي </span>R-tree<span lang="fa"> -را توضيح داده است </span></font></P> -<P><font face="Tahoma">Guttman, A. "R-trees: A Dynamic Index Structure for -Spatial Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of -Data, 45-57.</font></P> -<P dir="rtl"><font face="Tahoma">R-tree<span lang="fa"> ميتواند چندضلعيها و -چند وجهي را پشتيباني كند. در تئوري </span>R-tree<span lang="fa"> ميتواند تعداد -بعدهاي بالاتر ري نيز پشتيباني كند. در عمل توسعه </span>R-tree<span lang="fa"> -نياز به كار بيشتري دارد.</span></font></P> -<H4 dir="rtl"><font face="Tahoma"><A name=4.11>4.11</A>) -<span lang="fa">بهينه ساز تكويني درخواست چيست؟</span> (Genetic Query Optimizer)</font></H4> -<p dir="rtl"><font face="Tahoma"><span lang="fa">استفاده از </span>GEQO<span lang="fa"> -سرعت بهينه سازي درخواست را هنگاميكه تعداد زيادي جدول را با استفاده از الگوريتم -ژنتيك الحاق ميكنيم افزايش ميدهد.</span></font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=4.12>4.12</A>) -<span lang="fa">چگونه از عبارات منظم براي جستجو استفاده كنم؟ چگونه جستجويي انجام -دهم كه حساس به متن نباشد؟ چگونه براي يك جستجوي غير حساس به متن از نمايه استفاده -كنم؟</span></font></H4> -<P dir="rtl"><font face="Tahoma"><span lang="fa">براي جستجوي عبارت منظم از عملگر -</span>~<span lang="fa"> استفاده ميكنيم. براي جستجوي غير حساس به متن از عملگر -</span>*~ <span lang="fa">و يا </span>ILIKE<span lang="fa"> استفاده ميكنيم.</span></font></P> -<p dir="rtl"><span lang="fa"><font face="Tahoma">روش ديگر انجام جستجوي غير حساس -به متن در زير نشان داده شده است.</font></span></p> -<PRE><font face="Tahoma"> SELECT * - FROM tab - WHERE lower(col) = 'abc'; -</font></PRE> -<p dir="rtl"><span lang="fa"><font face="Tahoma">اين از نمايههاي استاندارد -استفاده نميكند. ولي شما مي توانيد با دستور زير يك نمايه ايجاد كنيد و از آن -استفاده كنيد.</font></span></p> -<PRE><font face="Tahoma"> CREATE INDEX tabindex ON tab (lower(col)); -</font></PRE> -<H4 dir="rtl"><font face="Tahoma"><A name=4.13>4.13</A>) I<span lang="fa">چگونه -ميتوانم در يك درخواست تشخيص دهم كه يك فيلد </span>NULL<span lang="fa"> است؟</span></font></H4> -<p dir="rtl"><font face="Tahoma"><span lang="fa">با استفاده از توابع </span>IS -NULL<span lang="fa"> و </span>IS NOT NULL<span lang="fa"> ميتوانيم </span>NULL<span lang="fa"> -بودن يك فيلد را تست كنيم.</span></font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=4.14>4.14</A>) -<span lang="fa">تفاوت بين گونههاي مختلف </span>character<span lang="fa"> چيست؟</span></font></H4> -<PRE><font face="Tahoma">Type Internal Name Notes --------------------------------------------------- -VARCHAR(n) varchar <span lang="fa">اندازه، حداكثر طول را نشان مي دهد بدون اضافه شدن كاراكتر اضافه</span> -CHAR(n) <span lang="fa"> </span> bpchar <span lang="fa">كاراكترهاي بلانك براي پر شدن طول مشخص شده استفاده ميشود</span> -TEXT <span lang="fa"> </span>text <span lang="fa"> </span>ح<span lang="fa">داكثر طول را مشخص نميكند</span> -BYTEA <span lang="fa"> </span> bytea <span lang="fa">آرايهاي از بايت با طول متغير</span> -"char" <span lang="fa"> </span>char <span lang="fa">يك كاراكتر</span> -</font></PRE> -<p dir="rtl"><font face="Tahoma"><span lang="fa">نام داخلي گونهها را در </span> -system catalogue <span lang="fa">و بعضي از پيغامهاي خطا ميتوان ديد.</span></font></p> -<p dir="rtl"><font face="Tahoma"><span lang="fa">چهار گونه اول همگي از نوع -</span>varlena <span lang="fa">هستند (4 بايت اول روي ديسك طول را مشخص ميكند كه -به دنبال آن دادهها قرار دارند.)بنابراين فضاي واقعي استفاده شده روي ديسك از -اندازه تعريف شده بيشتر است. اما اين گونهها را ميتوان فشرده كرد كه اينكار باعث -ميشود فضاي كمتري روي ديسك اشغال كنند.</span></font></p> -<P dir="rtl"><font face="Tahoma"><span lang="fa">براي ذخيره رشتههاي با طول -متغير</span><font size="2">(</font><SMALL>VARCHAR(n<span lang="fa"> -<font size="3">بهترين انتخاب است. در اين گونه حداكثر طول رشته محدود است بر خلاف -</font></span><font size="3">text<span lang="fa"> كه هيچ محدوديتي روي حداكثر -اندازه رشته نميگذارد.(در اين گونه حداكثر طول يك رشته يك گيگا بايت خواهد بود)</span></font></SMALL></font></P> -<p dir="rtl"><span lang="fa"><font face="Tahoma">گونه <font size="2">(</font></font></span><font face="Tahoma">CHAR(n<span lang="fa"> -<font size="3"> براي ذخيره دادههاي با طول يكسان است.يك گونه</font>ي</span><font size="3"> </font> -<font size="2"><span lang="fa">(</span></font>CHAR(n <span lang="fa"> -<font size="3">با كاراكترهاي بلانك (خالي) پر ميشود تا به طول مشخص شده برسد در -حاليكه گونه </font></span><font size="3">VARCHAR</font><font size="3"><span lang="fa"> -كاراكترها را به همان صورت كه هستند ذخيره ميكند. گونه </span>BYTEA<span lang="fa"> -براي ذخيره دادههاي باينري است به خصوص دادههاي باينتري كه شامل بايتهاي </span> -NULL<span lang="fa"> هستند. از نظر كارايي تمام اين گونهها يكسان هستند.</span></font></font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=4.15.1>4.15.1</A>) -<span lang="fa">چگونه ميتوانم يك فيلد سريال يا افزايشي ايجاد كنم؟</span></font></H4> -<p dir="rtl"><font face="Tahoma">PostgreSQL<span lang="fa"> از دادههاي سريال -پشتيباني ميكند. براي ايجاد يك فيلد سريال (براي داشتن يك فيلد منحصر به فرد براي -هر رديف )به روش زير عمل كنيد:</span></font></p> -<PRE><font face="Tahoma"> CREATE TABLE person ( - id SERIAL, - name TEXT - ); -</font></PRE> -<p dir="rtl"><span lang="fa"><font face="Tahoma">دستور بالا به طور اتوماتيک به -دستور زير تبديل ميشود:</font></span></p> -<PRE><font face="Tahoma"> CREATE SEQUENCE person_id_seq; - CREATE TABLE person ( - id INT4 NOT NULL DEFAULT nextval('person_id_seq'), - name TEXT - ); -</font></PRE> -<p dir="rtl"><font face="Tahoma"><span lang="fa">براي ديدن اطلاعات بيشتر به -راهنماي دستور </span> <I>create_sequence</I> <span lang="fa"> مراجعه كنيد. -همچنين ميتوان از </span>OID<span lang="fa">هر رديف به عنوان يك مقدار منحصر به -فرد استفاده كرد. اما در اين حالت براي </span>dump<span lang="fa"> كردن و </span> -reload<span lang="fa">كردن پايگاه داده بايد دستور </span><i>pg_dumps</i><span lang="fa"><i></i> -را با گزينه </span>o-<span lang="fa"> اجرا كنيد.</span></font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=4.15.2>4.15.2</A>) <span lang="fa"> -چگونه ميتوانم مقدار يك درج سريالي را بدانم؟</span></font></H4> -<P dir="rtl"><font face="Tahoma"><span lang="fa">يك روش براي گرفتن مقدار بعدي يك -فيلد سريال استفاده از تابع </span><i>()nextval</i><span lang="fa"> است.</span> -<span lang="fa">در شبه كُدي كه در ادامه آمده است روش انجام اين كار نشان داده شده -است:</span></font></P> -<PRE><font face="Tahoma"> new_id = execute("SELECT nextval('person_id_seq')"); - execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')"); -</font></PRE> -<p dir="rtl"><font face="Tahoma"><span lang="fa">با اجرا دستور فوق مقدار جديد را -در متغير </span>new_id<span lang="fa"> نيز خواهيدداشت كه ميتوانيد آن را در بقيه -درخواستهاي نيز استفاده كنيد. توجه داشته باشيد كه نام </span>SEQUENCE<span lang="fa">يي -كه به طور اتوماتيك ايجاد شده است به صورت </span><i>table</i>_<I>serialcolumn</I>_<I>seq<span lang="fa"> -</span></I><span lang="fa">خواهد بود</span>. <span lang="fa">كه در آن </span> -table<span lang="fa"> نام جدول و </span>serialcolumn<span lang="fa"> نام فيلد -سريال جدول ميباشد.</span></font></p> -<P dir="rtl"><font face="Tahoma"><span lang="fa">براي ديدن مقدار نسبت داده شده -به فيلد سريال نيز ميتوان از تابع <i>()</i></span> <I>currval </I> -<span lang="fa">به صورت زير استفاده كرد. </span></font></P> -<PRE><font face="Tahoma"> execute("INSERT INTO person (name) VALUES ('Blaise Pascal')"); - new_id = execute("SELECT currval('person_id_seq')"); -</font></PRE> -<p dir="rtl"><font face="Tahoma"><span lang="fa">و سرانجام شما ميتوانيد از -مقدار </span>OID<span lang="fa"> كه خروجي دستور </span>INSERT <span lang="fa"> - است براي ديدن مقدار پيش فرض استفاده كنيد. هر چند اين روش در همه پلتفرمها قابل -استفاده نيست و ضمن اينكه فيلد </span>oid<span lang="fa"> بعد از عدد 4 ميليارد -دوباره صفر ميشود. در زبان </span>perl<span lang="fa"> با استفاده از </span>DBI<span lang="fa"> -و </span>DBD::Pg<span lang="fa"> مقدار </span>oid<span lang="fa">را ميتوانيد -به شكل زير استخراج كنيد:</span> <span lang="fa">بعد از اجراي ()</span>st->execute<span lang="fa">$ -مقدار </span>oid<span lang="fa"> در متغير </span> <I>sth->pg_oid_status<span lang="fa">$</span></I><span lang="fa"> -ذخيره خواهد شد.</span></font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=4.15.3>4.15.3</A>) <span lang="fa">آیا -توابع ()</span>nextval<span lang="fa"> و ()</span>currval<span lang="fa"> منجر -به ایجاد شرایط </span>race<span lang="fa"> برای سایر کاربران می شوند؟</span></font></H4> -<P dir="rtl"><font face="Tahoma"><span lang="fa">خیر، استفاده از این توابع شرایط -</span>race<span lang="fa"> را به وجود نمی آورد.</span></font></P> -<H4 dir="rtl"><font face="Tahoma"><A name=4.15.4>4.15.4</A>)</font><font face="Tahoma"><span lang="fa"> -چرا اعداد سریالی مربوط به تراکنشهای </span>abort<span lang="fa"> شده مجدداً -استفاده نمی شود؟ چرا بین اعداد سریالی یک فاصله خالی ایجاد می شود؟</span></font></H4> -<P dir="rtl"><font face="Tahoma"><span lang="fa">برای بالا بردن امکان اجرای -همزمان تراکنشها، اعداد سریالی به محض اجرای تراکنش به آنها تخصیص می یابد در این -حالت اگر بعضی از تراکنشها </span>abort<span lang="fa"> شوند بین اعداد سریالی -استفاده شده یک فاصله خالی به وجود می آید.</span></font></P> -<H4 dir="rtl"><font face="Tahoma"><A name=4.16>4.16</A>) OID<span lang="fa"> و </span> -TID<span lang="fa"> چه هستند؟</span></font></H4> -<P dir="rtl"><font face="Tahoma">OID<span lang="fa"> راه حل </span>PostgreSQL<span lang="fa"> -برای داشتن یک شناسه منحصر به فرد برای هر ردیف است. هر ردیف جدیدی که ایجاد می شود -یک </span>OID<span lang="fa"> منحصر به فرد به آن اختصاص می یابد. تمام </span>OID<span lang="fa">هایی -که در حین </span>initdb<span lang="fa"> ایجاد می شوند از 16384 کمتر هستند و -</span>OID<span lang="fa">هایی بعداً تولید می شود از این عدد بزرگتر خواهد بود. -نکته مهم آن است که </span>OID<span lang="fa">ها نه تنها در یک جدول شبیه نیستند -بلکه در کل پایگاه داده هیچ دو ردیفی دارای </span>OID<span lang="fa"> یکسان -نخواهد بود.</span></font></P> -<P dir="rtl"><font face="Tahoma">PostgreSQL<span lang="fa"> از </span>OID<span lang="fa"> -در سیستم داخلی خود برای ایجاد ارتباط بین ردیفهای جداول مختلف استفاده می کند. -توصیه می شود که یک ستون از نوع </span>OID<span lang="fa"> برای ذخیره این فیلد در -جدول ایجاد کنید. ساختن یک نمایه برای این فیلد باعث دسترسی سریعتر به آن خواهد شد.</span></font></P> -<P dir="rtl"><font face="Tahoma"><span lang="fa">تمام پایگاههای داده در </span> -PostgreSQL<span lang="fa"> برای گرفتن </span>OID<span lang="fa"> جدید از یک -ناحیه مرکزی استفاده می کند. ولی اگر بخواهیم </span>OID<span lang="fa"> را به روش -دیگری بگیریم و یا اینکه در حین کپی کردن یک جدول بخواهیم </span>OID<span lang="fa">های -اصلی آن تغییر نکند به روش زیر می توانیم عمل کنیم:</span></font></P> -<P dir="rtl"> </P> -<div dir="ltr"> - <PRE><font face="Tahoma"> CREATE TABLE new_table(mycol int); - SELECT oid AS old_oid, mycol INTO tmp_table FROM old_table; - COPY tmp_table TO '/tmp/pgtable'; - COPY new_table WITH OIDS FROM '/tmp/pgtable'; - DROP TABLE tmp_table; -</font></PRE> -</div> -<P dir="rtl"><font face="Tahoma">OID<span lang="fa"> یک عدد صحیح 4 بایتی است و -بنابراین حداکثر مقدار آن 4 میلیارد خواهد بود و بعد از آن مقدار آن سرریز خواهد -شد. البته تا کنون برای کسی این اتفاق نیفتاده است و تصمیم -گرداندگان </span>PostgreSQL<span lang="fa"> آن است که قبل از آنکه این اتفاق رخ -دهد این مشکل را برطرف کنند.</span></font></P> -<P dir="rtl"><font face="Tahoma">TID<span lang="fa">ها برای شناسایی محل فیزیکی -یک ردیف بر اساس بلوک و آفست می باشد. </span>TID<span lang="fa">ها بعد از تغییر -پیدا کردن یک ردیف و یا بازخوانی آن عوض می شوند. </span>TID<span lang="fa">ها -توسط نمایه ها استفاده می شوند.</span></font></P> -<H4 dir="rtl"><font face="Tahoma"><A name=4.17>4.17</A>) -<span lang="fa">معني بعضي از ترمها و كلماتي كه در </span>PostgreSQL<span lang="fa"> -استفاده ميشود چيست؟</span></font></H4> -<P dir="rtl"><font face="Tahoma"><span lang="fa">لیست برخی از ترمها و کلماتی که -استفاده می شوند:</span></font></P> -<UL> - <LI dir="ltr"> - <p dir="ltr"><font face="Tahoma">table, relation, class <span lang="fa"> - :کلاس، رابطه، جدول</span></font><LI dir="ltr"> - <p dir="ltr"><font face="Tahoma">row, record, tuple <span lang="fa">چندتایی، - رکورد، ردیف</span></font><LI dir="ltr"> - <p dir="ltr"><font face="Tahoma">column, field, attribute <span lang="fa"> - صفت، فیلد، ستون</span></font><LI dir="ltr"> - <p dir="ltr"><font face="Tahoma">retrieve, select <span lang="fa">انتخاب، - خواندن</span></font><LI dir="ltr"> - <p dir="ltr"><font face="Tahoma">replace, update<span lang="fa">به روز کردن، - جایگزینی</span> - </font> - <LI dir="ltr"> - <p dir="ltr"><font face="Tahoma">append, insert <span lang="fa">درج، اضافه - کردن</span></font><LI dir="ltr"> - <p dir="ltr"><font face="Tahoma"><SMALL>OID</SMALL>, serial value - <span lang="fa">مقدار سریال</span></font><LI dir="ltr"> - <p dir="ltr"><font face="Tahoma">portal, cursor - </font> - <LI dir="ltr"> - <p dir="ltr"><font face="Tahoma">range variable, table name, table alias - </font> </LI></UL> -<P dir="rtl"><font face="Tahoma"><span lang="fa">یک لیست عمومی از ترمهای مورد -استفاده در پایگاه داده در آدرس </span> <A -href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html"> -http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.htm</A> -<span lang="fa">وجود دارد.</span></font></P> -<H4 dir="rtl"><font face="Tahoma"><A name=4.18>4.18</A>) <span lang="fa"> -چرا من خطاي </span><i>"ERROR: Memory exhausted in AllocSetAlloc"</i><span lang="fa"> -ميگيرم؟</span></font></H4> -<P dir="rtl"><font face="Tahoma"><span lang="fa">این خطا احتمالاً یا به خاطر -تمام شدن حافظه مجازی سیستم شماست و یا اینکه کرنل برای برنامه ها در مورد میزان -استفاده از حافظه مجازی محدودیت اعمال کرده است. قبل از اجرای برنامه اصلی یکی از -دستورات زیر را اجرا کنید.</span></font></P> -<div dir="ltr"> - <PRE><font face="Tahoma"> ulimit -d 262144 - limit datasize 256m -</font></PRE></div> -<p dir="rtl"><font face="Tahoma"><span lang="fa">بسته به نوع شل یکی از این -دستورات ممکن است با موفقیت اجرا شود. با اجرای آن دستور محدودیت حافظه مجازی برای -برنامه ها برداشته شده و با این کار احتمالاً درخواستی که قبلاً خطا می داده است -اجرا خواهد شد.</span></font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=4.19>4.19</A>) <span lang="fa">از كجا -تشخيص دهم كه ويرايش يا نسخه </span>PostgreSQL<span lang="fa">يي كه من استفاده -ميكنم چيست؟</span></font></H4> -<P dir="rtl"><font face="Tahoma"><span lang="fa">با اجرای دستور</span> -<span lang="fa">()</span>SELECT version</font></P> -<H4 dir="rtl"><font face="Tahoma"><A name=4.20>4.20</A>) <span lang="fa">چرا در -حین اجرای عملیات روی </span>large-object<span lang="fa">ها خطای </span>"<I>invalid -large obj descriptor</I>"<span lang="fa">به وجود می آید؟</span></font></H4> -<p align="right" dir="rtl"><font face="Tahoma"><span lang="fa">شما باید قبل از -شروع دستوراتی که با </span>large-object<span lang="fa">ها کار می کنند از </span> -BEGIN<span lang="fa"> و بعد از آنها هم یک </span>END<span lang="fa"> -بگذارید. در حال حاضر </span>PostgreSQL<span lang="fa"> هندل </span>large-object<span lang="fa">ها -را در زمان نهایی شدن تراکنش (</span>commit<span lang="fa">شدن)</span> -<span lang="fa">می بندد. به همین دلیل اولین تلاش برای انجام هر کاری با هندل منجر -به خطای </span><i>invalid large obj descriptor</i><span lang="fa"> خواهد شد.</span> -<span lang="fa">برای جلوگیری از این خطا حتماً باید از یک تراکنش استفاده کنید. -این کار همانطور که قبلاً گفته شد با استفاده از قرار دادن </span>BEGIN<span lang="fa"> -و </span>END<span lang="fa"> در ابتدا و انتهای دستورات انجام می شود.</span></font></p> -<p dir="rtl"><font face="Tahoma"><span lang="fa">اگر این خطا را در حین استفاده -از یک درایور </span>ODBC<span lang="fa"> دریافت کردید احتمالاً باید این دستور را -اجرا کنید: </span>set </font> <CODE><font face="Tahoma">auto-commit off</font></CODE></p> -<H4 dir="rtl"><font face="Tahoma"><A name=4.21>4.21</A>) -<span lang="fa">چگونه يك ستون ايجاد كنم كه مقدار زمان جاري را به عنوان مقدار -پيشفرض داشته باشد؟</span></font></H4> -<P dir="rtl"><font face="Tahoma"><span lang="fa">از</span> <I>CURRENT_TIMESTAMP -<span lang="fa"> </span></I><span lang="fa">استفاده کنید در مثال زیر نحوه انجام -این کار نشان داده شده است:</span></font></P> -<div dir="ltr"> - <PRE><CODE><font face="Tahoma">CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP ); -</font></CODE><font face="Tahoma"> -</font></PRE> -</div> -<H4 dir="rtl"><font face="Tahoma"><A name=4.22>4.22</A>) -<span lang="fa">چرا "زير درخواستهايي" كه از </span>IN<span lang="fa"> استفاده -ميكنند كند هستند؟</span></font></H4> -<P dir="rtl"><font face="Tahoma"><span lang="fa">در نسخه های قبل از 7.4 عمل -الحاق زیر درخواست و درخواست اصلی به این صورت انجام می شود که نتایج به دست آمده -از زیر درخواست به صورت ترتیبی برای هر ردیف اعمال می شود. اگر زیردرخواست ردیف های -کمی را به عنوان خروجی برگرداند و درخواست بیرونی ردیف های زیادی را شامل شود -استفاده از </span>IN<span lang="fa"> بهترین روش است در غیر اینصورت بهتر است از -</span>EXISTS<span lang="fa"> استفاده شود</span></font></P> -<div dir="ltr"> - <PRE><font face="Tahoma"> SELECT * - FROM tab - WHERE col IN (SELECT subcol FROM subtab); -</font></PRE></div> -<p dir="rtl"><span lang="fa"><font face="Tahoma">به:</font></span></p> -<div dir="ltr"> - <PRE><font face="Tahoma"> SELECT * - FROM tab - WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col); -</font></PRE></div> -<p dir="rtl"><font face="Tahoma"><span lang="fa">برای اجرای سریع این درخواست -باید برای ستون </span>subcol<span lang="fa"> نمایه ایجاد شده باشد.</span></font></p> -<P dir="rtl"><font face="Tahoma"><span lang="fa">در نسخه های بعد از 7.4 </span> -IN<span lang="fa"> برای الحاق از همان تکنیک پیچیده مورد استفاده در دستورات -معمولی استفاده می کند و بنابراین استفاده از آن نسبت به </span>EXISTS<span lang="fa"> -ارجحیت دارد.</span></font><H4 dir="rtl"><font face="Tahoma"><A name=4.23>4.23</A>) <span lang="fa"> -چگونه ميتوانم يك الحاق خارجي (</span>outer join<span lang="fa">) انجام دهم؟</span></font></H4> -<p dir="rtl"><span lang="fa"><font face="Tahoma">برای انجام الحاق خارجی به روش -زیر عمل کنید:</font></span></p> -<div dir="ltr"> - <PRE><font face="Tahoma"> SELECT * - FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col); -</font></PRE></div> -<p dir="rtl"><span lang="fa"><font face="Tahoma">یا</font></span></p> -<div dir="ltr"> - <PRE><font face="Tahoma"> SELECT * - FROM t1 LEFT OUTER JOIN t2 USING (col); -</font></PRE> -</div> -<P dir="rtl"><font face="Tahoma"><span lang="fa">درخواستهای بالا </span>t1.col , -t2.col<span lang="fa"> را به هم الحاق می کند و همچنین ردیفهای </span>t1<span lang="fa"> -که نظیر آنها در </span>t2<span lang="fa"> نبوده است را نیز برمی گرداند. اگر از -</span>RIGHT<span lang="fa"> استفاده شود نتیجه بر عکس است. یعنی ردیفهای </span> -t2<span lang="fa"> که نظیر آنها در </span>t1 <span lang="fa">نباشد را نشان می -دهد و اگر از </span>FULL<span lang="fa"> استفاده شود نتیجه هم شامل ردیفهای -</span>t1<span lang="fa"> است و هم شامل ردیفهای </span>t2<span lang="fa">. -استفاده از کلمه </span>OUTER<span lang="fa"> اختیاری است چرا که این کلمه به طور -ضمنی دستورهای </span>LEFT, RIGHT, FULL<span lang="fa"> وجود دارد.</span></font></P> -<P dir="rtl"><font face="Tahoma"><span lang="fa">در نسخه های قبلی پایگاه داده می -توانیم الحاق خارجی را به کمک دستورهای </span>UNION, NOT IN<span lang="fa"> شبیه -سازی کنیم. این کار در مثال زیر نشان داده شده است:</span><BR></font></P> -<div dir="ltr"> - <PRE><font face="Tahoma"> SELECT tab1.col1, tab2.col2 - FROM tab1, tab2 - WHERE tab1.col1 = tab2.col1 - UNION ALL - SELECT tab1.col1, NULL - FROM tab1 - WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2) - ORDER BY col1 -</font></PRE> -</div> -<H4 dir="rtl"><font face="Tahoma"><A name=4.24>4.24</A>) -<span lang="fa">چگونه ميتوان درخواستهايي از چند پايگاه داده توليد كرد؟</span></font></H4> -<P dir="rtl"><font face="Tahoma"><span lang="fa">در حال حاضر این کار امکان پذیر -نیست. </span>PostgreSQL<span lang="fa"> فقط امکان درخواست از پایگاه داده ای را -می دهد که در حال حاضر به آن متصل باشید و نمی توان به طور همزمان از دو پایگاه -داده استفاده کرد. البته یک برنامه کاربردی خود می تواند به طور همزمان دو -پایگاه داده را مورد استفاده قرار داده و نتایج را با هم ترکیب کند ولی نمی تواند -در یک درخواست به هر دو پایگاه داده رجوع کند.</span></font></P> -<H4 dir="rtl"><font face="Tahoma"><A name=4.25>4.25</A>) -<span lang="fa">چگونه خروجي يك تابع ميتواند چند رديف يا ستون باشد؟</span></font></H4> -<P dir="rtl"><span lang="fa"><font face="Tahoma">در نسخه 7.3 خروجی یک تابع می -تواند چند ردیف یا چند ستون باشد. برای دیدن اطلاعات بیشتر به سایت زیر -مراجعه کنید:</font></span><font face="Tahoma"><A -href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A><span lang="fa"> -</span> </font><H4 dir="rtl"><font face="Tahoma"><A name=4.26>4.26</A>) -<span lang="fa">در توابع </span>PL/PgSQL<span lang="fa"> چرا نميتوان با اطمينان -جداول موقت را ايجاد يا حذف كرد؟</span></font></H4> -<P dir="rtl"><font face="Tahoma">PL/PgSQL<span lang="fa"> محتوای توابع را ذخیره -(</span>cache<span lang="fa">) می کند.</span> <span lang="fa">یک اثر بد جانبی -این کار آن است که اگر در تابع از یک جدول موقت استفاده شود و بعداً آن جدول حذف و -یک جدول جدید به جای آن ایجاد شود، در فراخوانی مجدد آن تابع، محتوای ذخیره -شده تابع هنوز به جدول قدیمی اشاره می کند و بنابراین اجرای تابع با اشکال -مواجه می شود. راه حل این مشکل آن است که برای جداول موقت از دستور </span>EXECUTE<span lang="fa"> -استفاده شود که این کار سبب می شود که درخواست برای هر بار اجرا مجدداً پیمایش و -تفسیر شود.</span></font></P> -<H4 dir="rtl"><font face="Tahoma"><A name=4.27>4.27</A>) -<span lang="fa">چه گزينههايي براي تكرار (</span>replication<span lang="fa">)</span> -<span lang="fa">وجود دارد؟</span> -</font> </H4> -<P dir="rtl"><font face="Tahoma">There are several master/slave replication -options available. These allow only the master to make database changes and the -slave can only do database reads. The bottom of <A -href="http://gborg.postgresql.org/genpage?replication_research"> -http://gborg.PostgreSQL.org/genpage?replication_research</A> -lists them. A multi-master replication solution is being worked on at <A -href="http://gborg.postgresql.org/project/pgreplication/projdisplay.php"> -http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</A>.</font></P> -<H4 dir="rtl"><font face="Tahoma"><A name=4.28>4.28</A>) -<span lang="fa">چه گزينههايي براي رمزنگاري وجود دارد؟</span> -</font> </H4> -<UL> - <LI dir="rtl"> - <p dir="rtl"><font face="Tahoma">contrib<I>/pgcrypto </I><span lang="fa"> - شامل توابع رمزنگاری زیادی است که می توان از آنها در دستورات </span>SQL<span lang="fa"> - استفاده کرد.</span></font><LI dir="rtl"> - <p dir="rtl"><font face="Tahoma"><span lang="fa">برای رمز کردن ارتباط بین - </span>client<span lang="fa"> و </span>server<span lang="fa"> ، پایگاه داده - حتماً گزینه </span>SSL<span lang="fa"> را بر روی پایگاه داده فعال کنیم.</span></font><LI dir="rtl"> - <p dir="rtl"><font face="Tahoma"><span lang="fa">در نسخه 7.3 به بعد کلمات - عبور کاربران به طور اتوماتیک به صورت رمز شده ذخیره می شود ولی در نسخه های - قبلی باید گزینه </span> - <I>PASSWORD_ENCRYPTION</I> <span lang="fa"> در فایل</span><I>postgresql.conf </I> - <span lang="fa">فعال کنیم. </span> - </font> - <LI dir="rtl"> - <p dir="rtl"><span lang="fa"><font face="Tahoma">می توان پایگاههای داده را - روی یک فایل سیستم رمزشده نگاهداری کرد</font></span></LI></UL> -<HR dir="rtl"> - -<H2 align=center dir="rtl"><font face="Tahoma">Extending PostgreSQL</font></H2> -<H4 dir="rtl"><font face="Tahoma"><A name=5.1>5.1</A>) -<span lang="fa">من يك تابع نوشتهام. چگونه آن را در </span>psql<span lang="fa"> -اجرا كنم؟ چرا با اجراي آن </span>core dump<span lang="fa"> ميگيرم؟</span></font></H4> -<p dir="rtl"><span lang="fa"><font face="Tahoma">دلایل مختلفی می تواند باعث بروز -این مشکل شود. اما قبل از همه تابع خود را به صورت جدا تست کنید.</font></span></p> -<H4 dir="rtl"><font face="Tahoma"><A name=5.2>5.2</A>) <span lang="fa">چگونه -ميتوانم در توليد نوعها و توابع جديد و جالب براي -</span>PostgreSQL<span lang="fa"> همكاري و مشاركت داشته باشم</span></font><span lang="fa"><font face="Tahoma">؟</font></span></H4> -<p dir="rtl"><span lang="fa"><font face="Tahoma">کد خود را به گروه پستی </font> -</span><font face="Tahoma"> <I>pgsql-hackers<span lang="fa"> </span></I> -<span lang="fa"> ارسال کنید.</span></font></p> -<H4 dir="rtl"><font face="Tahoma"><A name=5.3>5.3</A>) -<span lang="fa">چگونه ميتوانم يك تابع به زبان </span>C<span lang="fa"> بنويسم -كه خروجي آن يك</span> <span lang="fa"></span>tuple<span lang="fa"> </span> <span lang="fa">(چند -تايي) باشد؟</span></font></H4> -<P dir="rtl"><font face="Tahoma"><span lang="fa">در نسخه های 7.3 به بعد یک تابع -می تواند یک جدول را به عنوان خروجی برگرداند. این ویژگی در توابعی که به زبانهای -</span>C<span lang="fa"> و </span>PL/PgSQL<span lang="fa"> نوشته می شوند به طور -کامل وجود دارد. راهنما برنامه نویسان را مطالعه کنید. یک مثال از نحوه برگرداندن -یک جدول به عنوان خروجی در </span><i>contrib/tablefunc</i><span lang="fa"> آمده -است.</span></font></P> -<H4 dir="rtl"><font face="Tahoma"><A name=5.4>5.4</A>) -<span lang="fa">من يك فايل منبع را عوض كرده ام چرا در عمليات كامپيل مجدد آن -تغيير ديده نميشود؟</span></font></H4> -<P dir="rtl"><font face="Tahoma">Makefile<span lang="fa"> برای فایلهای </span> -include<span lang="fa"> شده وابستگیها را به درستی نشان نمی دهد. برای اطمینان از -اینکه فایلی که عوض کرده اید حتماً دوباره کامپیل می شود دستور </span>make clean<span lang="fa"> -را اجرا کنید. اگر از کامپیلر </span>gcc<span lang="fa"> استفاده می کنید می -توانید از گزینه </span>enable-depend--<span lang="fa"> در موقع اجرای برنامه -</span>configure<span lang="fa"> استفاده کنید این گزینه باعث می شود که وابستگیها -به طور اتوماتیک تولید شود.</span></font></P></BODY></HTML>
\ No newline at end of file |