From 5d283d89cb6142d721c095c28be19056ad620616 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Sun, 10 Nov 2002 19:48:41 +0000 Subject: Update russian FAQ, from Viktor Vislobokov. --- doc/src/FAQ/FAQ_russian.html | 268 ++++++++++++++++++++++--------------------- 1 file changed, 137 insertions(+), 131 deletions(-) (limited to 'doc/src') diff --git a/doc/src/FAQ/FAQ_russian.html b/doc/src/FAQ/FAQ_russian.html index a5c22f0a471..ffe0a225aed 100644 --- a/doc/src/FAQ/FAQ_russian.html +++ b/doc/src/FAQ/FAQ_russian.html @@ -2,11 +2,10 @@ - - + PostgreSQL FAQ @@ -14,7 +13,7 @@ alink="#0000ff">

Ответы на часто задаваемые вопросы по PostgreSQL

-

Дата последнего обновления: Среда 9 Октября 23:14:53 EDT 2002

+

Дата последнего обновления: Воскресенье 20 Октября 20:47:14 EDT 2002

Английский вариант сопровождает: Брюс Момьян (Bruce Momjian) (pgman@candle.pha.pa.us)
@@ -32,8 +31,7 @@


Общие вопросы

- 1.1) Что такое PostgreSQL? Как произносится это - название?
+ 1.1) Что такое PostgreSQL? Как произносится это название?
1.2) Каковы авторские права на PostgreSQL?
1.3) На каких Unix платформах работает PostgreSQL?
1.4) Существуют ли версии портированные не на Unix системы?
@@ -80,8 +78,7 @@ 3.7) Какие возможности для отладки есть в наличии?
3.8) Почему я получаю сообщение "Sorry, too many clients" когда пытаюсь подключиться к базе?
- 3.9) Что это за файлы pg_sorttempNNN.NN - в моем каталоге с базой данных?
+ 3.9) Что находится в каталоге pgsql_tmp?
3.10) Почему необходимо делать dump и restore при обновлении выпусков PostgreSQL?
@@ -143,6 +140,7 @@ 4.26) Почему я не могу надежно создавать/удалять временные таблицы в функциях PL/PgSQL?
4.27) Какие опции репликации существуют?
+ 4.28) Какие опции шифрования существуют?

Расширения PostgreSQL

5.1) Я написал функцию определяемую пользователем. @@ -158,7 +156,7 @@

Общие вопросы

-

1.1) Что такое PostgreSQL?

+

1.1) Что такое PostgreSQL? Как произносится это название?

PostgreSQL произносится Post-Gres-Q-L (Пост-Грес-Кью-Эл).

@@ -169,13 +167,12 @@ расширенное подмножество SQL. PostgreSQL - это свободное и полностью открытое программное обеспечение.

-

Разработку PostgreSQL выполняет команда, - связанная через Internet, все участники которой подписаны на список - рассылки разработчиков. В настоящее время, их координатором - является Марк Форнай (Marc G. Fournier) (Разработку PostgreSQL выполняет команда разработчиков, все участники + которой подписаны на список рассылки разработчиков. В настоящее время, + их координатором является Марк Форнай (Marc G. Fournier) (scrappy@PostgreSQL.org). (См. - ниже о том, как подключиться к разработке). Эта команда теперь - отвечает за всю разработку PostgreSQL.

+ секцию 1.6 о том, как подключиться к разработке). + Эта команда теперь отвечает за всю разработку PostgreSQL.

Авторами PostgreSQL 1.01 являются Эндрю Ю (Andrew Yu) и Джоли Чен (Jolly Chen). Многие другие внесли свой вклад в перенос на другие @@ -240,10 +237,10 @@

Клиент

