From 1b46bcc0c36138d68abc6334153408762c5618ad Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Fri, 27 May 2005 22:10:20 +0000 Subject: Update Farsi FAQ. Mahmoud Taghizadeh --- doc/src/FAQ/FAQ_farsi.html | 2294 ++++++++++++++++++++++---------------------- 1 file changed, 1158 insertions(+), 1136 deletions(-) (limited to 'doc/src') diff --git a/doc/src/FAQ/FAQ_farsi.html b/doc/src/FAQ/FAQ_farsi.html index f9b89147033..b304095b750 100644 --- a/doc/src/FAQ/FAQ_farsi.html +++ b/doc/src/FAQ/FAQ_farsi.html @@ -1,388 +1,394 @@ -
تاريخ آخرين اصلاح اين فايل: -28 شهریور 1383 هجری شمسی
-نگهدارنده اصلي فايل (زبان
-انگليسي)در حال حاضر : Bruce Momjian
+
+
+ تاريخ آخرين اصلاح اين فايل: 28
+شهریور 1383 هجری شمسی نگهدارنده اصلي فايل (زبان
+انگليسي)در حال حاضر : Bruce Momjian
pgman@candle.pha.pa.us نگهدارنده فايل به زبان فارسي:
+ نگهدارنده فايل به زبان فارسي:
-m.taghizadeh@imenafzar.net محمود
-تقيزاده مهرجردی آخرين نسخه اين فايل را
-ميتوانيد از اين آدرس بگيريد محمود
+تقيزاده مهرجردی آخرين نسخه اين فايل را
+ميتوانيد از اين آدرس بگيريد http://www.PostgreSQL.org/docs/faqs/FAQ.html سوالاتي كه در مورد يك
-سکوی(پلتفرم)
-خاص است در اين آدرس جواب داده شده اند سوالاتي كه در مورد يك
+سکوی(پلتفرم) خاص است در اين آدرس جواب داده شده اند
+ http://www.PostgreSQL.org/docs/index.html 1.1)
-PostgreSQL چيست و چگونه بايد آن را
-تلفظ كرد؟ 1.1) PostgreSQL
+چيست و چگونه بايد آن را تلفظ كرد؟سوالاتي كه اغلب در مورد
+
+PostgreSQL
+پرسيده مي شوند
+
-سوالات عمومي
-
سوالات عمومي
+
1.2)
-قانون كپي رايت (حقوق معنوي) در مورد PostgreSQL
- به چه صورت است؟
قانون كپي رايت (حقوق معنوي) در مورد
1.3)
-PostgreSQL
PostgreSQL روي چه نوع
+يونيكسهايي اجرا ميشود؟
1.4)
-روي چه محيطهاي غير يونيكسي ميتوان آن
-را اجرا كرد؟
روي چه محيطهاي غير يونيكسي ميتوان آن
+را اجرا كرد؟
1.5) PostgreSQL
-را از كجا ميتوانم بگيرم؟
1.6)
-از كجا خدمات پشتيباني بگيرم؟
از كجا خدمات پشتيباني بگيرم؟
1.7)
-آخرين نسخه اعلام شده چيست؟
1.8)
-چه مستندات و راهنمائيهايي وجود دارند؟
چه مستندات و راهنمائيهايي وجود دارند؟
1.9)
-چگونه ميتوانم ازاشكالات شناخته شده و يا امكاناتي كه در اين
-پايگاه داده وجود ندارد مطلع شوم؟
چگونه ميتوانم ازاشكالات شناخته شده و يا امكاناتي كه در اين
+پايگاه داده وجود ندارد مطلع شوم؟
1.10)
-چگونه ميتوانم زبان
-SQL را ياد بگيرم؟
چگونه ميتوانم زبان
+SQL را ياد بگيرم؟
1.11)
-آيا PostgreSQL
-مشكل Y2K
-دارد يا خير؟
PostgreSQL
+مشكل Y2K
+دارد يا خير؟
1.12)
-چگونه ميتوانم به تيم برنامه نويس
+چگونه ميتوانم به تيم برنامه نويس
PostgreSQL
-ملحق شوم؟
1.13)
-چگونه ميتوانم يك اشكال را به گروه برنامه نويس اعلام كنم؟
چگونه ميتوانم يك اشكال را به گروه برنامه نويس اعلام كنم؟
1.14)
- وضعيت
-PostgreSQL در
-مقايسه با ساير DBMSها به چه
-صورت است؟
وضعيت
+PostgreSQL در
+مقايسه با ساير DBMSها به چه
+صورت است؟
1.15)
-من چگونه ميتوانم از نظر مالي به PostgreSQL
-كمك كنم؟
+من چگونه ميتوانم از نظر مالي به PostgreSQL
+كمك كنم؟
2.1)
-آيا هيچ درايور ODBC
-براي PostgreSQL
-وجود دارد؟
آيا هيچ درايور ODBC
+براي PostgreSQL
+وجود دارد؟
2.2)
-چه ابزارهايي براي استفاده از PostgreSQL
-با صفحات وب وجود دارد؟
چه ابزارهايي براي استفاده از PostgreSQL
+با صفحات وب وجود دارد؟
2.3)
-آيا PostgreSQL يك واسط كاربري گرافيكي
-دارد؟
آيا PostgreSQL يك واسط كاربري گرافيكي
+دارد؟
2.4)
-با چه زبانهاي برنامهنويسي ميتوان با PostgreSQL
-ارتباط برقرار كرد؟
+با چه زبانهاي برنامهنويسي ميتوان با PostgreSQL
+ارتباط برقرار كرد؟
3.1)
-چگونه ميتوانم PostgreSQL را در شاخهاي
-غير از /usr/local/pgsql/ نصب كنم؟
چگونه ميتوانم PostgreSQL را در شاخهاي
+غير از /usr/local/pgsql/ نصب كنم؟
3.2)
-چرا موقعي كه من برنامه postmaster را
-اجرا مي كنم پيام Bad system call و يا core dump
-ميگيرم؟
چرا موقعي كه من برنامه postmaster را
+اجرا مي كنم پيام Bad system call و يا core dump
+ميگيرم؟
3.3)
-چرا موقعي كه من سعي ميكنم برنامه postmaster
-را اجرا كنم خطاي IpcMemoryCreate ميگيرم؟
چرا موقعي كه من سعي ميكنم برنامه postmaster
+را اجرا كنم خطاي IpcMemoryCreate ميگيرم؟
3.4)
-چرا موقعي كه من سعي ميكنم برنامه postmaster
-را اجرا كنم خطاي IpcSemaphoreCreate
-ميگيرم؟
چرا موقعي كه من سعي ميكنم برنامه postmaster
+را اجرا كنم خطاي IpcSemaphoreCreate
+ميگيرم؟
3.5)
-چگونه ميتوانم اتصالات ساير ماشينها را كنترل كنم؟
چگونه ميتوانم اتصالات ساير ماشينها را كنترل كنم؟
3.6)
-براي كارايي بالاتر و بهتر پايگاه داده من چه تنظيماتي را بايد
-انجام دهم؟
براي كارايي بالاتر و بهتر پايگاه داده من چه تنظيماتي را بايد
+انجام دهم؟
3.7)
-چه امكاناتي براي پيدا كردن اشكال وجود دارد؟
چه امكاناتي براي پيدا كردن اشكال وجود دارد؟
3.8)
-چرا موقعي كه من ميخواهم به پايگاه داده وصل شوم پيام "Sorry, too many clients"
-ميگيرم؟
چرا موقعي كه من ميخواهم به پايگاه داده وصل شوم پيام
+"Sorry, too many clients"
+ميگيرم؟
3.9)
-در شاخه pgsql_tmp چه چيزي قرار دارد؟
pgsql_tmp چه چيزي قرار دارد؟
3.10)
-چرا براي به روز كردن نسخه پايگاه داده من بايد كل داده ها را
-dump و مجدداً restore كنم؟
چرا براي به روز كردن نسخه پايگاه داده من بايد كل داده ها را
+dump و مجدداً restore كنم؟
3.11)
-از چه سخت افزاري بايد استفاده كنم؟
+از چه سخت افزاري بايد استفاده كنم؟
4.1)
-تفاوت بين binary cursors و Normal
-cursors چيست؟
4.1) تفاوت بين binary cursors و
+Normal cursors چيست؟
4.2)
-من چگونه ميتوانم فقط روي چند رديف اول
-يا يك رديف تصادفي درخواست SELECT
-بزنم؟
من چگونه ميتوانم فقط روي چند رديف اول يا يك رديف تصادفي درخواست
+SELECT بزنم؟
4.3)
-من چگونه ميتوانم ليستي از جداول يا ساير چيزهايي كه در
-psql وجود دارد را ببينم؟
من چگونه ميتوانم ليستي از جداول يا ساير چيزهايي كه در
+psql وجود دارد را ببينم؟
4.4)
-چگونه يك ستون جدول را حذف ميكنيد؟ چگونه نوع داده آن را عوض
-كنيم؟
چگونه يك ستون جدول را حذف ميكنيد؟ چگونه نوع داده آن را عوض
+كنيم؟
4.5)
-حداكثر اندازه يك رديف، جدول و خود پايگاه داده چقدر است؟
حداكثر اندازه يك رديف، جدول و خود پايگاه داده چقدر است؟
4.6)
-چقدر فضاي ديسك سخت براي ذخيره كردن دادههاي يك فايل متني مورد
-نياز است؟
چقدر فضاي ديسك سخت براي ذخيره كردن دادههاي يك فايل متني مورد
+نياز است؟
4.7)
-چگونه ميتوانم بفهمم كه چه كاربران، پايگاه داده، نمايه و
-جداولي در سيستم تعريف شده است؟
چگونه ميتوانم بفهمم كه چه كاربران، پايگاه داده، نمايه و
+جداولي در سيستم تعريف شده است؟
4.8)
-چرا درخواستهاي من كند اجرا ميشوند يا چرا از نمايه ها استفاده
-نميكنند؟
چرا درخواستهاي من كند اجرا ميشوند يا چرا از نمايه ها استفاده
+نميكنند؟
4.9)
-چگونه ميتوانم نحوه بررسي درخواست را توسط بهينهساز درخواستها
-مشاهده كنم؟
چگونه ميتوانم نحوه بررسي درخواست را توسط بهينهساز درخواستها
+مشاهده كنم؟
4.10)
-نمايه R-tree چيست؟
نمايه R-tree چيست؟
4.11)
-بهينه ساز تكويني درخواست چيست؟ (Genetic Query Optimizer)
بهينه ساز تكويني درخواست چيست؟ (Genetic Query Optimizer)
4.12)
-چگونه از عبارات منظم براي جستجو استفاده كنم؟ چگونه جستجويي انجام
-دهم كه حساس به متن نباشد؟ چگونه براي يك جستجوي غير حساس به متن از نمايه استفاده
-كنم؟
چگونه از عبارات منظم براي جستجو استفاده كنم؟ چگونه جستجويي انجام
+دهم كه حساس به متن نباشد؟ چگونه براي يك جستجوي غير حساس به متن از نمايه استفاده
+كنم؟
4.13)
-چگونه ميتوانم در يك درخواست تشخيص دهم كه يك فيلد NULL
-است؟
چگونه ميتوانم در يك درخواست تشخيص دهم كه يك فيلد NULL
+است؟
4.14)
-تفاوت بين گونههاي مختلف character چيست؟
تفاوت بين گونههاي مختلف character چيست؟
4.15.1)
-چگونه ميتوانم يك فيلد سريال يا افزايشي ايجاد كنم؟
چگونه ميتوانم يك فيلد سريال يا افزايشي ايجاد كنم؟
4.15.2)
-چگونه ميتوانم مقدار يك درج سريالي را بدانم؟
4.15.3) آیا توابع ()nextval
-و ()currval منجر به ایجاد شرایط race
-برای سایر کاربران می شوند؟
چگونه ميتوانم مقدار يك درج سريالي را بدانم؟
4.15.3) آیا توابع ()nextval
+و ()currval منجر به ایجاد شرایط race
+برای سایر کاربران می شوند؟
4.15.4)
-چرا اعداد سریالی مربوط به تراکنشهای abort
-شده مجدداً استفاده نمی شود؟ چرا بین اعداد سریالی یک فاصله خالی ایجاد می شود؟
4.16)
-OID و TID چه هستند؟
چرا اعداد سریالی مربوط به تراکنشهای abort
+شده مجدداً استفاده نمی شود؟ چرا بین اعداد سریالی یک فاصله خالی ایجاد می شود؟
4.16) OID و TID چه
+هستند؟
4.17)
-معني بعضي از ترمها و كلماتي كه در PostgreSQL
-استفاده ميشود چيست؟
معني بعضي از ترمها و كلماتي كه در PostgreSQL
+استفاده ميشود چيست؟
4.18)
-چرا من خطاي "ERROR: Memory exhausted in AllocSetAlloc"
-ميگيرم؟
"ERROR: Memory exhausted in AllocSetAlloc"
+ميگيرم؟
4.19)
-از كجا تشخيص دهم كه ويرايش يا نسخه PostgreSQLيي
-كه من استفاده ميكنم چيست؟
4.20) چرا در حین اجرای عملیات روی
-large-objectها خطای "invalid large obj descriptor"به
-وجود می آید؟
از كجا تشخيص دهم كه ويرايش يا نسخه PostgreSQLيي
+كه من استفاده ميكنم چيست؟
4.20) چرا در حین اجرای عملیات روی
+large-objectها خطای "invalid large obj descriptor"به
+وجود می آید؟
4.21)
-چگونه يك ستون ايجاد كنم كه مقدار زمان جاري را به عنوان مقدار
-پيشفرض داشته باشد؟
چگونه يك ستون ايجاد كنم كه مقدار زمان جاري را به عنوان مقدار
+پيشفرض داشته باشد؟
4.22)
-چرا زير درخواستهايي كه از IN استفاده
-ميكنند كند هستند؟
چرا زير درخواستهايي كه از IN استفاده
+ميكنند كند هستند؟
4.23)
-چگونه ميتوانم يك الحاق خارجي (outer join)
-انجام دهم؟
چگونه ميتوانم يك الحاق خارجي (outer join)
+انجام دهم؟
4.24)
-چگونه ميتوان درخواستهايي از چند پايگاه داده توليد كرد؟
چگونه ميتوان درخواستهايي از چند پايگاه داده توليد كرد؟
4.25)
-چگونه خروجي يك تابع ميتواند چند رديف يا ستون باشد؟
چگونه خروجي يك تابع ميتواند چند رديف يا ستون باشد؟
4.26)
-در توابع PL/PgSQL چرا نميتوان با اطمينان
-جداول موقت را ايجاد يا حذف كرد؟
در توابع PL/PgSQL چرا نميتوان با اطمينان
+جداول موقت را ايجاد يا حذف كرد؟
4.27)
-چه گزينههايي براي تكرار (replication)
-وجود دارد؟
چه گزينههايي براي تكرار (replication)
+وجود دارد؟
4.28)
-چه گزينههايي براي رمزنگاري وجود دارد؟
+چه گزينههايي براي رمزنگاري وجود دارد؟
5.1)
-من يك تابع نوشتهام. چگونه آن را در psql
-اجرا كنم؟ چرا با اجراي آن core dump ميگيرم؟
من يك تابع نوشتهام. چگونه آن را در psql
+اجرا كنم؟ چرا با اجراي آن core dump ميگيرم؟
5.2)
-چگونه ميتوانم در توليد نوعها و توابع جديد و جالب براي
-PostgreSQL همكاري و مشاركت داشته باشم.
چگونه ميتوانم در توليد نوعها و توابع جديد و جالب براي
+PostgreSQL همكاري و مشاركت داشته باشم.
5.3)
-چگونه ميتوانم يك تابع به زبان C بنويسم
-كه خروجي آن يك tuple (چند
-تايي) باشد؟
چگونه ميتوانم يك تابع به زبان C بنويسم
+كه خروجي آن يك tuple (چند
+تايي) باشد؟
5.4)
-من يك فايل منبع را عوض كرده ام چرا در عمليات كامپيل مجدد آن
-تغيير ديده نميشود؟
+من يك فايل منبع را عوض كرده ام چرا در عمليات كامپيل مجدد آن
+تغيير ديده نميشود؟
PostgreSQL به صورت -Post-Gres-Q-L تلفظ ميشود. يك فايل صوتي در آدرس +PostgreSQL چيست و چگونه آن را بايد تلفظ كرد؟
+PostgreSQL به صورت +Post-Gres-Q-L تلفظ ميشود. يك فايل صوتي در آدرس -http://www.postfresql.org/postgresql.mp3 براي كساني كه مايلند تلفظ -صحيح را بشنوند وجود دارد.
-PostgreSQL از روي سيستم مديريت پايگاه -داده POSTGRES توسعه داده شده است (هنوز هم بعضي مواقع -براي سادگي به آن Postgres گفته ميشود) كه يك نمونه -تحقيقاتي از پايگاه دادههاي نسل بعد است. PostgreSQL -همان الگوي داده قوي و انواع داده را حفظ كرده است ولي زبان -PostQuel را با يك زيرمجموعه پيشرفته از -SQL جايگزين كرده است. PostgreSQL -متن باز بوده و متن كامل آن در دسترس است.
-PostgreSQL توسط -يك تيم برنامهنويس كه همگي در گروه پست الكترونيك برنامهنويسان -PostgreSQL عضو هستند، انجام ميشود. هماهنگ كننده -اصلي در حال حاضر Marc G. Fournier به آدرس +http://www.postfresql.org/postgresql.mp3 براي كساني كه مايلند تلفظ +صحيح را بشنوند وجود دارد.
+PostgreSQL از روي سيستم مديريت پايگاه +داده POSTGRES توسعه داده شده است (هنوز هم بعضي مواقع +براي سادگي به آن Postgres گفته ميشود) كه يك نمونه +تحقيقاتي از پايگاه دادههاي نسل بعد است. PostgreSQL +همان الگوي داده قوي و انواع داده را حفظ كرده است ولي زبان +PostQuel را با يك زيرمجموعه پيشرفته از +SQL جايگزين كرده است. PostgreSQL +متن باز بوده و متن كامل آن در دسترس است.
+PostgreSQL توسط يك +تيم برنامهنويس كه همگي در گروه پست الكترونيك برنامهنويسان +PostgreSQL عضو هستند، انجام ميشود. هماهنگ كننده +اصلي در حال حاضر Marc G. Fournier به آدرس -scrappy@PostgreSQL.org ميباشد. (براي ديدن نحوه ملحق شدن به اين -تيم قسمت ميباشد. (براي ديدن نحوه ملحق شدن به اين +تيم قسمت 1.6 -را ببينيد). اين تيم در حاضر مسئوليت تمام مسائل مربوط به برنامهنويسي -PostgreSQL را بر عهده دارد. اين يك پروژه گروهي است و -تحت كنترل هيچ شركتي نيست. براي اطلاعات بيشتر در مورد اين تيم به آدرس +را ببينيد). اين تيم در حاضر مسئوليت تمام مسائل مربوط به برنامهنويسي +PostgreSQL را بر عهده دارد. اين يك پروژه گروهي است و +تحت كنترل هيچ شركتي نيست. براي اطلاعات بيشتر در مورد اين تيم به آدرس http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html -مراجعه كنيد.
-اولين نسخه PostgreSQL -توسط Andrew Yu and Jolly Chen به وجود آمد. افراد بسياري در توسعه و رفع اشكال و -انتقال آن شركت كردهاند. متن اصلي Postgres كه -PostgreSQL از روي آن نوشته شده است، توسط تعداد زيادي -دانشجوي كارشناسي ارشدو دانشجوي كارشناسي و تيم برنامهنويسي كه تحت نظر پروفسور -Michael Stonebrake در دانشگاه بركلي،كاليفرنيا كار ميكردهاند نوشته شده است.
-نام اصلي نرم افزار در دانشگاه بركلي -Postgres بود. در سال 1995 بعد از اضافه شدن -SQL نام آن به Postgres95 -تغيير داده شد. در سال 1996 نام آن به -PostgreSQL تغيير داده شد.
-PostgreSQL تحت قانون -كپي رايت زير قرار دارد:
+href="http://www.postgresql.org/docs/faqs/FAQ_DEV.html"> +http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html +مراجعه كنيد. +اولين نسخه PostgreSQL +توسط Andrew Yu and Jolly Chen به وجود آمد. افراد بسياري در توسعه و رفع اشكال و +انتقال آن شركت كردهاند. متن اصلي Postgres كه +PostgreSQL از روي آن نوشته شده است، توسط تعداد زيادي +دانشجوي كارشناسي ارشدو دانشجوي كارشناسي و تيم برنامهنويسي كه تحت نظر پروفسور +Michael Stonebrake در دانشگاه بركلي،كاليفرنيا كار ميكردهاند نوشته شده است.
+نام اصلي نرم افزار در دانشگاه بركلي +Postgres بود. در سال 1995 بعد از اضافه شدن +SQL نام آن به Postgres95 +تغيير داده شد. در سال 1996 نام آن به +PostgreSQL تغيير داده شد.
+PostgreSQL تحت قانون +كپي رايت زير قرار دارد:
PostgreSQL Data Base Management System
-Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group -Portions Copyright (c) 1994-6 Regents of the University of California
-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.
-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.
-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.
-قانون بالا ليسانس BSD -كه يك ليسانس كلاسيك براي متنهاي باز است ميباشد. هيچ محدوديتي در مورد نحوه -استفاده از متن در آن ديده نميشود. ما آن را دوست داريم و هيچ قصدي براي تغيير آن -نداريم.
-در حالت كلي PostgreSQL -روي هر پلتفرم (سكوي) سازگار با يونيكس اجرا ميشود. ليست پلتفرمهايي كه تاكنون -PostgreSQL روي آنها نصب و تست شده است درقسمت -دستورالعملهاي نصب آمده است.
-Portions copyright (c) 1996-2004, PostgreSQL +Global Development Group Portions Copyright (c) 1994-6 Regents of the University +of California
+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.
+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.
+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.
+قانون بالا ليسانس BSD +كه يك ليسانس كلاسيك براي متنهاي باز است ميباشد. هيچ محدوديتي در مورد نحوه +استفاده از متن در آن ديده نميشود. ما آن را دوست داريم و هيچ قصدي براي تغيير آن +نداريم.
+در حالت كلي PostgreSQL +روي هر پلتفرم (سكوي) سازگار با يونيكس اجرا ميشود. ليست پلتفرمهايي كه تاكنون +PostgreSQL روي آنها نصب و تست شده است درقسمت +دستورالعملهاي نصب آمده است.
+Client
-ميتوان psql, -كتابخانه libpq و ساير واسطها و برنامههاي كاربردي را -طوري كامپيل كرد كه روي محيطهاي ويندوز نيز اجرا شوند. در اين حالت -Client روي ويندوز اجرا ميشود و از طربق شبكه و پروتكل -TCP/IP با يك سرور كه روي يك پلتفرم لينوكس در حال -اجراست ارتباط برقرار ميكند.يك فايل win32.mak همراه با -كدهاي PostgreSQL وجود دارد كه براي كامپيل كردن -كتابخانه libpq و برنامه psql -ميباشد. PostgreSQL همچنين -امكان ارتباط به صورت ODBC را نيز دارد.
+ميتوان psql, +كتابخانه libpq و ساير واسطها و برنامههاي كاربردي را +طوري كامپيل كرد كه روي محيطهاي ويندوز نيز اجرا شوند. در اين حالت +Client روي ويندوز اجرا ميشود و از طربق شبكه و پروتكل +TCP/IP با يك سرور كه روي يك پلتفرم لينوكس در حال +اجراست ارتباط برقرار ميكند.يك فايل win32.mak همراه با +كدهاي PostgreSQL وجود دارد كه براي كامپيل كردن +كتابخانه libpq و برنامه psql +ميباشد. PostgreSQL همچنين +امكان ارتباط به صورت ODBC را نيز دارد.
Server
-با استفاده از
-Cygwin و كتابخانه Cygnus
-ميتوان پايگاه داده را روي ويندوز NT و يا
-Win2K اجرا كرد.براي ديدن اطلاعات بيشتر فايل
+ با استفاده از
+Cygwin و كتابخانه Cygnus
+ميتوان پايگاه داده را روي ويندوز NT و يا
+Win2K اجرا كرد.براي ديدن اطلاعات بيشتر فايل
pgsql/doc/FAQ_MSWIN
-را كه بهمراه توزبعهاي PostgreSQL آمده است
-ببينيد و يا اينكه به اين صفحه http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN
-مراجعه كنيد. در حال حاضر يك عمليات انتقال
-PostgreSQL به روي سكوهاي Win NT/2000/XP در
-جريان است. براي ديدن وضعيت اين پروژه به سايتهاي را كه بهمراه توزبعهاي PostgreSQL آمده است
+ببينيد و يا اينكه به اين صفحه
+http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN
+مراجعه كنيد. در حال حاضر يك عمليات انتقال
+PostgreSQL به روي سكوهاي Win NT/2000/XP در
+جريان است. براي ديدن وضعيت اين پروژه به سايتهاي
-http://momjian.postgresql.org/main/writings/pgsql/win32.htm و http://techdocs.postgresql.org/guides/Windows
-مراجعه كنيد. همچنين يك عمليات انتقال بر روي
-Novell Netware 6 نيز در حال انجام است كه در سايت http://forge.novell.com ميتوانيد اطلاعات
-بيشتر را ببينيد.
همچنين يك عمليات انتقال بر روي +Novell Netware 6 نيز در حال انجام است كه در سايت http://forge.novell.com ميتوانيد اطلاعات +بيشتر را ببينيد.
PostgreSQL را از -سايت اصلي آن ftp://ftp.PostgreSQL.org/pub ميتوانيد -بگيريد. در صفحه اصلي سايت ليست ساير آدرسهايي كه ميتوانيد -PostgreSQL را از آنها بگيريد آمده است.
-گروه پستي اصلي
+ PostgreSQL را از
+سايت اصلي آن ftp://ftp.PostgreSQL.org/pub ميتوانيد
+بگيريد. در صفحه اصلي سايت ليست ساير آدرسهايي كه ميتوانيد
+PostgreSQL را از آنها بگيريد آمده است. گروه پستي اصلي pgsql-general@PostgreSQL.org
-ميباشد. اين گروه براي بحث در مورد موضوعات مختلف در زمينه
-PostgreSQL است. براي عضو شدن در اين گروه پستي يك نامه الكترونيكي
-به آدرس گروه با
-محتوياتی كه در ادامه آمده است ارسال كنيد. در قسمت
-Subject چيزي ننويسيد.1.6)
+از كجا خدمات پشتيباني بگيرم؟
+
subscribe end
آدرس گروه: pgsql-general-request@PostgreSQL.org
-همچنين يك گروه پستي هم به صورت ارسال چكيده
-پيامها وجود دارد. براي عضو شدن در اين گروه يك نامه با محتويات زير به
-این آدرس
-ارسال كنيد. pgsql-general-digest-request@PostgreSQL.org
+ آدرس گروه:
+pgsql-general-request@PostgreSQL.org همچنين يك گروه پستي هم به صورت ارسال چكيده
+پيامها وجود دارد. براي عضو شدن در اين گروه يك نامه با محتويات زير به این آدرس
+ارسال كنيد.
+pgsql-general-digest-request@PostgreSQL.org
در اين گروه هر موقع حجم نامهها به 30 كيلوبايت
-رسيد براي تمام اعضاء ارسال ميشود. گروه پستي بررسي اِشكالات هم وجود دارد. براي عضو
-شدن در اين گروه يك نامه با محتويات زير به
+ در اين گروه هر موقع حجم نامهها به 30 كيلوبايت
+رسيد براي تمام اعضاء ارسال ميشود. گروه پستي بررسي اِشكالات هم وجود دارد. براي عضو
+شدن در اين گروه يك نامه با محتويات زير به
pgsql-bugs-request@PostgreSQL.org
-ارسال كنيد. گروه پستي مخصوص توسعه دهندگان
-(برنامهنويسان) نيز وجوددارد. براي عضويت در اين گروه يك نامه به آدرس زير با
-محتويات مشخص شده ارسال كنيد.
+ گروه پستي مخصوص توسعه دهندگان (برنامهنويسان)
+نيز وجوددارد. براي عضويت در اين گروه يك نامه به آدرس زير با محتويات مشخص شده
+ارسال كنيد.
pgsql-hackers-request@PostgreSQL.org
گروههاي پستي ديگري نيز در زمينه
-PostgreSQL وجود دارد كه ميتوانيد در سايت http://www.postgresql.org ببينيد. همچنين يك كانال IRC
-روي Freenode و EFNet بنام PostgreSQL#
-وجود دارد. شما ميتوانيد از فرمان يونيكسي ليست شركتهايي كه از طريق آنها ميتوانيد خدمات
-پشتيباني تجاري در زمينه PostgreSQL دريافت كنيد در اين
-آدرس http://techdocs.postgresql.org/companies.php گروههاي پستي ديگري نيز در زمينه
+PostgreSQL وجود دارد كه ميتوانيد در سايت http://www.postgresql.org ببينيد. همچنين يك كانال IRC
+روي Freenode و EFNet بنام
+PostgreSQL#
+وجود دارد. شما ميتوانيد از فرمان يونيكسي ليست شركتهايي كه از طريق آنها ميتوانيد خدمات
+پشتيباني تجاري در زمينه PostgreSQL دريافت كنيد در اين
+آدرس
+http://techdocs.postgresql.org/companies.php آخرين نسخه PostgreSQL
- كه وجود دارد 7.4.3 است. هدف ما آن است كه هر 6 ماه تا 8 ماه يك نسخه جديد
-ارائه شود. چندين كتابچه و صفحات راهنما و مثالهاي كوچك
-همراه با متن اصلي PostgreSQL در شاخه
-doc وجود دارد. براي ديدن صفحات راهنما ميتوانيد به
-سايت
+ آخرين نسخه PostgreSQL
+ كه وجود دارد 7.4.3 است. هدف ما آن است كه هر 6 ماه تا 8 ماه يك نسخه جديد
+ارائه شود. چندين كتابچه و صفحات راهنما و مثالهاي كوچك
+همراه با متن اصلي PostgreSQL در شاخه
+doc وجود دارد. براي ديدن صفحات راهنما ميتوانيد به
+سايت http://www.PostgreSQL.org/docs
- نيز مراجعه نماييد. دو كتاب در زمينه PostgreSQL
- در آدرسهاي نيز مراجعه نماييد. دو كتاب در زمينه PostgreSQL
+ در آدرسهاي
http://www.PostgreSQL.org/docs/awbook.htm
-و http://www.commandprompt.com/ppbook
-وجود دارد. ليستي از كتابهايي كه قابل خريد است در آدرس http://techdocs.PostgreSQL.org/techdocs/bookreviews.php
-وجود دارد. همچنين ليستي از مقالات فني در مورد
-PostgreSQL در آدرس
+http://techdocs.PostgreSQL.org/techdocs/bookreviews.php
+وجود دارد. همچنين ليستي از مقالات فني در مورد
+PostgreSQL در آدرس http://techdocs.PostgreSQL.org
-وجود دارد. برنامه psql يك دستور
-d\ دارد كه اطلاعاتي در مورد انواع دادههاي قابل تعريف
-و عملگرها و توابع و ... به ما نشان ميدهد. در سايت اصلي ما اطلاعات بيشتري را
-ميتوانيد پيدا كنيد. برنامه psql يك دستور
+d\ دارد كه اطلاعاتي در مورد انواع دادههاي قابل تعريف
+و عملگرها و توابع و ... به ما نشان ميدهد. در سايت اصلي ما اطلاعات بيشتري را
+ميتوانيد پيدا كنيد. PostgreSQL يك زير
-مجموعه پيشرفته از SQL-92 را پشتيباني ميكند. در ليست
+چگونه ميتوانم ازاشكالات شناخته شده و يا امكاناتي كه در اين
+پايگاه داده وجود ندارد مطلع شوم؟
+ PostgreSQL يك زير
+مجموعه پيشرفته از SQL-92 را پشتيباني ميكند. در ليست
TODO اِشكالات
-شناخته شده يا امكاناتي كه وجود ندارد و يا برنامههاي آينده آمده است. كتاب PostgreSQL در
-آدرس SQL http://www.PostgreSQL.org/docs/awbook.html
-را آموزش ميدهد. همچنين يك كتاب در آدرس TODO اِشكالات
+شناخته شده يا امكاناتي كه وجود ندارد و يا برنامههاي آينده آمده است. كتاب PostgreSQL در
+آدرس SQL
+http://www.PostgreSQL.org/docs/awbook.html
+را آموزش ميدهد. همچنين يك كتاب در آدرس http://www.commandprompt.com/ppbook
-وجود دارد. يك راهنماي خيلي خوب هم در سايتهاي http://www.intermedia.net/support/sql/sqltut.shtm
-و http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM
-و http://sqlcourse.com در مورد
-SQL وجود دارد. كتاب ديگري كه ميتوان براي يادگيري
-SQL از آن استفاده كرد كتاب "SQL
-را در 21 روز ياد بگيريد، ويرايش دوم" در سايت http://members.tripod.com/er4ebus/sql/index.htm
-ميباشد. تعداد زيادي از كاربران كتاب
-The Practical SQL را ترجيح ميدهند. كتاب ديگر The
-Complete Refrence SQL انتشارات McGraw-Hill
-ميباشد. كتاب ديگري كه ميتوان براي يادگيري
+SQL از آن استفاده كرد كتاب "SQL
+را در 21 روز ياد بگيريد، ويرايش دوم" در سايت
+http://members.tripod.com/er4ebus/sql/index.htm
+ميباشد. تعداد زيادي از كاربران كتاب
+The Practical SQL را ترجيح ميدهند. كتاب ديگر The
+Complete Refrence SQL انتشارات McGraw-Hill
+ميباشد. خير،PostgreSQL با
-تاريخهاي قبل و بعد از 2000 مشكلي ندارد. خير،PostgreSQL با
+تاريخهاي قبل و بعد از 2000 مشكلي ندارد. ابتدا،آخرين سورس را دونلود كرده و مستندات
-مربوط به برنامهنويسي PostgreSQL را در سايت مطالعه
-كنيد. سپس به گروههاي پستي pgsql-patches
-و pgsql-hackers
- عضو شويد. در مرحله آخر وصلههاي با كيفيت بالا را به
-pgsql-patches ارسال كنيد. تعداد زيادي از برنامهنويسان وجود دارند كه
-امتياز انجام تغييرات در cvs را دارند. هر كدام از آنها
-تعداد زيادي وصله با كيفيت بالا به گروه ارسال كردهاند كه اعتماد گردانندگان
-PostgreSQL را به دست آوردهاند. subscribe
end
subscribe
end
-irc -c '#PostgreSQL'
-"$USER" irc.phoenix.net.
يا
-irc -c '#PostgreSQL' "$USER" irc.freenode.net
-استفاده كنيد.
-موجود است.
+irc -c '#PostgreSQL' "$USER" irc.phoenix.net.
+يا
+irc -c '#PostgreSQL' "$USER" irc.freenode.net
+استفاده كنيد.
+موجود است.
1.7)
-آخرين نسخه اعلام شده چيست؟
-1.8) چه مستندات و راهنمائيهايي وجود دارند؟
-1.8)
+چه مستندات و راهنمائيهايي وجود دارند؟
+1.9)
-چگونه ميتوانم ازاشكالات شناخته شده و يا امكاناتي كه در اين
-پايگاه داده وجود ندارد مطلع شوم؟
-1.10) چگونه ميتوانم زبان
-SQL را ياد بگيرم؟
-1.10)
+چگونه ميتوانم زبان
+SQL را ياد بگيرم؟
+1.11)
-آيا PostgreSQL
-مشكل Y2K
-دارد يا خير؟
-1.12) چگونه ميتوانم به تيم برنامه نويس
+آيا PostgreSQL
+مشكل Y2K
+دارد يا خير؟
+1.12)
+چگونه ميتوانم به تيم برنامه نويس
PostgreSQL
-ملحق شوم؟
-
ابتدا،آخرين سورس را دونلود كرده و مستندات +مربوط به برنامهنويسي PostgreSQL را در سايت مطالعه +كنيد. سپس به گروههاي پستي pgsql-patches +و pgsql-hackers + عضو شويد. در مرحله آخر وصلههاي با كيفيت بالا را به +pgsql-patches ارسال كنيد.
+تعداد زيادي از برنامهنويسان وجود دارند كه +امتياز انجام تغييرات در cvs را دارند. هر كدام از آنها +تعداد زيادي وصله با كيفيت بالا به گروه ارسال كردهاند كه اعتماد گردانندگان +PostgreSQL را به دست آوردهاند.
لطفاً صفحه مربوط به اِشكالات -PostgreSQL را در سايت http://www.PostgreSQL.org/bugs/bugs.php -مشاهده كنيد. در اين سايت نحوه گزارش و ارسال يك -اشكال توضيح داده شده است.
-همچنين براي -ديدن نسخههاي جديدتر PostgreSQL و يا وجود يك وصله جديد -از سايت ftp://ftp.PostgreSQL.org/pub بازديد -كنيد.
+چگونه ميتوانم يك اِشكال را به گروه برنامه نويس اعلام كنم؟ +لطفاً صفحه مربوط به اِشكالات +PostgreSQL را در سايت +http://www.PostgreSQL.org/bugs/bugs.php +مشاهده كنيد. در اين سايت نحوه گزارش و ارسال يك +اشكال توضيح داده شده است.
+همچنين براي ديدن +نسخههاي جديدتر PostgreSQL و يا وجود يك وصله جديد از +سايت ftp://ftp.PostgreSQL.org/pub بازديد +كنيد.
راههاي مختلفي براي اندازهگيري و مقايسه -نرمافزارها وجود دارد كه عبارتند از امكانات، كارايي، قابليت اعتماد، پشتيباني و -قيمت
+وضعيت +PostgreSQL در +مقايسه با ساير DBMSها به چه +صورت است؟ +راههاي مختلفي براي اندازهگيري و مقايسه +نرمافزارها وجود دارد كه عبارتند از امكانات، كارايي، قابليت اعتماد، پشتيباني و +قيمت
- كارايي PostgreSQL در حد بقيه سيستمهاي تجاري و - متن باز است. در بعضي موارد سريعتر و در بعضي موارد از آنها كندتر است. در - مقايسه با MySQL براي كاربران بيشتر و درخواستهاي - پيچيده و بار زياد خواندن/نوشتن سريعتر است. در درخواستهاي ساده - SELECT از MySQL كندتر است. البته - MySQL خيلي از امكانات - PostgreSQL كه در بالا به آن اشاره شد را ندارد. هدف اصلي ما امكانات و - قابليت اعتماد بالاست در ضمن آنكه تلاش ميكنيم تا كارايي آن نيز بهبود يابد. - در آدرس http://openacs.org/philosophy/why-not-mysql.html - يك مقايسه جالب بين MySQL و - PostgreSQL وجود دارد. از طرف ديگر MySQL يك - شركت است كه محصول خود را به صورت متن باز ارائه ميكند ولي براي نرمافزار غير - متن باز خود احتياج به ليسانس تجاري دارد بر خلاف - PostgreSQL كه يك گروه كاملاً متن باز هستند.
+ كارايي PostgreSQL در حد بقيه سيستمهاي تجاري و + متن باز است. در بعضي موارد سريعتر و در بعضي موارد از آنها كندتر است. در + مقايسه با MySQL براي كاربران بيشتر و درخواستهاي + پيچيده و بار زياد خواندن/نوشتن سريعتر است. در درخواستهاي ساده + SELECT از MySQL كندتر است. البته + MySQL خيلي از امكانات + PostgreSQL كه در بالا به آن اشاره شد را ندارد. هدف اصلي ما امكانات و + قابليت اعتماد بالاست در ضمن آنكه تلاش ميكنيم تا كارايي آن نيز بهبود يابد. + در آدرس + http://openacs.org/philosophy/why-not-mysql.html + يك مقايسه جالب بين MySQL و + PostgreSQL وجود دارد. از طرف ديگر MySQL يك + شركت است كه محصول خود را به صورت متن باز ارائه ميكند ولي براي نرمافزار غير + متن باز خود احتياج به ليسانس تجاري دارد بر خلاف + PostgreSQL كه يك گروه كاملاً متن باز هستند.
PostgreSQL داراي -يك ساختار تشكيلاتي درجه اول است كه آن را مديون Marc Fournier -است كه اين ساختار را ايجاد كرده است.
-كيفيت يك ساختار براي يك پروژه متن باز بسيار -اهميت دارد. يك ساختار خوب ميتواند مانع از حوادثي شود كه در حركت روبهجلوي پروژه -خللي وارد ميكنند.
-البته اين ساختار تشكيلاتي ارزان نيست. هزينههاي -ثابت ماهانه و روزمره براي نگهداري و حفظ اين ساختار مورد نياز است. اگر شما يا -شركت شما مايل است كه از نظر مالي به اين حركت كمك كند لطفاً به سايت من چگونه ميتوانم از نظر مالي به PostgreSQL +كمك كنم؟ +
PostgreSQL داراي يك +ساختار تشكيلاتي درجه اول است كه آن را مديون Marc Fournier +است كه اين ساختار را ايجاد كرده است.
+كيفيت يك ساختار براي يك پروژه متن باز بسيار +اهميت دارد. يك ساختار خوب ميتواند مانع از حوادثي شود كه در حركت روبهجلوي پروژه +خللي وارد ميكنند.
+البته اين ساختار تشكيلاتي ارزان نيست. هزينههاي +ثابت ماهانه و روزمره براي نگهداري و حفظ اين ساختار مورد نياز است. اگر شما يا +شركت شما مايل است كه از نظر مالي به اين حركت كمك كند لطفاً به سايت http://store.pgsql.com/shopping -مراجعه كرده و كمك خود را اهدا كنيد.
-هر چند در صفحه اصلي عبارت -PostgreSQL,Inc ذكر شده است ولي مشاركت عمدتاً براي پشتيباني از پروژه -PostgreSQL مي باشد و نه براي يك شركت مشخص. اگر ترجيح -ميدهيد ميتوانيد يك چك به آدرس مشخص شده ارسال كنيد.
-اگر يك استفاده موفق از -PostgreSQL سراغ داريد لطفاً آن را به سايت http://advocacy.postgresql.org گزارش -دهيد.
+مراجعه كرده و كمك خود را اهدا كنيد. +هر چند در صفحه اصلي عبارت +PostgreSQL,Inc ذكر شده است ولي مشاركت عمدتاً براي پشتيباني از پروژه +PostgreSQL مي باشد و نه براي يك شركت مشخص. اگر ترجيح +ميدهيد ميتوانيد يك چك به آدرس مشخص شده ارسال كنيد.
+اگر يك استفاده موفق از +PostgreSQL سراغ داريد لطفاً آن را به سايت http://advocacy.postgresql.org گزارش +دهيد.
دو درايور ODBC -بنامهاي psqlODBC و OpenLink براي -PostgreSQL وجود دارد.
-براي گرفتن psqlODBC -به سايت http://gborg.postgresql.org/project/psqlodbc/projdisplay.php -مراجعه كنيد.
-OpenLlink را از اين -سايت http://www.openlinksw.com ميتوانيد -بگيريد. اين درايور با نرمافزارهاي مختلف ODBC كار -ميكند بنابراين شما قادر خواهيد بود با استفاده از OpenLink -روي اكثر سكوهايي كه نرمافزارODBCدارند بدون مشكل به -PostgreSQL نيز متصل شويد.
-اين محصول به كساني كه احتياج به خدمات پشتيباني -تجاري دارند فروخته ميشود. ولي نسخه آزاد اين نرمافزار هميشه در درسترس ميباشد. -براي كسب اطلاعات بيشتر سوالات خود را به آدرس آيا هيچ درايور ODBC +براي PostgreSQL +وجود دارد؟ +
دو درايور ODBC +بنامهاي psqlODBC و OpenLink براي +PostgreSQL وجود دارد.
+براي گرفتن psqlODBC +به سايت +http://gborg.postgresql.org/project/psqlodbc/projdisplay.php +مراجعه كنيد.
+OpenLlink را از اين +سايت http://www.openlinksw.com ميتوانيد +بگيريد. اين درايور با نرمافزارهاي مختلف ODBC كار +ميكند بنابراين شما قادر خواهيد بود با استفاده از OpenLink +روي اكثر سكوهايي كه نرمافزارODBCدارند بدون مشكل به +PostgreSQL نيز متصل شويد.
+اين محصول به كساني كه احتياج به خدمات پشتيباني +تجاري دارند فروخته ميشود. ولي نسخه آزاد اين نرمافزار هميشه در درسترس ميباشد. +براي كسب اطلاعات بيشتر سوالات خود را به آدرس postgres95@openlink.co.uk -ارسال نماييد.
+ارسال نماييد.در سايت http://www.webreview.com براي استفاده از -PostgreSQL در صفحات وب راهنماييهاي خوبي وجود دارد.
-براي تركيب و استفاده در صفحات وب زبان -PHP يك واسط بسيار مناسب است. اطلاعات بيشتر راجع به -PHPدر سايت http://www.php.net وجود -دارد.
-مثالهايي نيز با استفاده از -Perl و CGI.pm و mod_perl -وجود دارد.
+چه ابزارهايي براي استفاده از PostgreSQL +با صفحات وب وجود دارد؟ +در سايت http://www.webreview.com براي استفاده از +PostgreSQL در صفحات وب راهنماييهاي خوبي وجود دارد.
+براي تركيب و استفاده در صفحات وب زبان +PHP يك واسط بسيار مناسب است. اطلاعات بيشتر راجع به +PHPدر سايت http://www.php.net وجود +دارد.
+مثالهايي نيز با استفاده از +Perl و CGI.pm و mod_perl +وجود دارد.
چند نرم افزار گرافيكي براي -PostgreSQL وجود دارد كه شامل pgAccess درسايت آيا PostgreSQL يك واسط كاربري گرافيكي +دارد؟ +
چند نرم افزار گرافيكي براي +PostgreSQL وجود دارد كه شامل pgAccess درسايت http://www.pgaccess.org -و pgAdmin III در سايت و pgAdmin III در سايت http://www.pgadmin.org -و RHDB Admin در سايت و RHDB Admin در سايت http://sources.redhat.com/rhdb -و Rekall در سايت -http://www.thekompany.com/products/rekall ميباشد. -همچنين يك phpPgAdmin هم در سايت -http://phppgadmin.sourceforge.net وجود دارد كه يك -واسط وبي براي مديريت PostgreSQL ميباشد.
-براي ديدن اطلاعات بيشتر راجع به نرمافزارهاي -گرافيكي براي PostgreSQL به آدرس http://techdocs.postgresql.org/guides/GUITools -مراجعه كنيد.
+و Rekall در سايت +http://www.thekompany.com/products/rekall + ميباشد. همچنين يك phpPgAdmin هم در سايت +http://phppgadmin.sourceforge.net وجود دارد كه يك +واسط وبي براي مديريت PostgreSQL ميباشد. +براي ديدن اطلاعات بيشتر راجع به نرمافزارهاي +گرافيكي براي PostgreSQL به آدرس +http://techdocs.postgresql.org/guides/GUITools +مراجعه كنيد.
بيشتر زبانهاي برنامهنويسي -ميتوانند با PostgreSQL ارتباط برقرار كنند. به همراه -سورس PostgreSQL تعدادي از واسطهاي مورد نياز براي ارتباط -با پايگاه داده از طريق زبانهاي مختلف آمده است كه در زير ليست آنها را مشاهده -ميكنيد.
+با چه زبانهاي برنامهنويسي ميتوان با PostgreSQL +ارتباط برقرار كرد؟ +بيشتر زبانهاي برنامهنويسي +ميتوانند با PostgreSQL ارتباط برقرار كنند. به همراه +سورس PostgreSQL تعدادي از واسطهاي مورد نياز براي ارتباط +با پايگاه داده از طريق زبانهاي مختلف آمده است كه در زير ليست آنها را مشاهده +ميكنيد.
C (libpq)
TCL (libpgtcl)
واسطهاي ديگر در -سايت واسطهاي ديگر در +سايت http://gborg.postgresql.org -در قسمت Drivers/Interfaces وجود -دارد.
+در قسمت Drivers/Interfaces وجود +دارد.موقع اجراي دستور -configure از گزينه prefix-- استفاده كنيد.
+چگونه ميتوانم PostgreSQL را در شاخهاي +غير از /usr/local/pgsql/ نصب كنم؟ +موقع اجراي دستور +configure از گزينه prefix-- استفاده كنيد.
به دلايل مختلف ممكن است اين اتفاق بيفتد. اما در -قدم اول شما مطمئن شويد كه كه امكانات اضافه System V -در كرنل شما نصب شده باشد. PostgreSQL براي اجرا شدن -نياز به استفاده از امكانات حافظه مشترك و سمافورها دارد.
+چرا موقعي كه من برنامه postmaster را +اجرا مي كنم پيام Bad system call و يا core dump +ميگيرم؟ +به دلايل مختلف ممكن است اين اتفاق بيفتد. اما در +قدم اول شما مطمئن شويد كه كه امكانات اضافه System V +در كرنل شما نصب شده باشد. PostgreSQL براي اجرا شدن +نياز به استفاده از امكانات حافظه مشترك و سمافورها دارد.
احتمالاً قسمت ايجاد حافظه مشترك در كرنل به -درستي تنظيم نشده است و يا اينكه بايد فضاي حافظه اشتراكي در كرنل را زياد كرد. -ميزان دقيق حافظه مشترك مورد نياز بسته به معماري و نحوه استفاده از بافرها توسط -برنامه postmaster دارد. براي بيشتر سيستمها كه -با تنظيمات پيشفرض كار ميكنند مقدار اين حافظه حدود 1 -مگابايت است. براي ديدن اطلاعات بيشتر راجع به حافظه مشترك و سمافور به PostgreSQL -Administrator's Guide مراجعه كنيد.
-اگر پيغام خطا -(pcSemaphoreCreate: semget failed (No space left on device - باشد به اين معني است كه تعداد سمافورهاي تنظيم شده در كرنل كافي -نيست. PostgreSQL براي هر فرايندي كه در -backend اجرا ميشود به يك سمافور نياز دارد. يك راه حل -موقت براي اين مسئله آن است كه postmaster را با -اعمال محدوديت روي تعداد فرايندهايي كه ميتواند ايجاد كند اجرا كنيم. براي اينكار -از گزينه N- و يك عدد كمتر از 32 استفاده كنيد. راه حل -دائمي اين مشكل آن است كه پارامترهاي SEMMNS, SEMMNI -كرنل را افزايش دهيم.
-در زمان دسترسي خيلي زياد به پايگاه داده، -سمافورهاي نامعتبر ميتوانند باعث crash كردن سيستم -شوند.
-اگر پيغام خطا چيز ديگري باشد احتمالاً به دليل -آن است كه كرنل از سمافورها پشتيباني نميكند. براي ديدن اطلاعات بيشتر راهنماي -مديريتي PostgreSQL را مطالعه كنيد.
+چرا موقعي كه من سعي ميكنم برنامه postmaster +را اجرا كنم خطاي IpcMemoryCreate ميگيرم؟ +احتمالاً قسمت ايجاد حافظه مشترك در كرنل به +درستي تنظيم نشده است و يا اينكه بايد فضاي حافظه اشتراكي در كرنل را زياد كرد. +ميزان دقيق حافظه مشترك مورد نياز بسته به معماري و نحوه استفاده از بافرها توسط +برنامه postmaster دارد. براي بيشتر سيستمها كه +با تنظيمات پيشفرض كار ميكنند مقدار اين حافظه حدود 1 +مگابايت است. براي ديدن اطلاعات بيشتر راجع به حافظه مشترك و سمافور به +PostgreSQL Administrator's Guide مراجعه كنيد.
+اگر پيغام خطا +(pcSemaphoreCreate: semget failed (No space left on device + باشد به اين معني است كه تعداد سمافورهاي تنظيم شده در كرنل كافي نيست. +PostgreSQL براي هر فرايندي كه در +backend اجرا ميشود به يك سمافور نياز دارد. يك راه حل +موقت براي اين مسئله آن است كه postmaster را با +اعمال محدوديت روي تعداد فرايندهايي كه ميتواند ايجاد كند اجرا كنيم. براي اينكار +از گزينه N- و يك عدد كمتر از 32 استفاده كنيد. راه حل +دائمي اين مشكل آن است كه پارامترهاي SEMMNS, SEMMNI +كرنل را افزايش دهيم.
+در زمان دسترسي خيلي زياد به پايگاه داده، +سمافورهاي نامعتبر ميتوانند باعث crash كردن سيستم +شوند.
+اگر پيغام خطا چيز ديگري باشد احتمالاً به دليل +آن است كه كرنل از سمافورها پشتيباني نميكند. براي ديدن اطلاعات بيشتر راهنماي +مديريتي PostgreSQL را مطالعه كنيد.
به صورت پيش فرض فقط از ماشيني كه -PostgreSQL روي آن در حال اجراست ميتوان با استفاده از -سوكتهاي يونيكسي به آن متصل شد. ساير ماشينها قادر نيستند به -PostgreSQL متصل شوند مگر آنكه گزينه tcp_sockets -در فايل postgresql.conf فعال شده و همچنين با اصلاح -فايل PGDATA/ph_hba.conf هويتشناسي مبتني بر ميزبان نيز -فعال شود. با اين كار ميتوان اتصالات TCP/IP به -PostgreSQL ايجاد كرد.
+چگونه ميتوانم اتصالات ساير ماشينها را كنترل كنم؟ +به صورت پيش فرض فقط از ماشيني كه +PostgreSQL روي آن در حال اجراست ميتوان با استفاده از +سوكتهاي يونيكسي به آن متصل شد. ساير ماشينها قادر نيستند به +PostgreSQL متصل شوند مگر آنكه گزينه tcp_sockets +در فايل postgresql.conf فعال شده و همچنين با اصلاح +فايل PGDATA/ph_hba.conf هويتشناسي مبتني بر ميزبان نيز +فعال شود. با اين كار ميتوان اتصالات TCP/IP به +PostgreSQL ايجاد كرد.
به طور حتم استفاده از انديسها باعث بالا رفتن -سرعت پاسخگويي به درخواستها خواهد شد. دستور EXPLAIN ANALYZE -به شما امكان ديدن نحوه پردازش يك دستور توسط PostgreSQL -را ميدهد.
-اگر شما تعداد زيادي INSERT -داريد سعي كنيد آنها را با قرار دادن در يك فايل با دستور COPY -اجرا كنيد. اين دستور به مراتب از INSERT سريعتر است. -حتيالامكان سعي كنيد از تراكنشها استفاده نكنيد. تراكنشها مجموعه دستوراتي هستند -كه بيند BEGIN و COMMIT -ميآيند. اگر يك دستور به صورت عادي اجرا شود PostgreSQL -خود آن دستور را به صورت يك تراكنش مستقل نگاه كرده و اجرا ميكند. موقعی كه -تغييرات زيادي در پايگاه داده انجام ميشود انديسهاي قبلي را حذف و مجدداً ايجاد -كنيد.
-استفاده از گزينه o -F- -در فرمان postmaster باعث غير فعال كردن -()fsync ميشود. اين دستور بعد از هر تراكنش اطلاعات را -روي هاردديسك منتقل ميكند.
-براي افزايش تعداد بافرهاي حافظه اشتراكي از -گزينه B- به همراه فرمان -postmaster استفاده كنيد. توجه كنيد كه اگر اين عدد خيلي بزرگ باشد ممكن -است postmaster اصلاً اجرا نشود. هر بافر 8 كيلو -بايت حافظه نياز دارد و تعداد بافرها به طور پيش فرض 64 است.
-همچنين ميتوان با گزينه S- -ميزان حافظهاي كه براي مرتبسازيهاي موقت توسط PostgreSQL -استفاده ميشود را افزايش داد. مقدار پيش فرض 512 كيلو بايت است.
-استفاده از دستور CLUSTER -نيز براي بالا بردن كارايي موثر ا ست. دستور راهنماي CLUSTER -اطلاعات بيشتري در اين زمينه به شما ميدهد.
+براي كارايي بالاتر و بهتر پايگاه داده من چه تنظيماتي را بايد +انجام دهم؟ +به طور حتم استفاده از انديسها باعث بالا رفتن +سرعت پاسخگويي به درخواستها خواهد شد. دستور EXPLAIN ANALYZE +به شما امكان ديدن نحوه پردازش يك دستور توسط PostgreSQL +را ميدهد.
+اگر شما تعداد زيادي INSERT +داريد سعي كنيد آنها را با قرار دادن در يك فايل با دستور COPY +اجرا كنيد. اين دستور به مراتب از INSERT سريعتر است. +حتيالامكان سعي كنيد از تراكنشها استفاده نكنيد. تراكنشها مجموعه دستوراتي هستند +كه بيند BEGIN و COMMIT +ميآيند. اگر يك دستور به صورت عادي اجرا شود PostgreSQL +خود آن دستور را به صورت يك تراكنش مستقل نگاه كرده و اجرا ميكند. موقعی كه +تغييرات زيادي در پايگاه داده انجام ميشود انديسهاي قبلي را حذف و مجدداً ايجاد +كنيد.
+استفاده از گزينه o -F- +در فرمان postmaster باعث غير فعال كردن +()fsync ميشود. اين دستور بعد از هر تراكنش اطلاعات را +روي هاردديسك منتقل ميكند.
+براي افزايش تعداد بافرهاي حافظه اشتراكي از +گزينه B- به همراه فرمان +postmaster استفاده كنيد. توجه كنيد كه اگر اين عدد خيلي بزرگ باشد ممكن +است postmaster اصلاً اجرا نشود. هر بافر 8 كيلو +بايت حافظه نياز دارد و تعداد بافرها به طور پيش فرض 64 است.
+همچنين ميتوان با گزينه S- +ميزان حافظهاي كه براي مرتبسازيهاي موقت توسط PostgreSQL +استفاده ميشود را افزايش داد. مقدار پيش فرض 512 كيلو بايت است.
+استفاده از دستور CLUSTER +نيز براي بالا بردن كارايي موثر ا ست. دستور راهنماي CLUSTER +اطلاعات بيشتري در اين زمينه به شما ميدهد.
PostgerSQL امكانات -مختلفي براي گزارش دادن وضعيت خود دارد كه براي اشكال زدايي ميتوان از آنها -استفاده كرد.
-با استفاده از گزينه enable-assert-- -تعداد زيادي ()assert براي مونيتور كردن و توقف برنامه -در صورت بروز خطاهاي ناخواسته فعال ميشود.
-هم Postmaster -و هم postgres گزينههاي زيادي براي اشكال زدايي -دارند. موقعي كه postmaster را اجرا ميكنيد -خروجي استاندارد و خطا را سمت فايل log ارسال كنيد.
+چه امكاناتي براي پيدا كردن اشكال وجود دارد؟ +PostgerSQL امكانات +مختلفي براي گزارش دادن وضعيت خود دارد كه براي اشكال زدايي ميتوان از آنها +استفاده كرد.
+با استفاده از گزينه +enable-assert-- +تعداد زيادي ()assert براي مونيتور كردن و توقف برنامه +در صورت بروز خطاهاي ناخواسته فعال ميشود.
+هم Postmaster +و هم postgres گزينههاي زيادي براي اشكال زدايي +دارند. موقعي كه postmaster را اجرا ميكنيد +خروجي استاندارد و خطا را سمت فايل log ارسال كنيد.
cd /usr/local/pgsql ./bin/postmaster >server.log 2>&1 &
اين كار يك فايل
+ اين كار يك فايل
log
-در بالاترين شاخه PostgreSQL ايجاد ميكند. اين فايل
-حاوي اطلاعات مفيدي در مورد مسائل و خطاهايي است كه براي سرور اتفاق افتاده است.
-براي ديدن جزئيات بيشتر ميتوان از d- به همراه
-فرمان postmaster استفاده كرد. گزينه
-d- همچنين يك عدد ميگيرد كه نشان دهنده سطح جزئياتي است
-كه در Logفايل نوشته ميشود. با بالابردن اين عدد حجم
-اطلاعات توليد شده در Logفايل نيز افزايش مييابد. اگر postmaster
-در حال اجرا نباشد، ميتوانيم postgres را به طور مستقيم
-از خط فرمان اجرا كرده و دستورات SQL را به آن
-بدهيم. اين كار فقط براي اشكاليابي توصيه ميشود. توجه كنيد كه در اين حالت يك
-دستور با كاراكتر newline خاتمه پيدا ميكند و نه با
-;. اگر postmaster را با
-امكانات اشكاليابي كامپيل كرده باشيد ميتوانيد با استفاده از يك برنامه اشكالياب
-اجراي برنامه را مونيتور كنيد. اگر postmaster
-در حال اجرا باشد با دستور psql ميتوان به
-postgres متصل شد. با پيدا كردن PID
-فرايند postgres كه psql به
-آن متصل شده است ميتوان آن را مونيتور كرد. براي اينكار بايد يك برنامه اشكالياب
-را به آن pid متصل كرد. اگر بخواهيم بالا آمدن
-postgres را مونيتور كنيم كافي است
-"PGOPTIONS="-W n و psql
-را اجرا كنيم. اين كار باعث ميشود كه postgres با
-n ثانيه تاخير اجرا شود و در اين فاصله شما ميتوانيد
-برنامه اشكالياب را به آن متصل كرده و با قرار دادن يك نقطه توقف روند اجراي
-آن را مونيتور كنيد.
اگر postmaster +در حال اجرا نباشد، ميتوانيم postgres را به طور مستقيم +از خط فرمان اجرا كرده و دستورات SQL را به آن +بدهيم. اين كار فقط براي اشكاليابي توصيه ميشود. توجه كنيد كه در اين حالت يك +دستور با كاراكتر newline خاتمه پيدا ميكند و نه با +;. اگر postmaster را با +امكانات اشكاليابي كامپيل كرده باشيد ميتوانيد با استفاده از يك برنامه اشكالياب +اجراي برنامه را مونيتور كنيد.
+اگر postmaster +در حال اجرا باشد با دستور psql ميتوان به +postgres متصل شد. با پيدا كردن PID +فرايند postgres كه psql به +آن متصل شده است ميتوان آن را مونيتور كرد. براي اينكار بايد يك برنامه اشكالياب +را به آن pid متصل كرد. اگر بخواهيم بالا آمدن +postgres را مونيتور كنيم كافي است +"PGOPTIONS="-W n و psql +را اجرا كنيم. اين كار باعث ميشود كه postgres با +n ثانيه تاخير اجرا شود و در اين فاصله شما ميتوانيد +برنامه اشكالياب را به آن متصل كرده و با قرار دادن يك نقطه توقف روند اجراي +آن را مونيتور كنيد.
postgres -گزينههاي s- و A- و -t- دارد كه براي پيدا كردن اشكالات بسيار مناسب هستند.
-شما ميتوانيد postgreSQL -را با امكانات profiling كامپيل كنيد. اين كار باعث -ميشود كه زمان اجراي دقيق هر تابع در برنامه مشخص شود. خروجيهاي توليد شده در اين -حالت در فايل DLINUX_PROFILE. ريخته ميشود.
+گزينههاي s- و A- و +t- دارد كه براي پيدا كردن اشكالات بسيار مناسب هستند. +شما ميتوانيد postgreSQL +را با امكانات profiling كامپيل كنيد. اين كار باعث +ميشود كه زمان اجراي دقيق هر تابع در برنامه مشخص شود. خروجيهاي توليد شده در اين +حالت در فايل DLINUX_PROFILE. ريخته ميشود.
شما بايد حداكثر تعداد فرايندهاي همزمان -postmaster را افزايش دهيد. مقدار پيش فرض 32 است. -براي افزايش آن ميتوان از گزينه N- استفاده كرد و يا -فايل postgresql.conf را اصلاح نمود
-توجه كنيد كه اگر N- -مقداري بيشتر از 32 داشته باشد بايد مقدار B- را نيز -افزايش دهيم. اين مقدار بايد حداقل دو برابر مقدار N- -باشد. براي اعداد خيلي بالا بايد بعضي از پارامترهاي كرنل را نيز اصلاح كرد. -پارامترهايي نظير حداكثر اندازه حافظه اشتراكي SHMMAX ، -حداكثر تعداد سمافورها SEMMNI و -SEMMNS ، حداكثر تعداد فرايندها NPROC، حداكثر -فرايندهاي يك كاربر MAXUPRC و حداكثر فايلهاي باز -NFILE و NINODE. يكي از -دلايلي كه تعداد اتصالات همزمان postgreSQL محدود است آن -است كه نيازهاي PostgreSQL بيش از منابع موجود سيستم -نباشد.
+چرا موقعي كه من ميخواهم به پايگاه داده وصل شوم پيام +"Sorry, too many clients" +ميگيرم؟ +شما بايد حداكثر تعداد فرايندهاي همزمان +postmaster را افزايش دهيد. مقدار پيش فرض 32 است. +براي افزايش آن ميتوان از گزينه N- استفاده كرد و يا +فايل postgresql.conf را اصلاح نمود
+توجه كنيد كه اگر N- +مقداري بيشتر از 32 داشته باشد بايد مقدار B- را نيز +افزايش دهيم. اين مقدار بايد حداقل دو برابر مقدار N- +باشد. براي اعداد خيلي بالا بايد بعضي از پارامترهاي كرنل را نيز اصلاح كرد. +پارامترهايي نظير حداكثر اندازه حافظه اشتراكي SHMMAX ، +حداكثر تعداد سمافورها SEMMNI و +SEMMNS ، حداكثر تعداد فرايندها NPROC، حداكثر +فرايندهاي يك كاربر MAXUPRC و حداكثر فايلهاي باز +NFILE و NINODE. يكي از +دلايلي كه تعداد اتصالات همزمان postgreSQL محدود است آن +است كه نيازهاي PostgreSQL بيش از منابع موجود سيستم +نباشد.
دراين شاخه فايلهاي موقتي قرار دارد كه با اجراي -درخواستها به وجود آمده است. به عنوان مثال اگر براي اجراي دستور -order by نياز به انجام مرتب سازي باشد و در صورتي كه -حافظه مشخص شده با گزينه S- براي اينكار كافي نباشد -سيستم يك فايل موقت در اين شاخه ايجاد ميكند تا عمل مرتب سازي را انجام دهد.
-فايلهاي موقت معمولاً به صورت اتوماتيك پاك -ميشود اما اگر postgreSQL در حين مرتب سازي -crash كند آن فايلها باقي ميمانند. با -stop و start كردن برنامه -postmaster اين فايلها پاك ميشوند.
+در شاخه pgsql_tmp چه چيزي قرار دارد؟ +دراين شاخه فايلهاي موقتي قرار دارد كه با اجراي +درخواستها به وجود آمده است. به عنوان مثال اگر براي اجراي دستور +order by نياز به انجام مرتب سازي باشد و در صورتي كه +حافظه مشخص شده با گزينه S- براي اينكار كافي نباشد +سيستم يك فايل موقت در اين شاخه ايجاد ميكند تا عمل مرتب سازي را انجام دهد.
+فايلهاي موقت معمولاً به صورت اتوماتيك پاك +ميشود اما اگر postgreSQL در حين مرتب سازي +crash كند آن فايلها باقي ميمانند. با +stop و start كردن برنامه +postmaster اين فايلها پاك ميشوند.
تيم برنامه نويس postgreSQL -در نسخههاي ارائه شده كه فقط minor آنها متفاوت است فقط -تغييرات كوچكي اعمال ميكنند؛ بنابراين براي به روز كردن از نسخه -7.2به 7.2.1 نيازي به -dump و restore نيست. اما در -نسخههايي كه major آنها تغيير ميكند غالباً ساختار -داخلي جداول و فايلهاي داده تغيير ميكند. اين تغييرات معمولاً پيچيده هستند. براي -انتقال دادههاي موجود در پايگاه داده در اين حالت بايد از -dump و restore استفاده كرد.
-در نسخههايي كه ساختار روي ديسك تغييري نميكند -مي توان از برنامه pg_upgrade براي به روز كردن پايگاه -داده استفاده كرد بدون اينكه نيازي به استفاده از dump و -restore باشد. در يادداشتي كه به همراه هر توزيع -ميآيد ذكر شده است كه آيا برنامه pg_upgrade براي اين -توزيع وجود دارد يا خير.
+چرا براي به روز كردن نسخه پايگاه داده من بايد كل داده ها را +dump و مجدداً restore كنم؟ +تيم برنامه نويس postgreSQL +در نسخههاي ارائه شده كه فقط minor آنها متفاوت است فقط +تغييرات كوچكي اعمال ميكنند؛ بنابراين براي به روز كردن از نسخه +7.2به 7.2.1 نيازي به +dump و restore نيست. اما در +نسخههايي كه major آنها تغيير ميكند غالباً ساختار +داخلي جداول و فايلهاي داده تغيير ميكند. اين تغييرات معمولاً پيچيده هستند. براي +انتقال دادههاي موجود در پايگاه داده در اين حالت بايد از +dump و restore استفاده كرد.
+در نسخههايي كه ساختار روي ديسك تغييري نميكند +مي توان از برنامه pg_upgrade براي به روز كردن پايگاه +داده استفاده كرد بدون اينكه نيازي به استفاده از dump و +restore باشد. در يادداشتي كه به همراه هر توزيع ميآيد +ذكر شده است كه آيا برنامه pg_upgrade براي اين توزيع +وجود دارد يا خير.
چون اكثر سختافزارهاي PC - سازگار هستند مردم فكر ميكنند كه كيفيت آنها نيز يكسان است. در -حاليكه اينطور نيست. استفاده از هاردهاي SCSI و -حافظههاي ECC و مادربردهاي با كيفيت بالا نسبت به سخت -افزارهاي ارزانتر نتايج بهتري از نظر كارايي و پايداري سيستم بهمراه خواهد داشت. -PostgreSQL روي بيشتر سخت افزارها اجرا ميشود اما اگر كارايي و اطمينان -فاكتورهاي مهمي هستند بايد سخت افزار مناسب استفاده شود. در گروههاي پستي در مورد -سخت افزار مناسب و انتخاب آن بحث شده است.
+چون اكثر سختافزارهاي PC + سازگار هستند مردم فكر ميكنند كه كيفيت آنها نيز يكسان است. در حاليكه +اينطور نيست. استفاده از هاردهاي SCSI و حافظههاي +ECC و مادربردهاي با كيفيت بالا نسبت به سخت افزارهاي ارزانتر نتايج بهتري +از نظر كارايي و پايداري سيستم بهمراه خواهد داشت. +PostgreSQL روي بيشتر سخت افزارها اجرا ميشود اما اگر كارايي و اطمينان +فاكتورهاي مهمي هستند بايد سخت افزار مناسب استفاده شود. در گروههاي پستي در مورد +سخت افزار مناسب و انتخاب آن بحث شده است.
راهنماي دستور DECLARE -را مطالعه كنيد.
+راهنماي دستور DECLARE +را مطالعه كنيد.
راهنماي دستور FETCH - يا SELECT...LIMIT را ببينيد.
-در واقع كل درخواست بايد بررسي و -ارزيابي شود حتي اگر شما فقط چند رديف اول را بخواهيد. براي مثال درخواست -ORDER BY را در نظر بگيريد. اگر انديس يا نمايهاي براي ORDER -BY وجود داشته باشد،postgreSQL ممكن است -بتواند فقط چند سطر اول درخواستي را ارزيابي كند و يا اينكه كل درخواست پردازش شود -تا تعداد رديفهاي درخواستي توليد شود.
-براي انتخاب يك سطر تصادفي به -روش زير عمل ميكنيم:
راهنماي دستور FETCH + يا SELECT...LIMIT را ببينيد.
+در واقع كل درخواست بايد بررسي و +ارزيابي شود حتي اگر شما فقط چند رديف اول را بخواهيد. براي مثال درخواست +ORDER BY را در نظر بگيريد. اگر انديس يا نمايهاي براي +ORDER BY وجود داشته باشد،postgreSQL +ممكن است بتواند فقط چند سطر اول درخواستي را ارزيابي كند و يا اينكه كل درخواست +پردازش شود تا تعداد رديفهاي درخواستي توليد شود.
+براي انتخاب يك سطر تصادفي به +روش زير عمل ميكنيم:
SELECT col
FROM tab
ORDER BY random()
@@ -913,30 +934,30 @@ BY وجود داشت
براي ديدن ليست جداول دستور -dt\ را در برنامه psql -استفاده كنيد. براي ديدن ليست كامل فرمانها ?\ را اجرا -كنيد. راه ديگر خواندن متن برنامه psql است كه در شاخه - pgsql/src/bin/psql/describe.c قرار -دارد. اين فايل حاوي فرامين SQLيي است كه خروجي را -براي دستوراتي كه با \در psql -شروع ميشوند توليد ميكنند. راه ديگر اجراي psql با گزينه -E-است. اينكار باعث ميشود كه psql -قبل از اجرا هر دستور SQLمتناظر آن را نشان دهد. -PostgreSQLهمچنين يك برنامه SQLi دارد كه -ميتوان با استفاده از آن اطلاعات داخلي پايگاه داده را استخراج كرد.
+من چگونه ميتوانم ليستي از جداول يا ساير چيزهايي كه در +psql وجود دارد را ببينم؟ +براي ديدن ليست جداول دستور +dt\ را در برنامه psql +استفاده كنيد. براي ديدن ليست كامل فرمانها ?\ را اجرا +كنيد. راه ديگر خواندن متن برنامه psql است كه در شاخه + pgsql/src/bin/psql/describe.c قرار +دارد. اين فايل حاوي فرامين SQLيي است كه خروجي را +براي دستوراتي كه با \در psql +شروع ميشوند توليد ميكنند. راه ديگر اجراي psql با گزينه +E-است. اينكار باعث ميشود كه psql +قبل از اجرا هر دستور SQLمتناظر آن را نشان دهد. +PostgreSQLهمچنين يك برنامه SQLi دارد كه +ميتوان با استفاده از آن اطلاعات داخلي پايگاه داده را استخراج كرد.
حذف يك ستون در توزيع 7.3 -با استفاده از دستور ALTER TABLE DROP COLUMN -اضافه شده است. در نسخههاي قبلي به روش زير عمل كنيد:
+چگونه يك ستون جدول را حذف ميكنيد؟ چگونه نوع داده آن را عوض +كنيم؟ +حذف يك ستون در توزيع 7.3 +با استفاده از دستور ALTER TABLE DROP COLUMN +اضافه شده است. در نسخههاي قبلي به روش زير عمل كنيد:
BEGIN; LOCK TABLE old_table; - SELECT ... -- تمام ستونها غير از ستوني كه ميخواهيد آن را حذف كنيد را در اينجا بياوريد + SELECT ... -- تمام ستونها غير از ستوني كه ميخواهيد آن را حذف كنيد را در اينجا بياوريد INTO TABLE new_table FROM old_table; DROP TABLE old_table; @@ -944,8 +965,8 @@ PostgreSQLهمچنين COMMIT;
براي عوض كردن نوع داده يك ستون -به روش زير عمل كنيد:
+براي عوض كردن نوع داده يك ستون +به روش زير عمل كنيد:
BEGIN;
ALTER TABLE tab ADD COLUMN new_col new_data_type;
@@ -955,105 +976,102 @@ PostgreSQLهمچنين
محدوديتها عبارتند از:
+حداكثر اندازه يك رديف، جدول و خود پايگاه داده چقدر است؟ +محدوديتها عبارتند از:
حداكثر اندازه پايگاه داده نامحدود (تا 32 ترابايت وجود دارد) - حداكثر اندازه يك جدول 32 ترابايت - حداكثر ا ندازه يك رديف 1.6 ترابايت - حداكثر اندازه يك فيلد 1 گيگا بايت - حداكثر اندازه رديفهاي يك جدول نا محدود - حداكثر ستونهاي يك جدول بسته به نوع جدول بين 250 تا 6000 - حداكثر انديسهاي يك جدول نا محدود +حداكثر اندازه پايگاه داده نامحدود (تا 32 ترابايت وجود دارد) + حداكثر اندازه يك جدول 32 ترابايت + حداكثر ا ندازه يك رديف 1.6 ترابايت + حداكثر اندازه يك فيلد 1 گيگا بايت + حداكثر اندازه رديفهاي يك جدول نا محدود + حداكثر ستونهاي يك جدول بسته به نوع جدول بين 250 تا 6000 + حداكثر انديسهاي يك جدول نا محدود
البته در حالت نامحدود نيز ما -محدود به حجم هاردديسك و فضاي حافظه خواهيم بود. در صورتي -که مقادير مشخص شده به عنوان -نامحدود به صورت غير معمولي بزرك شوند كارايي سيستم كاهش خواهد يافت.
-براي ذخيره كردن جداول با اندازه -خيلي بزرگ نيازي نيست كه سيستم عامل امكان ايجاد فايلهاي بزرگ را داشته باشد. بلكه -جداول خيلي بزرگ به صورت فايلهايي به حجم يك گيگا بايت نگاهداري ميشوند.
-اگر اندازه بلوكهاي داده را -برابر 32 كيلو بايت قرار دهيم حداكثر اندازه جدول و حداكثر تعداد ستونها 4 برابر -خواهد شد.
+البته در حالت نامحدود نيز ما +محدود به حجم هاردديسك و فضاي حافظه خواهيم بود. در صورتي که مقادير مشخص شده به +عنوان نامحدود به صورت غير معمولي بزرك شوند كارايي سيستم كاهش خواهد يافت.
+براي ذخيره كردن جداول با اندازه +خيلي بزرگ نيازي نيست كه سيستم عامل امكان ايجاد فايلهاي بزرگ را داشته باشد. بلكه +جداول خيلي بزرگ به صورت فايلهايي به حجم يك گيگا بايت نگاهداري ميشوند.
+اگر اندازه بلوكهاي داده را +برابر 32 كيلو بايت قرار دهيم حداكثر اندازه جدول و حداكثر تعداد ستونها 4 برابر +خواهد شد.
يك پايگاه داده -PostgreSQL تا 5 برابر فضايي روي هاردديسك براي نگاهداري يك فايل -متني نياز دارد.
-به عنوان مثال يك فايل با 100000 -خط را در نظر بگيريد كه در هر خط يك عدد صحيح و يك توضيح متني آمده است. فرض كنيد -كه رشته متني به طور متوسط 20 بايت باشد. اندازه فايل برابر 2.8 مگا بايت خواهد بود -ولي PostgreSQL براي نگاهداري اين فايل به 6.4 مگا بايت -اطلاعات نياز خواهد داشت.
+چقدر فضاي ديسك سخت براي ذخيره كردن دادههاي يك فايل متني مورد +نياز است؟ +يك پايگاه داده +PostgreSQL تا 5 برابر فضايي روي هاردديسك براي نگاهداري يك فايل +متني نياز دارد.
+به عنوان مثال يك فايل با 100000 +خط را در نظر بگيريد كه در هر خط يك عدد صحيح و يك توضيح متني آمده است. فرض كنيد +كه رشته متني به طور متوسط 20 بايت باشد. اندازه فايل برابر 2.8 مگا بايت خواهد بود +ولي PostgreSQL براي نگاهداري اين فايل به 6.4 مگا بايت +اطلاعات نياز خواهد داشت.
32 bytes: اندازه سرايند هر خط به طور تقريبي - 24 bytes: يك عدد صحيح و يك رشته 24 بايتي - + 4 bytes: اشاره گر روي صفحه به يك چندتايي +32 bytes: اندازه سرايند هر خط به طور تقريبي + 24 bytes: يك عدد صحيح و يك رشته 24 بايتي + + 4 bytes: اشاره گر روي صفحه به يك چندتايي ---------------------------------------- - 60 bytes در هر رديف + 60 bytes در هر رديف -اندازه صفحات داده در PostgreSQL برابر با 8 كيلو بايت است - 8192 تعداد بايتها در هر صفحه - ------------------- = 136 تعداد رديفها در يك صفحه پايگاه داده - 60 تعداد بايتهاي هر رديف +اندازه صفحات داده در PostgreSQL برابر با 8 كيلو بايت است + 8192 تعداد بايتها در هر صفحه + ------------------- = 136 تعداد رديفها در يك صفحه پايگاه داده + 60 تعداد بايتهاي هر رديف - 100000 تعداد رديفها - -------------------- = تعدادصفحات پايگاه داده - 128 تعداد رديفها در هر صفحه + 100000 تعداد رديفها + -------------------- = تعدادصفحات پايگاه داده + 128 تعداد رديفها در هر صفحه -735 تعداد صفحات * 8192 تعداد بايتهاي هر صفحه = 6,021,120 مگا بايت +735 تعداد صفحات * 8192 تعداد بايتهاي هر صفحه = 6,021,120 مگا بايت
سربار انديسها يا نمايهها از -اين مقدار كمتر است ولي چون شامل خود دادهها هم هست -ممکن است اندازه آنها هم بزرگ شود.
-NULLها به صورت bitmap -ذخيره ميشوند و از اينرو فضاي بسيار كمي را اشغال ميكنند.
+سربار انديسها يا نمايهها از +اين مقدار كمتر است ولي چون شامل خود دادهها هم هست +ممکن است اندازه آنها هم بزرگ شود.
+NULLها به صورت bitmap +ذخيره ميشوند و از اينرو فضاي بسيار كمي را اشغال ميكنند.
psql -تعداد زيادي دستور دارد كه با \ شروع -ميشوند و اين اطلاعات را در اختيار ما قرار ميدهند. براي ديدن آنها دستور -?\ را اجرا كنيد. همچنين جداول سيستمي كه نام آنها -با -pg_ شروع ميشود نيز اين اطلاعات -را در خود دارند. اجراي برنامه psql با گزينه l- - نيز باعث نشان دادن ليست تمام پايگاههاي داده ميشود.
-همچنين فايل pgsql/src/tutorial/syscat.source -نيز فرمانهاي SELECT كه با -استفاده از آن ميتوان اطلاعات پايگاه داده را استخراج كرد شرح داده است.
+تعداد زيادي دستور دارد كه با \ شروع +ميشوند و اين اطلاعات را در اختيار ما قرار ميدهند. براي ديدن آنها دستور +?\ را اجرا كنيد. همچنين جداول سيستمي كه با نام آنها +pg_ شروع ميشود نيز اين اطلاعات +را در خود دارند. اجراي برنامه psql با گزينه l- + نيز باعث نشان دادن ليست تمام پايگاههاي داده ميشود. +همچنين فايل +pgsql/src/tutorial/syscat.source +نيز فرمانهاي SELECT كه با +استفاده از آن ميتوان اطلاعات پايگاه داده را استخراج كرد شرح داده است.
به طور معمول -براي درخواستها -از نمايهها استفاده نميشود. -تنها در صورتي از نمايهها استفاده ميشود كه اندازه جدول از يك اندازه حداقل -بزرگتر باشد و درخواست هم فقط قسمتي از رديفهاي جدول را انتخاب كرده باشد. دليل -اين كار آن است كه دسترسيهاي تصادفي به هاردديسك كه به خاطر نمايهها ايجاد ميشود -ممكن است از خواندن مستقيم جدول يا خواندن ترتيبي ركوردها كندتر باشد.
-براي تعيين اينكه از نمايه -استفاده شود يا خير، PostgreSQL بايد اطلاعات آماري را در -مورد يك جدول بداند. اين اطلاعات توسط دستور ANALYZE و -VACUUM ANALYZE به دست ميآيد. با استفاده از اين اطلاعات، -بهينه ساز از تعداد رديفهاي يك جدول اطلاع پيدا ميكند و بهتر ميتواند تعيين كند -كه آيا از نمايه استفاده شود يا خير. اطلاعات آماري همچنين براي تعيين ترتيب الحاق -و روشهاي الحاق به صورت بهينه نيز كاربرد دارد. جمع آوري اطلاعات آماري بايد به صورت -دورهاي همزمان با تغيير دادههاي جدول انجام شود.
-نمايهها به طور معمول همراه با -دستور ORDER BY به كار برده نميشوند. براي يك جدول بزرگ يك -پيمايش ترتيبي همراه با دستور مرتب سازي از به كار بردن نمايهها سريعتر خواهد بود.
-اما اگر همراه با ORDER -BY از LIMIT استفاده شود اغلب از نمايهها -استفاده ميشود چون فقط قسمتي از جدول -برگردانده ميشود. در حقيقت هر چند -توابع ()MIN و ()MAX -از نمايهها استفاده نميكنند ولي ميتوانيم با استفاده از دستور -زير با استفاده از نمايهها و دستور ORDER BY و -LIMIT ، آنها را به دست آوريم.
+چرا درخواستهاي من كند اجرا ميشوند يا چرا از نمايه ها استفاده +نميكنند؟ +به طور معمول +براي درخواستها از نمايهها استفاده نميشود. +تنها در صورتي از نمايهها استفاده ميشود كه اندازه جدول از يك اندازه حداقل +بزرگتر باشد و درخواست هم فقط قسمتي از رديفهاي جدول را انتخاب كرده باشد. دليل +اين كار آن است كه دسترسيهاي تصادفي به هاردديسك كه به خاطر نمايهها ايجاد ميشود +ممكن است از خواندن مستقيم جدول يا خواندن ترتيبي ركوردها كندتر باشد.
+براي تعيين اينكه از نمايه +استفاده شود يا خير، PostgreSQL بايد اطلاعات آماري را در +مورد يك جدول بداند. اين اطلاعات توسط دستور ANALYZE و +VACUUM ANALYZE به دست ميآيد. با استفاده از اين اطلاعات، +بهينه ساز از تعداد رديفهاي يك جدول اطلاع پيدا ميكند و بهتر ميتواند تعيين كند +كه آيا از نمايه استفاده شود يا خير. اطلاعات آماري همچنين براي تعيين ترتيب الحاق +و روشهاي الحاق به صورت بهينه نيز كاربر دارد. جمع آوري اطلاعات آماري بايد به صورت +دورهاي همزمان با تغيير دادههاي جدول انجام شود.
+نمايهها به طور معمول همراه با +دستور ORDER BY به كار برده نميشوند. براي يك جدول بزرگ يك +پيمايش ترتيبي همراه با دستور مرتب سازي از به كار بردن نمايهها سريعتر خواهد بود.
+اما اگر همراه با ORDER +BY از LIMIT استفاده شود اغلب از نمايهها +استفاده ميشود چون فقط قسمتي از جدول استفاده ميشود. در حقيقت هر چند +توابع ()MIN و ()MAX +از نمايهها استفاده نميكنند ولي ميتوانيم با استفاده از دستور +زير با استفاده از نمايهها و دستور ORDER BY و +LIMIT آنها را به دست آوريم.
SELECT col
FROM tab
@@ -1061,355 +1079,356 @@ LIMIT ، آنها را
LIMIT 1;
اگر شما فكر ميكنيد كه بهينه
-ساز سيستم در انتخاب پيمايش ترتيبي اشتباه كرده است با دستور 'SET enable_seqscan TO 'off'
-ميتوانيد ببينيد آيا استفاده از نمايهها باعث افزايش سرعت درخواستها خواهد شد
-يا خير.
استفاده از نمايهها هنگامي كه -از علائم ويژه نظير LIKE و ~ -استفاده ميكنيد فقط در بعضي شرايط خاص كه در اينجا ذكر شده است ممكن است:
+اگر شما فكر ميكنيد كه بهينه
+ساز سيستم در انتخاب پيمايش ترتيبي اشتباه كرده است با دستور 'SET
+enable_seqscan TO 'off'
+ميتوانيد ببينيد آيا استفاده از نمايهها باعث افزايش سرعت درخواستها خواهد شد.
استفاده از نمايهها هنگامي كه +از علائم ويژه نظير LIKE و ~ +استفاده ميكنيد فقط در بعضي شرايط خاصي كه در اينجا ذكر شده است ممكن است:
ابتداي رشته جستجو بايد به - طور صريح مشخص باشد براي مثال:
- دستورات - LIKE نبايد با علامت -% شروع - شوند
-- الگوهاي منظمي كه با -~ ميآيد حتماً بايد با علامت -^ شروع - شود
-ابتداي رشته جستجو بايد به + طور صريح مشخص باشد براي مثال: +
دستورات + LIKE نبايد با علامت % شروع + شوند
الگوهاي منظمي كه با + ~ ميايد حتماً بايد با علامت ^ شروع + شود
رشته جستجو نبايد با يك - مجموعه از كاراكترها مثل [a-e] شروع شود
رشته جستجو نبايد با يك + مجموعه از كاراكترها مثل [a-e] شروع شود
جستجوهاي غيرحساس به متن مثل
- ILIKE و *~ از نمايهها
- استفاده نميكنند. در عوض از توابع نمايهاي كه در قسمت
+ جستجوهاي غيرحساس به متن مثل
+ ILIKE و *~ از نمايهها
+ استفاده نميكنند. در عوض از توابع نمايهاي كه در قسمت
4.12
- توضيح داده شد استفاده ميكنند.
مقدار پيش فرض locale - بايد در initdb استفاده شود.
مقدار پيش فرض locale + بايد در initdb استفاده شود.
راهنماي دستور EXPLAIN -را نگاه كنيد.
+چگونه ميتوانم نحوه بررسي درخواست را توسط بهينهساز درخواستها +مشاهده كنم؟ +راهنماي دستور EXPLAIN +را نگاه كنيد.
از نمايه R-Tree - براي انديس كردن دادههاي فاصلهاي استفاده ميشود. يك نمايه -hash نميتواند جستجوهاي محدودهاي را انجام دهد. نمايه -"B-tree" نيز براي انجام جستجوي محدودهاي در يك جهت قابل استفاده -است. اما R-Tree ميتواند دادههاي چند بعدي را نيز -پشتيباني كند. براي مثال اگر از نمايه R-tree براي -گونه Point استفاده شود سرعت درخواستهايي نظير "select -all points within a bounding rectangle" به مراتب افزايش مييابد.
-مقالهاي كه طراحي R-tree -را توضيح داده است
-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.
-R-tree ميتواند چندضلعيها و -چند وجهي را پشتيباني كند. در تئوري، R-tree ميتواند تعداد بعدهاي بالاتري -را نيز پشتيباني كند. در عمل توسعه R-tree -نياز به كار بيشتري دارد.
+نمايه R-tree چيست؟ +از نمايه R-Tree + براي انديس كردن دادههاي فاصلهاي استفاده ميشود. يك نمايه +hash نميتوانند جستجوهاي محدودهاي را انجام دهد. نمايه +"B-tree" نيز براي انجام جستجوي محدودهاي در يك جهت قابل استفاده +است. اما R-Tree ميتواند دادههاي چند بعدي را نيز +پشتيباني كند. براي مثال استفاده اگر از نمايه R-tree براي +گونه Point استفاده شود سرعت درخواستهايي نظير "select +all points within a bounding rectangle" به مراتب افزايش مييابد.
+مقالهاي كه طراحي R-tree +را توضيح داده است
+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.
+R-tree ميتواند چندضلعيها و +چند وجهي را پشتيباني كند. در تئوري R-tree ميتواند تعداد +بعدهاي بالاتر ري نيز پشتيباني كند. در عمل توسعه R-tree +نياز به كار بيشتري دارد.
استفاده از GEQO -سرعت بهينه سازي درخواست را هنگاميكه تعداد زيادي جدول را با استفاده از الگوريتم -ژنتيك الحاق ميكنيم افزايش ميدهد.
+بهينه ساز تكويني درخواست چيست؟ (Genetic Query Optimizer) +استفاده از GEQO +سرعت بهينه سازي درخواست را هنگاميكه تعداد زيادي جدول را با استفاده از الگوريتم +ژنتيك الحاق ميكنيم افزايش ميدهد.
براي جستجوي عبارت منظم از عملگر -~ استفاده ميكنيم. براي جستجوي غير حساس به متن از عملگر -*~ و يا ILIKE استفاده ميكنيم.
-روش ديگر انجام جستجوي غير حساس -به متن در زير نشان داده شده است.
+چگونه از عبارات منظم براي جستجو استفاده كنم؟ چگونه جستجويي انجام +دهم كه حساس به متن نباشد؟ چگونه براي يك جستجوي غير حساس به متن از نمايه استفاده +كنم؟ +براي جستجوي عبارت منظم از عملگر +~ استفاده ميكنيم. براي جستجوي غير حساس به متن از عملگر +*~ و يا ILIKE استفاده ميكنيم.
+روش ديگر انجام جستجوي غير حساس +به متن در زير نشان داده شده است.
SELECT * FROM tab - WHERE lower(col) = 'abc'; + WHERE lower(col) = 'abc';-
اين از نمايههاي استاندارد -استفاده نميكند. ولي شما مي توانيد با دستور زير يك نمايه ايجاد كنيد و از آن -استفاده كنيد.
+اين از نمايههاي استاندارد +استفاده نميكند. ولي شما مي توانيد با دستور زير يك نمايه ايجاد كنيد و از آن +استفاده كنيد.
CREATE INDEX tabindex ON tab (lower(col));-
با استفاده از توابع IS -NULL و IS NOT NULL ميتوانيم NULL -بودن يك فيلد را تست كنيم.
+با استفاده از توابع IS +NULL و IS NOT NULL ميتوانيم NULL +بودن يك فيلد را تست كنيم.
Type Internal Name Notes -------------------------------------------------- -VARCHAR(n) varchar اندازه، حداكثر طول را نشان مي دهد بدون اضافه شدن كاراكتر اضافه -CHAR(n) bpchar كاراكترهاي بلانك براي پر شدن طول مشخص شده استفاده ميشود -TEXT text حداكثر طول را مشخص نميكند -BYTEA bytea آرايهاي از بايت با طول متغير -"char" char يك كاراكتر +VARCHAR(n) varchar اندازه، حداكثر طول را نشان مي دهد بدون اضافه شدن كاراكتر اضافه +CHAR(n) bpchar كاراكترهاي بلانك براي پر شدن طول مشخص شده استفاده ميشود +TEXT text حداكثر طول را مشخص نميكند +BYTEA bytea آرايهاي از بايت با طول متغير +"char" char يك كاراكتر-
نام داخلي گونهها را در -system catalogue و بعضي از پيغامهاي خطا ميتوان ديد.
-چهار گونه اول همگي از نوع -varlena هستند (4 بايت اول روي ديسك طول را مشخص ميكند كه -به دنبال آن دادهها قرار دارند.)بنابراين فضاي واقعي استفاده شده روي ديسك از -اندازه تعريف شده بيشتر است. اما اين گونهها را ميتوان فشرده كرد كه اينكار باعث -ميشود فضاي كمتري روي ديسك اشغال كنند.
-براي ذخيره رشتههاي با طول -متغير(VARCHAR(n -بهترين انتخاب است. در اين گونه حداكثر طول رشته محدود است بر خلاف -text كه هيچ محدوديتي روي حداكثر -اندازه رشته نميگذارد.(در اين گونه حداكثر طول يك رشته يك گيگا بايت خواهد بود)
-گونه (CHAR(n
- براي ذخيره دادههاي با طول يكسان است.يك
-گونهي
+ نام داخلي گونهها را در
+system catalogue و بعضي از پيغامهاي خطا ميتوان ديد. چهار گونه اول همگي از نوع
+varlena هستند (4 بايت اول روي ديسك طول را مشخص ميكند كه
+به دنبال آن دادهها قرار دارند.)بنابراين فضاي واقعي استفاده شده روي ديسك از
+اندازه تعريف شده بيشتر است. اما اين گونهها را ميتوان فشرده كرد كه اينكار باعث
+ميشود فضاي كمتري روي ديسك اشغال كنند. براي ذخيره رشتههاي با طول
+متغير(VARCHAR(n
+بهترين انتخاب است. در اين گونه حداكثر طول رشته محدود است بر خلاف
+text كه هيچ محدوديتي روي حداكثر
+اندازه رشته نميگذارد.(در اين گونه حداكثر طول يك رشته يك گيگا بايت خواهد بود) گونه (CHAR(n
+ براي ذخيره دادههاي با طول يكسان است.يك گونهي
(CHAR(n
-با كاراكترهاي بلانك (خالي) پر ميشود تا به طول مشخص شده برسد در
-حاليكه گونه VARCHAR
-كاراكترها را به همان صورت كه هستند ذخيره ميكند. گونه BYTEA
-براي ذخيره دادههاي باينري است به خصوص دادههاي باينري كه شامل بايتهاي
-NULL هستند. از نظر كارايي تمام اين گونهها يكسان هستند.
PostgreSQL از دادههاي سريال -پشتيباني ميكند. براي ايجاد يك فيلد سريال (براي داشتن يك فيلد منحصر به فرد براي -هر رديف )به روش زير عمل كنيد:
+چگونه ميتوانم يك فيلد سريال يا افزايشي ايجاد كنم؟ +PostgreSQL از دادههاي سريال +پشتيباني ميكند. براي ايجاد يك فيلد سريال (براي داشتن يك فيلد منحصر به فرد براي +هر رديف )به روش زير عمل كنيد:
CREATE TABLE person ( id SERIAL, name TEXT );-
دستور بالا به طور اتوماتيک به -دستور زير تبديل ميشود:
+دستور بالا به طور اتوماتيک به +دستور زير تبديل ميشود:
CREATE SEQUENCE person_id_seq; CREATE TABLE person ( - id INT4 NOT NULL DEFAULT nextval('person_id_seq'), + id INT4 NOT NULL DEFAULT nextval('person_id_seq'), name TEXT );-
براي ديدن اطلاعات بيشتر به -راهنماي دستور create_sequence مراجعه كنيد. -همچنين ميتوان از OIDهر رديف به عنوان يك مقدار منحصر به -فرد استفاده كرد. اما در اين حالت براي dump كردن و -reloadكردن پايگاه داده بايد دستور pg_dumps -را با گزينه o- اجرا كنيد.
-يك روش براي گرفتن مقدار بعدي يك -فيلد سريال استفاده از تابع ()nextval است. -در شبه كُدي كه در ادامه آمده است روش انجام اين كار نشان داده شده -است:
-new_id = execute("SELECT nextval('person_id_seq')"); - execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')"); +براي ديدن اطلاعات بيشتر به +راهنماي دستور create_sequence مراجعه كنيد. +همچنين ميتوان از OIDهر رديف به عنوان يك مقدار منحصر به +فرد استفاده كرد. اما در اين حالت براي dump كردن و +reloadكردن پايگاه داده بايد دستور pg_dumps +را با گزينه o- اجرا كنيد.
+4.15.2) +چگونه ميتوانم مقدار يك درج سريالي را بدانم؟
+يك روش براي گرفتن مقدار بعدي يك +فيلد سريال استفاده از تابع ()nextval است. +در شبه كُدي كه در ادامه آمده است روش انجام اين كار نشان داده شده +است:
+new_id = execute("SELECT nextval('person_id_seq')"); + execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");-با اجراي دستور فوق مقدار جديد را -در متغير new_id نيز خواهيدداشت كه ميتوانيد آن را در بقيه -درخواستها نيز استفاده كنيد. توجه داشته باشيد كه نام SEQUENCEيي -كه به طور اتوماتيك ايجاد شده است به صورت table_serialcolumn_seq -خواهد بود. كه در آن -table نام جدول و serialcolumn نام فيلد -سريال جدول ميباشد.
-براي ديدن مقدار نسبت داده شده -به فيلد سريال نيز ميتوان از تابع () currval -به صورت زير استفاده كرد.
-execute("INSERT INTO person (name) VALUES ('Blaise Pascal')"); - new_id = execute("SELECT currval('person_id_seq')"); ++با اجرا دستور فوق مقدار جديد را +در متغير new_id نيز خواهيدداشت كه ميتوانيد آن را در بقيه +درخواستهاي نيز استفاده كنيد. توجه داشته باشيد كه نام SEQUENCEيي +كه به طور اتوماتيك ايجاد شده است به صورت table_serialcolumn_seq +خواهد بود. كه در آن +table نام جدول و serialcolumn نام فيلد +سريال جدول ميباشد.
+براي ديدن مقدار نسبت داده شده +به فيلد سريال نيز ميتوان از تابع () currval +به صورت زير استفاده كرد.
+execute("INSERT INTO person (name) VALUES ('Blaise Pascal')"); + new_id = execute("SELECT currval('person_id_seq')");-و سرانجام شما ميتوانيد از -مقدار OID كه خروجي دستور INSERT است -براي ديدن مقدار پيش فرض استفاده كنيد. هر چند اين روش در همه پلتفرمها قابل -استفاده نيست و ضمن اينكه فيلد oid بعد از عدد 4 ميليارد -دوباره صفر ميشود. در زبان perl با استفاده از DBI -و DBD::Pg مقدار oidرا ميتوانيد -به اين شكل استخراج كنيد: بعد از اجراي ()st->execute$ -مقدار oid در متغير sth->pg_oid_status$ -ذخيره خواهد شد.
-4.15.3) آیا -توابع ()nextval و ()currval منجر -به ایجاد شرایط race برای سایر کاربران می شوند؟
-خیر، استفاده از این توابع شرایط -race را به وجود نمی آورد.
+و سرانجام شما ميتوانيد از +مقدار OID كه خروجي دستور INSERT + است براي ديدن مقدار پيش فرض استفاده كنيد. هر چند اين روش در همه پلتفرمها قابل +استفاده نيست و ضمن اينكه فيلد oid بعد از عدد 4 ميليارد +دوباره صفر ميشود. در زبان perl با استفاده از DBI +و DBD::Pg مقدار oidرا ميتوانيد +به شكل زير استخراج كنيد: بعد از اجراي ()st->execute$ +مقدار oid در متغير sth->pg_oid_status$ +ذخيره خواهد شد.
+4.15.3) آیا +توابع ()nextval و ()currval منجر +به ایجاد شرایط race برای سایر کاربران می شوند؟
+خیر، استفاده از این توابع شرایط +race را به وجود نمی آورد.
4.15.4) -چرا اعداد سریالی مربوط به تراکنشهای abort شده مجدداً -استفاده نمی شود؟ چرا بین اعداد سریالی یک فاصله خالی ایجاد می شود؟
-برای بالا بردن امکان اجرای -همزمان تراکنشها، اعداد سریالی به محض اجرای تراکنش به آنها تخصیص می یابد در این -حالت اگر بعضی از تراکنشها abort شوند بین اعداد سریالی -استفاده شده یک فاصله خالی به وجود می آید.
-4.16) OID و TID چه هستند؟
-OID راه حل PostgreSQL -برای داشتن یک شناسه منحصر به فرد برای هر ردیف است. هر ردیف جدیدی که ایجاد می شود -یک OID منحصر به فرد به آن اختصاص می یابد. تمام OIDهایی -که در حین initdb ایجاد می شوند از 16384 کمتر هستند و -OIDهایی بعداً تولید می شود از این عدد بزرگتر خواهد بود. -نکته مهم آن است که OIDها نه تنها در یک جدول شبیه نیستند -بلکه در کل پایگاه داده هیچ دو ردیفی دارای OID یکسان -نخواهد بود.
-PostgreSQL از OID -در سیستم داخلی خود برای ایجاد ارتباط بین ردیفهای جداول مختلف استفاده می کند. -توصیه می شود که یک ستون از نوع OID برای ذخیره این فیلد در -جدول ایجاد کنید. ساختن یک نمایه برای این فیلد باعث دسترسی سریعتر به آن خواهد شد.
-تمام پایگاههای داده در -PostgreSQL برای گرفتن OID جدید از یک -ناحیه مرکزی استفاده می کند. ولی اگر بخواهیم OID را به روش -دیگری بگیریم و یا اینکه در حین کپی کردن یک جدول بخواهیم OIDهای -اصلی آن تغییر نکند به روش زیر می توانیم عمل کنیم:
+چرا اعداد سریالی مربوط به تراکنشهای abort شده مجدداً +استفاده نمی شود؟ چرا بین اعداد سریالی یک فاصله خالی ایجاد می شود؟ +برای بالا بردن امکان اجرای +همزمان تراکنشها، اعداد سریالی به محض اجرای تراکنش به آنها تخصیص می یابد در این +حالت اگر بعضی از تراکنشها abort شوند بین اعداد سریالی +استفاده شده یک فاصله خالی به وجود می آید.
+4.16) OID و +TID چه هستند؟
+OID راه حل PostgreSQL +برای داشتن یک شناسه منحصر به فرد برای هر ردیف است. هر ردیف جدیدی که ایجاد می شود +یک OID منحصر به فرد به آن اختصاص می یابد. تمام OIDهایی +که در حین initdb ایجاد می شوند از 16384 کمتر هستند و +OIDهایی بعداً تولید می شود از این عدد بزرگتر خواهد بود. +نکته مهم آن است که OIDها نه تنها در یک جدول شبیه نیستند +بلکه در کل پایگاه داده هیچ دو ردیفی دارای OID یکسان +نخواهد بود.
+PostgreSQL از OID +در سیستم داخلی خود برای ایجاد ارتباط بین ردیفهای جداول مختلف استفاده می کند. +توصیه می شود که یک ستون از نوع OID برای ذخیره این فیلد در +جدول ایجاد کنید. ساختن یک نمایه برای این فیلد باعث دسترسی سریعتر به آن خواهد شد.
+تمام پایگاههای داده در +PostgreSQL برای گرفتن OID جدید از یک +ناحیه مرکزی استفاده می کند. ولی اگر بخواهیم OID را به روش +دیگری بگیریم و یا اینکه در حین کپی کردن یک جدول بخواهیم OIDهای +اصلی آن تغییر نکند به روش زیر می توانیم عمل کنیم:
-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'; + COPY tmp_table TO '/tmp/pgtable'; + COPY new_table WITH OIDS FROM '/tmp/pgtable'; DROP TABLE tmp_table;OID یک عدد صحیح 4 بایتی است و -بنابراین حداکثر مقدار آن 4 میلیارد خواهد بود و بعد از آن مقدار آن سرریز خواهد -شد. البته تا کنون برای کسی این اتفاق نیفتاده است و تصمیم -گرداندگان PostgreSQL آن است که قبل از آنکه این اتفاق رخ -دهد این مشکل را برطرف کنند.
-TIDها برای شناسایی محل فیزیکی -یک ردیف بر اساس بلوک و آفست می باشد. TIDها بعد از تغییر -پیدا کردن یک ردیف و یا بازخوانی آن عوض می شوند. TIDها -توسط نمایه ها استفاده می شوند.
+OID یک عدد صحیح 4 بایتی است و +بنابراین حداکثر مقدار آن 4 میلیارد خواهد بود و بعد از آن مقدار آن سرریز خواهد +شد. البته تا کنون برای کسی این اتفاق نیفتاده است و تصمیم +گرداندگان PostgreSQL آن است که قبل از آنکه این اتفاق رخ +دهد این مشکل را برطرف کنند.
+TIDها برای شناسایی محل فیزیکی +یک ردیف بر اساس بلوک و آفست می باشد. TIDها بعد از تغییر +پیدا کردن یک ردیف و یا بازخوانی آن عوض می شوند. TIDها +توسط نمایه ها استفاده می شوند.
4.17) -معني بعضي از ترمها و كلماتي كه در PostgreSQL -استفاده ميشود چيست؟
-لیست برخی از ترمها و کلماتی که -استفاده می شوند:
+معني بعضي از ترمها و كلماتي كه در PostgreSQL +استفاده ميشود چيست؟لیست برخی از ترمها و کلماتی که +استفاده می شوند:
table, relation, class - :کلاس، رابطه، جدول
row, record, tuple چندتایی، - رکورد، ردیف
row, record, tuple چندتایی، + رکورد، ردیف
column, field, attribute - صفت، فیلد، ستون
retrieve, select انتخاب، - خواندن
replace, updateبه روز کردن، - جایگزینی + صفت، فیلد، ستون
retrieve, select انتخاب، + خواندن
replace, updateبه روز کردن، + جایگزینی
append, insert درج، اضافه - کردن
append, insert درج، اضافه + کردن
OID, serial value - مقدار سریال
portal, cursor
range variable, table name, table alias
یک لیست عمومی از ترمهای مورد -استفاده در پایگاه داده در آدرس یک لیست عمومی از ترمهای مورد +استفاده در پایگاه داده در آدرس http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.htm -وجود دارد.
+وجود دارد.این خطا احتمالاً یا به خاطر -تمام شدن حافظه مجازی سیستم شماست و یا اینکه کرنل برای برنامه ها در مورد میزان -استفاده از حافظه مجازی محدودیت اعمال کرده است. قبل از اجرای برنامه اصلی یکی از -دستورات زیر را اجرا کنید.
+چرا من خطاي "ERROR: Memory exhausted in AllocSetAlloc" +ميگيرم؟ +این خطا احتمالاً یا به خاطر +تمام شدن حافظه مجازی سیستم شماست و یا اینکه کرنل برای برنامه ها در مورد میزان +استفاده از حافظه مجازی محدودیت اعمال کرده است. قبل از اجرای برنامه اصلی یکی از +دستورات زیر را اجرا کنید.
ulimit -d 262144 limit datasize 256m
بسته به نوع شل یکی از این -دستورات ممکن است با موفقیت اجرا شود. با اجرای آن دستور محدودیت حافظه مجازی برای -برنامه ها برداشته شده و با این کار احتمالاً درخواستی که قبلاً خطا می داده است -اجرا خواهد شد.
-با اجرای دستور
+ بسته به نوع شل یکی از این
+دستورات ممکن است با موفقیت اجرا شود. با اجرای آن دستور محدودیت حافظه مجازی برای
+برنامه ها برداشته شده و با این کار احتمالاً درخواستی که قبلاً خطا می داده است
+اجرا خواهد شد. با اجرای دستور
()SELECT version شما باید قبل از
-شروع دستوراتی که با large-objectها کار می کنند BEGIN و بعد از آنها هم یک END
-بگذارید. در حال حاضر PostgreSQL هندل large-objectها
-را در زمان نهایی شدن تراکنش (commitشدن)
-می بندد. به همین دلیل اولین تلاش برای انجام هر کاری با هندل منجر
-به خطای invalid large obj descriptor خواهد شد.
-برای جلوگیری از این خطا حتماً باید از یک تراکنش استفاده کنید.
-این کار همانطور که قبلاً گفته شد با استفاده از قرار دادن BEGIN
-و END در ابتدا و انتهای دستورات انجام می شود. اگر این خطا را در حین استفاده
-از یک درایور ODBC دریافت کردید احتمالاً باید این دستور را
-اجرا کنید: set شما باید قبل از
+شروع دستوراتی که با large-objectها کار می کنند از
+BEGIN و بعد از آنها هم یک END
+بگذارید. در حال حاضر PostgreSQL هندل large-objectها
+را در زمان نهایی شدن تراکنش (commitشدن)
+می بندد. به همین دلیل اولین تلاش برای انجام هر کاری با هندل منجر
+به خطای invalid large obj descriptor خواهد شد.
+برای جلوگیری از این خطا حتماً باید از یک تراکنش استفاده کنید.
+این کار همانطور که قبلاً گفته شد با استفاده از قرار دادن BEGIN
+و END در ابتدا و انتهای دستورات انجام می شود. اگر این خطا را در حین استفاده
+از یک درایور ODBC دریافت کردید احتمالاً باید این دستور را
+اجرا کنید: set از CURRENT_TIMESTAMP
- استفاده کنید در مثال زیر نحوه
-انجام این کار نشان داده شده است:4.19) از كجا
+تشخيص دهم كه ويرايش يا نسخه PostgreSQLيي كه من استفاده
+ميكنم چيست؟
+4.20) چرا
-حین اجرای عملیات روی large-objectها خطای "invalid
-large obj descriptor"به وجود می آید؟
-auto-commit off
4.20) چرا در
+حین اجرای عملیات روی large-objectها خطای "invalid
+large obj descriptor"به وجود می آید؟
+auto-commit off
4.21)
-چگونه يك ستون ايجاد كنم كه مقدار زمان جاري را به عنوان مقدار
-پيشفرض داشته باشد؟
-
از CURRENT_TIMESTAMP + استفاده کنید در مثال زیر نحوه انجام +این کار نشان داده شده است:
CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
در نسخه های قبل از 7.4 عمل -الحاق زیر درخواست و درخواست اصلی به این صورت انجام می شود که نتایج به دست آمده -از زیر درخواست به صورت ترتیبی برای هر ردیف اعمال می شود. اگر زیردرخواست ردیف های -کمی را به عنوان خروجی برگرداند و درخواست بیرونی ردیف های زیادی را شامل شود -استفاده از IN بهترین روش است در غیر اینصورت بهتر است از -EXISTS استفاده شود
+چرا "زير درخواستهايي" كه از IN استفاده +ميكنند كند هستند؟ +در نسخه های قبل از 7.4 عمل +الحاق زیر درخواست و درخواست اصلی به این صورت انجام می شود که نتایج به دست آمده +از زیر درخواست به صورت ترتیبی برای هر ردیف اعمال می شود. اگر زیردرخواست ردیف های +کمی را به عنوان خروجی برگرداند و درخواست بیرونی ردیف های زیادی را شامل شود +استفاده از IN بهترین روش است در غیر اینصورت بهتر است از +EXISTS استفاده شود
SELECT * FROM tab WHERE col IN (SELECT subcol FROM subtab);
به:
+به:
SELECT * FROM tab WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
برای اجرای سریع این درخواست -باید برای ستون subcol نمایه ایجاد شده باشد.
-در نسخه های بعد از 7.4 -IN برای الحاق از همان تکنیک پیچیده مورد استفاده در دستورات -معمولی استفاده می کند و بنابراین استفاده از آن نسبت به EXISTS -ارجحیت دارد.
برای انجام الحاق خارجی به روش -زیر عمل کنید:
+برای اجرای سریع این درخواست +باید برای ستون subcol نمایه ایجاد شده باشد.
+در نسخه های بعد از 7.4 +IN برای الحاق از همان تکنیک پیچیده مورد استفاده در دستورات +معمولی استفاده می کند و بنابراین استفاده از آن نسبت به EXISTS +ارجحیت دارد.
برای انجام الحاق خارجی به روش +زیر عمل کنید:
SELECT * FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
یا
+یا
SELECT * FROM t1 LEFT OUTER JOIN t2 USING (col);
درخواستهای بالا t1.col , -t2.col را به هم الحاق می کند و همچنین ردیفهای t1 -که نظیر آنها در t2 نبوده است را نیز برمی گرداند. اگر از -RIGHT استفاده شود نتیجه بر عکس است. یعنی ردیفهای -t2 که نظیر آنها در t1 نباشد را نشان می -دهد و اگر از FULL استفاده شود نتیجه هم شامل ردیفهای -t1 است و هم شامل ردیفهای t2. -استفاده از کلمه OUTER اختیاری است چرا که این کلمه به طور -ضمنی در دستورهای LEFT, RIGHT, FULL وجود دارد.
-در نسخه های قبلی پایگاه داده می
-توانیم الحاق خارجی را به کمک دستورهای UNION, NOT IN شبیه
-سازی کنیم. این کار در مثال زیر نشان داده شده است:
درخواستهای بالا t1.col , +t2.col را به هم الحاق می کند و همچنین ردیفهای t1 +که نظیر آنها در t2 نبوده است را نیز برمی گرداند. اگر از +RIGHT استفاده شود نتیجه بر عکس است. یعنی ردیفهای +t2 که نظیر آنها در t1 نباشد را نشان می +دهد و اگر از FULL استفاده شود نتیجه هم شامل ردیفهای +t1 است و هم شامل ردیفهای t2. +استفاده از کلمه OUTER اختیاری است چرا که این کلمه به طور +ضمنی دستورهای LEFT, RIGHT, FULL وجود دارد.
+در نسخه های قبلی پایگاه داده می
+توانیم الحاق خارجی را به کمک دستورهای UNION, NOT IN شبیه
+سازی کنیم. این کار در مثال زیر نشان داده شده است:
SELECT tab1.col1, tab2.col2
FROM tab1, tab2
@@ -1422,90 +1441,93 @@ t2 که نظیر آن
در حال حاضر این کار امکان پذیر -نیست. PostgreSQL فقط امکان درخواست از پایگاه داده ای را -می دهد که در حال حاضر به آن متصل باشید و نمیتوان به طور همزمان از دو پایگاه -داده استفاده کرد. البته یک برنامه کاربردی خود می تواند به طور همزمان دو -پایگاه داده را مورد استفاده قرار داده و نتایج را با هم ترکیب کند ولی نمی تواند -در یک درخواست به هر دو پایگاه داده رجوع کند.
+چگونه ميتوان درخواستهايي از چند پايگاه داده توليد كرد؟ +در حال حاضر این کار امکان پذیر +نیست. PostgreSQL فقط امکان درخواست از پایگاه داده ای را +می دهد که در حال حاضر به آن متصل باشید و نمی توان به طور همزمان از دو پایگاه +داده استفاده کرد. البته یک برنامه کاربردی خود می تواند به طور همزمان دو +پایگاه داده را مورد استفاده قرار داده و نتایج را با هم ترکیب کند ولی نمی تواند +در یک درخواست به هر دو پایگاه داده رجوع کند.
در نسخه 7.3 خروجی یک تابع می -تواند چند ردیف یا چند ستون باشد. برای دیدن اطلاعات بیشتر به سایت زیر -مراجعه کنید:چگونه خروجي يك تابع ميتواند چند رديف يا ستون باشد؟ +
در نسخه 7.3 خروجی یک تابع می +تواند چند ردیف یا چند ستون باشد. برای دیدن اطلاعات بیشتر به سایت زیر +مراجعه کنید:http://techdocs.postgresql.org/guides/SetReturningFunctions
PL/PgSQL محتوای توابع را ذخیره -(cache) می کند. یک اثر بد جانبی -این کار آن است که اگر در تابع از یک جدول موقت استفاده شود و بعداً آن جدول حذف و -یک جدول جدید به جای آن ایجاد شود، در فراخوانی مجدد آن تابع، محتوای ذخیره -شده تابع هنوز به جدول قدیمی اشاره می کند و بنابراین اجرای تابع با اشکال -مواجه می شود. راه حل این مشکل آن است که برای جداول موقت از دستور EXECUTE -استفاده شود که این کار سبب می شود که درخواست برای هر بار اجرا مجدداً پیمایش و -تفسیر شود.
+در توابع PL/PgSQL چرا نميتوان با اطمينان +جداول موقت را ايجاد يا حذف كرد؟ +PL/PgSQL محتوای توابع را ذخیره +(cache) می کند. یک اثر بد جانبی +این کار آن است که اگر در تابع از یک جدول موقت استفاده شود و بعداً آن جدول حذف و +یک جدول جدید به جای آن ایجاد شود، در فراخوانی مجدد آن تابع، محتوای ذخیره +شده تابع هنوز به جدول قدیمی اشاره می کند و بنابراین اجرای تابع با اشکال +مواجه می شود. راه حل این مشکل آن است که برای جداول موقت از دستور EXECUTE +استفاده شود که این کار سبب می شود که درخواست برای هر بار اجرا مجدداً پیمایش و +تفسیر شود.
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 http://gborg.PostgreSQL.org/genpage?replication_research
+ 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
+http://gborg.PostgreSQL.org/genpage?replication_research
lists them. A multi-master replication solution is being worked on at http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
contrib/pgcrypto - شامل توابع رمزنگاری زیادی است که می توان از آنها در دستورات SQL - استفاده کرد.
برای رمز کردن ارتباط بین - client و server پایگاه داده - حتماً گزینه SSL را بر روی پایگاه داده فعال کنیم.
در نسخه 7.3 به بعد کلمات - عبور کاربران به طور اتوماتیک به صورت رمز شده ذخیره می شود ولی در نسخه های - قبلی باید گزینه - PASSWORD_ENCRYPTION را در فایلpostgresql.conf - فعال کنیم. + شامل توابع رمزنگاری زیادی است که می توان از آنها در دستورات SQL + استفاده کرد.
برای رمز کردن ارتباط بین + client و server ، پایگاه داده + حتماً گزینه SSL را بر روی پایگاه داده فعال کنیم.
در نسخه 7.3 به بعد کلمات + عبور کاربران به طور اتوماتیک به صورت رمز شده ذخیره می شود ولی در نسخه های + قبلی باید گزینه + PASSWORD_ENCRYPTION در فایلpostgresql.conf + فعال کنیم.
می توان پایگاههای داده را - روی یک فایل سیستم رمزشده نگاهداری کرد
می توان پایگاههای داده را + روی یک فایل سیستم رمزشده نگاهداری کرد
دلایل مختلفی می تواند باعث بروز -این مشکل شود. اما قبل از همه، تابع خود را به صورت جدا تست کنید.
-کد خود را به گروه پستی
+من يك تابع نوشتهام. چگونه آن را در psql
+اجرا كنم؟ چرا با اجراي آن core dump ميگيرم؟
+ دلایل مختلفی می تواند باعث بروز
+این مشکل شود. اما قبل از همه تابع خود را به صورت جدا تست کنید. کد خود را به گروه پستی
pgsql-hackers
- ارسال کنید.5.2) چگونه
+ميتوانم در توليد نوعها و توابع جديد و جالب براي
+PostgreSQL همكاري و مشاركت داشته باشم؟
+
در نسخه های 7.3 به بعد یک تابع -می تواند یک جدول را به عنوان خروجی برگرداند. این ویژگی در توابعی که به زبانهای -C و PL/PgSQL نوشته میشوند به طور -کامل وجود دارد. راهنما برنامه نویسان را مطالعه کنید. یک مثال از نحوه برگرداندن -یک جدول به عنوان خروجی در contrib/tablefunc آمده -است.
+چگونه ميتوانم يك تابع به زبان C بنويسم +كه خروجي آن يك tuple (چند +تايي) باشد؟ +در نسخه های 7.3 به بعد یک تابع +می تواند یک جدول را به عنوان خروجی برگرداند. این ویژگی در توابعی که به زبانهای +C و PL/PgSQL نوشته می شوند به طور +کامل وجود دارد. راهنما برنامه نویسان را مطالعه کنید. یک مثال از نحوه برگرداندن +یک جدول به عنوان خروجی در contrib/tablefunc آمده +است.
Makefile برای فایلهای -include شده وابستگیها را به درستی نشان نمی دهد. برای اطمینان از -اینکه فایلی که عوض کرده اید حتماً دوباره کامپیل میشود دستور make clean -را اجرا کنید. اگر از کامپیلر gcc استفاده می کنید می -توانید از گزینه enable-depend-- در موقع اجرای برنامه -configure استفاده کنید این گزینه باعث می شود که وابستگیها -به طور اتوماتیک تولید شود.
\ No newline at end of file +من يك فايل منبع را عوض كرده ام چرا در عمليات كامپيل مجدد آن +تغيير ديده نميشود؟ +Makefile برای فایلهای +include شده وابستگیها را به درستی نشان نمی دهد. برای اطمینان از +اینکه فایلی که عوض کرده اید حتماً دوباره کامپیل می شود دستور make clean +را اجرا کنید. اگر از کامپیلر gcc استفاده می کنید می +توانید از گزینه enable-depend-- در موقع اجرای برنامه +configure استفاده کنید این گزینه باعث می شود که وابستگیها +به طور اتوماتیک تولید شود.
\ No newline at end of file -- cgit v1.2.3