1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
|
<!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:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A></font></P>
<P dir="rtl"><span lang="fa"><font face="Tahoma">نگهدارنده فايل به زبان فارسي:
</font></span><font face="Tahoma"><a href="mailto:m.taghizadeh@imenafzar.net">
m.taghizadeh@imenafzar.net</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:scrappy@PostgreSQL.org">
scrappy@PostgreSQL.org</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:pgsql-general@PostgreSQL.org">pgsql-general@PostgreSQL.org</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:pgsql-general-request@PostgreSQL.org">
pgsql-general-request@PostgreSQL.org</A></font></P>
<P dir="rtl"><font face="Tahoma">همچنين يك گروه پستي هم به صورت ارسال چكيده
پيامها وجود دارد. براي عضو شدن در اين گروه يك نامه با محتويات زير به این آدرس
ارسال كنيد. <A
href="mailto:pgsql-general-digest-request@PostgreSQL.org">
pgsql-general-digest-request@PostgreSQL.org</A>
</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:pgsql-bugs-request@PostgreSQL.org">
pgsql-bugs-request@PostgreSQL.org</A>
ارسال كنيد.</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:pgsql-hackers-request@PostgreSQL.org"><font size="3">pgsql-hackers-request@PostgreSQL.org</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:postgres95@openlink.co.uk">postgres95@openlink.co.uk</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>
|