Для запуска на платформах MS Windows возможна компиляция C - библиотеки libpq, psql и других интерфесов и бинарных файлов. + библиотеки libpq, psql, других интерфесов и клиентских приложений. В этом случае, клиент запускается на MS Windows и связывается по TCP/IP с сервером, запущенным на одной из поддерживаемых Unix - платформ. В дистрибутив включается файл win31.mak для того, + платформ. В дистрибутив включается файл win32.mak для того, чтобы можно было провести сборку библиотеки libpq и psql для Win32. PostgreSQL также работает через ODBC.

@@ -252,10 +249,12 @@

Сервер БД может быть запущен на Windows NT и Win2k, используя библиотеку Cygwin, разработанную для переноса программного обеспечения Unix - в NT. Смотрите pgsql/doc/FAQ_MSWIN в дистрибутиве или MS Windows FAQ - на нашем сайте. Мы не планируем специально переносить PostgreSQL - на какую-либо платформу Microsoft.

+ в NT. Смотрите pgsql/doc/FAQ_MSWIN в дистрибутиве или + MS Windows FAQ на + http://www.PostgreSQL.org/docs/faq-mswin.html.

+ +

PostgreSQL, спортированный специально для MS Win NT/2000/XP в + настоящий момент начал работать.

1.5) Где можно взять PostgreSQL?

@@ -321,7 +320,7 @@

Список коммерческой поддержки компаний доступен на http://www.postgresql.org/users-lounge/commercial-support.html.

+ "http://www.postgresql.org/users-lounge/commercial-support.html">http://www.PostgreSQL.org/users-lounge/commercial-support.html.

1.7) Какая последняя версия?

@@ -341,8 +340,8 @@ "http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html и http://www.commandprompt.com/ppbook/. Список книг по PostgreSQL, которые можно купить доступен по адресу - http://www.postgresql.org/books/. - Кроме того, по адресу http://techdocs.postgresql.org/ + http://www.ca.PostgreSQL.org/books/. + Кроме того, по адресу http://techdocs.PostgreSQL.org/ вы можете найти коллекцию технических статей посвященных PostgreSQL.

@@ -405,8 +404,8 @@

1.13) Как отравить сообщение об ошибке??

-

Пожалуйста посетите страничку PostgreSQL BugTool, +

Пожалуйста посетите страничку PostgreSQL BugTool на http://www.PostgreSQL.org/bugs/bugs.php, на которой предоставлены детальные инструкции о том как отправить сообщение об ошибке.

@@ -445,9 +444,8 @@ Мы делаем упор на надежность и расширенные возможности, но мы также продолжаем увеличивать производительность с каждым выпуском. Существует интересная страничка в Интернет, сравнивающая PostgreSQL и MySQL на - - - http://openacs.org/why-not-mysql.html
+ + http://openacs.org/philosophy/why-not-mysql.html

@@ -467,15 +465,15 @@
Поддержка
-
Наш список рассылки представлен большой группой разработчиков - и пользователей, которые могут помочь решить любые возникшие - проблемы. В то же время, мы не гарантируем какие-либо исправления, - но и разработчики коммерческих СУБД не всегда делают - исправления. Прямой доступ к разработчикам, сообществу пользователей, - руководствам и исходным текстам часто делают поддержку PostgreSQL - превосходящей другие СУБД. Существует коммерческая - поддержка по результам возникших инцидентов, которая доступна для - тех кому она нужна. (Смотрите Как получить поддержку?.)
+
Наш список рассылки предоставляет возможможность общения с + большой группой разработчиков и пользователей, которые могут помочь решить + любые возникшие проблемы. В то же время, мы не гарантируем какие-либо + исправления, но и разработчики коммерческих СУБД не всегда + делают исправления. Прямой доступ к разработчикам, сообществу + пользователей, руководствам и исходным текстам часто делают поддержку + PostgreSQL превосходящей другие СУБД. Существует + коммерческая поддержка по результам возникших инцидентов, которая + доступна для тех кому она нужна. (Смотрите Секцию 1.6.)

@@ -493,7 +491,7 @@ PostgreSQL?

PostgreSQL имеет одноранговую инфраструктуру с того самого времени - как мы начали разработку 6 лет назад. Мы должны благодарить за + как мы начали разработку в 1996 году. Мы должны благодарить за это Марка Фоная (Marc Fournier), который создал эту инфраструктуру и управляет ей на протяжении этих лет.

@@ -505,8 +503,8 @@ некоторое количество ежемесячных и одноразовых расходов, которые требуют денег. Если вы или ваша компания имеет деньги, которые можно передать в помощь нашим усилиям, пожалуйста посетите страничку - - https://store.pgsql.com/shopping/index.php?id=1 + + https://store.pgsql.com/shopping/ и сделайте свой вклад.

Хотя на страничке говорится о PostgreSQL, Inc, пункт @@ -549,29 +547,23 @@

Прекрасное введение во взаимодействие баз данных и Web можно найти на: http://www.webreview.com

-

Также загляните на http://www.phone.net/home/mwm/hotlist/.

-

Для интеграции с Web, одним из превосходных инструментов является PHP. - Домашняя станичка http://www.php.net.

+ Домашняя станичка http://www.php.net.

-

Для комплексных решений, многие пользуются Perl интерфейсом и CGI.pm.

+

Для комплексных решений, многие пользуются Perl интерфейсом и CGI.pm или mod_perl.

2.3) Есть ли у PostgreSQL графический интерфейс пользователя? Генератор отчетов? Встроенный интерфейс для языка запросов?

У нас есть прекрасный горафический интерфейс, называемый - pgaccess, который является частью дистрибутива. pgaccess - также емеет генератор отчетов. Его страничка http://www.flex.ro/pgaccess

+ PgAccess, который также можно использовать как генератор отчетов. + Его страничка http://www.pgaccess.org/

Мы также включаем ecpg, который предоставляет встроенный интерфейс к языку запросов SQL из C.

-

2.4) Какие языки могут взаимодействовать с - PostgreSQL?

+

2.4) Какие языки могут взаимодействовать с PostgreSQL?

Вот эти:

@@ -584,7 +576,7 @@
  • Java (jdbc)
  • -
  • Perl (perl5)
  • +
  • Perl (DBD::Pg и perl5)
  • ODBC (odbc)
  • @@ -594,11 +586,12 @@
  • C Easy API (libpgeasy)
  • -
  • Embedded HTML (PHP from http://www.php.net)
  • +
  • PHP ('pg_' functions, Pear::DB)
  • -

    Дополнительные интерфейсы доступны по адресу - http://www.postgresql.org/interfaces.html. +

    Дополнительные интерфейсы доступны по адресу + http://www.PostgreSQL.org/interfaces.html. + и + http://gborg.PostgreSQL.org.


    @@ -671,7 +664,7 @@

    Если вы выполняете много операторов INSERT, рассмотрите возможность выполнять их в большой пачке, используя команду COPY. Это значительно быстрее, чем отдельные - INSERT. Во-вторых, операторы вне блока транзакции + INSERT. Во-вторых, операторы вне блока транзакции BEGIN WORK/COMMIT сами выполняют транзакцию. Подумайте над выполнением нескольких операторов в одном блоке транзакции. Это уменьшит количество транзакций. Также, задумайтесь над удалением @@ -740,7 +733,7 @@

    Если postmaster запущен, запустите psql в одном окне, затем найдите PID процесса postgres, используемый psql. Используйте отдадчик для подключения к - postgres PID. Вы можете установить точки + postgres PID. Вы можете установить точки прерывания в отладчике и запустить запрос из psql. Если вы производите отладку запуска postgres, вы можете установить PGOPTIONS="-W n", и затем запустить psql. Эта опция приводит @@ -781,7 +774,7 @@ семафоров, SEMMNS и SEMMNI; максимальное количество процессов, NPROC; максимальное количество процессов на пользователя, MAXUPRC; и максимальное - количество открытых файлов, NFILE и NINODE. + количество открытых файлов, NFILE и NINODE. Причина создания ограничения на количество backend процессов как раз и состоит в том, чтобы вашей системе хватило ресурсов.

    @@ -789,38 +782,35 @@ было 64, и изменение этого количества требовало перекомпиляции после установки константы MaxBackendId в include/storage/sinvaladt.h.

    -

    3.9) Что это за файлы pg_sorttempNNN.NN - в моем каталоге с базой данных?

    - -

    Это временные файлы, генерируемые во время выполнения запроса. - Например, если для оператора ORDER BY должна быть - выполнена сортировка, которая требует больше места чем выделенно - для backend процесса в опции -S, то создается временный файл для - хранения дополнительных данных.

    +

    3.9) Что находится в каталоге pgsql_tmp?

    -

    Временные файлы должны удаляться автоматически, но этого может - не происходить, если backend процесс падает во время сортировки. - Если у вас не запущено ни одного backend процесса, то вы можете - спокойно удалить файлы pg_tempNNN.NN.

    +

    Данный каталог содержит временные файлы, генерируемые обработчиком + запроса. Например, если для выполнения ORDER BY нужна + сортировка и эта сортировка требует памяти больше, чем допускает параметр -S + у backend'а, то для хранения дополнительных данных создаются временные + файлы.

    + +

    Эти временные файлы должны удаляться автоматически, но этого может не + произойти, если backend рухнул во время сортировки. Останов и запуск + серверного процесса обеспечит их удаление из каталога.

    - 3.10) Почему необходимо делать dump и restore при - обновлении выпусков PostgreSQL?
    +

    3.10) Почему необходимо делать dump и restore при + обновлении выпусков PostgreSQL?

    Разработчики PostgreSQL делают только небольшие изменения между подвыпусками. Таким образом обновление с версии 7.2 до 7.2.1 не требует - выполнения dump и restore. Однако при выходе очередного выпуска часто - меняется внутренний формат системных таблиц и файлов данных. Эти - изменения часто носят комплексный характер, так что нет возможности - обеспечить обратную совместимость файлов данных. Выполение dump - позволяет получить данные в общем формате, который затем может быть - загружен при использовании нового внутреннего формата.

    + выполнения dump и restore. Однако при выходе очередного выпуска + (т.е. при обновлении например, с 7.2 на 7.3) часто меняется внутренний + формат системных таблиц и файлов данных. Эти изменения часто носят + комплексный характер, так что нет возможности обеспечить обратную + совместимость файлов данных. Выполение dump позволяет получить данные + в общем формате, который затем может быть загружен при использовании + нового внутреннего формата.

    -

    - В тех выпусках, где формат данных на диске не меняется, для проведения +

    В тех выпусках, где формат данных на диске не меняется, для проведения обновления может быть использован сценарий pg_upgrade без использования dump/restore. Комментарии к выпуску говорит когда можно - использовать pg_upgrade для этого выпуска. -

    + использовать pg_upgrade для этого выпуска.


    Вопросы эксплуатации

    @@ -857,7 +847,8 @@

    4.4) Как удалить колонку из таблицы?

    -

    Мы не поддерживаем ALTER TABLE DROP COLUMN, но +

    Эта функциональность была добавлена в выпуск 7.3 с оператором + ALTER TABLE DROP COLUMN. В ранних версиях, можно сделать так:

         BEGIN;
    @@ -981,21 +972,21 @@
         SELECT col
         FROM tab
         ORDER BY col [ DESC ]
    -    LIMIT 1
    +    LIMIT 1;
     

    Когда используются операции с шаблонами, например LIKE - или ~, индексы могут быть использованы в следующих случаях: -

    @@ -1053,13 +1044,13 @@
         SELECT *
         FROM tab
    -    WHERE lower(col) = 'abc'
    +    WHERE lower(col) = 'abc';
     
    Эта конструкция не будет использовать стандартный индекс. Однако, если вы создадите функциональный индекс, он будет использован:
    -    CREATE INDEX tabindex on tab (lower(col));
    +    CREATE INDEX tabindex ON tab (lower(col));
     

    4.13) Как я могу определить, что значение поля @@ -1074,8 +1065,8 @@ Тип Внутреннее имя Замечания -------------------------------------------------- "char" char 1 символ -CHAR(#) bpchar заполняется пустотой до фиксированной длины -VARCHAR(#) varchar размер задает максимальную длину, нет заполнения +CHAR(n) bpchar заполняется пустотой до фиксированной длины +VARCHAR(n) varchar размер задает максимальную длину, нет заполнения TEXT text нет задаваемого верхнего ограничения или длины BYTEA bytea массив байт переменной длины (можно использовать null-байт без опаски) @@ -1091,13 +1082,14 @@ BYTEA bytea так что занимаемое дисковое пространство может также быть и меньше, чем ожидалось.

    -

    CHAR() - это лучшее решение для хранения строк, которые - обычно имеют одинаковую длину. VARCHAR() - это лучшее +

    CHAR(n) - это лучшее решение для хранения строк, которые + обычно имеют одинаковую длину. VARCHAR(n) - это лучшее решение, когда нужно хранить строки переменной длины, но не превышающие определенного размера. TEXT - это лучшее решение для строк неограниченной длины, с максимально допустимой длиной в 1 гигабайт. BYTEA для хранения бинарных данных, значения которых - могут включать NULL байты.

    + могут включать NULL байты. Эти типы имеют сходные + характеристики производительности.

    4.15.1) Как мне создать поле serial/с-авто-увеличением?

    @@ -1136,11 +1128,11 @@ BYTEA bytea

    Один из способов состоит в получении следующего значения SERIAL из объекта sequence с помощью функции nextval() перед вставкой и затем вставлять это значение - явно. Используйте таблицу-пример в 4.15.1, чтобы - увидеть как это делается в Perl:

    + явно. Используйте таблицу-пример в 4.15.1, пример + в псевдоязыке покажет как это делается:

    -    new_id = output of "SELECT nextval('person_id_seq')"
    -    INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal');
    +    new_id = execute("SELECT nextval('person_id_seq')");
    +    execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
     
    Затем вы должны также сохранить новое значение в переменной @@ -1152,11 +1144,11 @@ BYTEA bytea именами вашей таблицы и вашей колонки SERIAL.

    В качестве альтернативы, вы можете получить назначенное значение - SERIAL с помощью функции currval() + SERIAL с помощью функции currval() после проведения обычной операции вставки, например

    -    INSERT INTO person (name) VALUES ('Blaise Pascal');
    -    new_id = output of "SELECT currval('person_id_seq')";
    +    execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
    +    new_id = execute("SELECT currval('person_id_seq')");
     
    И наконец, вы можете использовать значение @@ -1171,7 +1163,7 @@ BYTEA bytea использование currval() и nextval() приведет к зациклированию с другими пользователями? -

    Нет. Currval() возвращает текущее значение, назначенное вашем +

    Нет. currval() возвращает текущее значение, назначенное вашем backend'ом, а не другими пользователями.

    4.15.4) Почему числа из моей последовательности @@ -1191,7 +1183,7 @@ BYTEA bytea в PostgreSQL. Каждая запись, которая создаётся в PostgreSQL получает уникальный OID. Все значения OID генерируемые во время initdb имеют значения меньше 16384 (из - backend/access/transam.h). Все созданные пользователем + include/access/transam.h). Все созданные пользователем OID имеют бОльшие значение. По умолчанию, все эти OID являются уникальными не только внутри какой-либо таблицы или базы данных, но и внутри всей СУБД PostgreSQL.

    @@ -1215,13 +1207,12 @@ BYTEA bytea COPY new TO '/tmp/pgtable'; DELETE FROM new; COPY new WITH OIDS FROM '/tmp/pgtable'; + - - -

    OID хранится как 4-х байтное целое и не может превышать +

    OID хранится как 4-х байтное целое и не может превышать значение в 4 миллиарда. Однако, еще никто не сообщил о том, что такое произошло, но мы планируем до того как это случиться избавится от этого ограничения.

    @@ -1258,8 +1249,7 @@ BYTEA bytea
  • range variable, table name, table alias
  • -

    Список общих терминов по базам данных можно найти на http://www.comptechnews.com/~reaster/dbdesign.html

    +

    Список общих терминов по базам данных можно найти на http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html

    4.18) Почему я получаю ошибку "ERROR: Memory exhausted in AllocSetAlloc()"?

    @@ -1284,7 +1274,7 @@ BYTEA bytea

    4.19) Как мне узнать, какая версия PostgreSQL запущена?

    -

    Из psql, наберите select version();

    +

    Из psql, наберите SELECT version();

    4.20) Почему при работе с моим большим объектом я получаю ошибку "invalid large obj descriptor"?

    @@ -1324,18 +1314,16 @@ BYTEA bytea увеличить скорость в других запросах, замените IN на EXISTS:

    -SELECT *
    +    SELECT *
         FROM tab
    -    WHERE col IN (SELECT subcol FROM subtab)
    -
    +    WHERE col IN (SELECT subcol FROM subtab);
     
    на:
    -SELECT *
    +    SELECT *
         FROM tab
    -    WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col)
    -
    +    WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
     
    Чтобы такая конструкция работала быстро, колонка subcol @@ -1390,7 +1378,7 @@ BYTEA bytea Поскольку PostgreSQL загружает системные каталоги специфичные для базы данных, непонятно даже, как должен себя вести такой межбазовый запрос.

    -

    /contrib/dblink позволяет запросы между базами, используя +

    contrib/dblink позволяет запросы между базами, используя вызовы функций. Разумеется, клиент может одновременно устанавливать соедиенения с различными базами данных и таких образом объединять информацию из них.

    @@ -1399,8 +1387,8 @@ BYTEA bytea

    Вы можете возвращать из функций PL/pgSQL списки результатов, используя refcursors. Смотрите - http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html, + href="http://www.postgresql.org/idocs/index.php?plpgsql-cursors.html"> + http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html, секцию 23.7.3.3.

    4.26) Почему я не могу надежно создавать/удалять @@ -1416,10 +1404,26 @@ BYTEA bytea

    4.27) Какие опции репликации существуют?

    -

    Есть несколько решений для репликации типа master/slave. Они допускают - использование только одного сервера для внесения изменений в базу данных, - а slave серверы просто позволяют читать данные из базы.

    - +

    Есть несколько опций для репликации типа master/slave. Они допускают + использование только master сервера для внесения изменений в базу данных, + а slave серверы просто позволяют читать данные из базы. Об этом читайте + здесь: + http://gborg.PostgreSQL.org/genpage?replication_research. О репликации + с несколькими master серверами читайте здесь: + http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.

    + +

    4.28) Какие опции шифрования существуют? +

    +

    Расширения PostgreSQL

    @@ -1439,8 +1443,10 @@ BYTEA bytea

    5.3) Как мне написать C функцию, возвращающую запись?

    -

    Это требует некоего шаманства так как авторы никогда не пробовали - делать это, хотя в приницпе это возможно.

    +

    В версиях PostgreSQL, начиная с 7.3, функции, возвращающие таблицы + полностью поддерживаются в C, PL/PgSQL и SQL. Подробности смотрите в + Руководстве Программиста. Пример возвращающей таблицу функции, + написанной на C, можно найти в contrib/tablefunc.

    5.4) Я изменил исходный файл. Почему после перекомпиляции я не вижу изменений?

    -- cgit v1.2.3