diff options
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/FAQ/FAQ_russian.html | 268 |
1 files changed, 137 insertions, 131 deletions
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 @@ <HTML> <!-- DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN" --> - <!-- HTML --> <HEAD> <META name="generator" content="HTML Tidy, see www.w3.org"> - + <META http-equiv="Content-Type" content="text/html; charset=koi8-r"> <TITLE>PostgreSQL FAQ</TITLE> </HEAD> @@ -14,7 +13,7 @@ alink="#0000ff"> <H1>Ответы на часто задаваемые вопросы по PostgreSQL</H1> - <P>Дата последнего обновления: Среда 9 Октября 23:14:53 EDT 2002</P> + <P>Дата последнего обновления: Воскресенье 20 Октября 20:47:14 EDT 2002</P> <P>Английский вариант сопровождает: Брюс Момьян (Bruce Momjian) (<A href= "mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR> @@ -32,8 +31,7 @@ <HR> <H2 align="center">Общие вопросы</H2> - <A href="#1.1">1.1</A>) Что такое PostgreSQL? Как произносится это - название?<BR> + <A href="#1.1">1.1</A>) Что такое PostgreSQL? Как произносится это название?<BR> <A href="#1.2">1.2</A>) Каковы авторские права на PostgreSQL?<BR> <A href="#1.3">1.3</A>) На каких Unix платформах работает PostgreSQL?<BR> <A href="#1.4">1.4</A>) Существуют ли версии портированные не на Unix системы?<BR> @@ -80,8 +78,7 @@ <A href="#3.7">3.7</A>) Какие возможности для отладки есть в наличии?<BR> <A href="#3.8">3.8</A>) Почему я получаю сообщение <I>"Sorry, too many clients"</I> когда пытаюсь подключиться к базе?<BR> - <A href="#3.9">3.9</A>) Что это за файлы <I>pg_sorttempNNN.NN</I> - в моем каталоге с базой данных?<BR> + <A href="#3.9">3.9</A>) Что находится в каталоге <I>pgsql_tmp</I>?<BR> <A href="#3.10">3.10</A>) Почему необходимо делать dump и restore при обновлении выпусков PostgreSQL?<BR> @@ -143,6 +140,7 @@ <A href="#4.26">4.26</A>) Почему я не могу надежно создавать/удалять временные таблицы в функциях PL/PgSQL?<BR> <A href="#4.27">4.27</A>) Какие опции репликации существуют?<BR> + <A href="#4.28">4.28</A>) Какие опции шифрования существуют?<BR> <H2 align="center">Расширения PostgreSQL</H2> <A href="#5.1">5.1</A>) Я написал функцию определяемую пользователем. @@ -158,7 +156,7 @@ <H2 align="center">Общие вопросы</H2> - <H4><A name="1.1">1.1</A>) Что такое PostgreSQL?</H4> + <H4><A name="1.1">1.1</A>) Что такое PostgreSQL? Как произносится это название?</H4> <P>PostgreSQL произносится <I>Post-Gres-Q-L (Пост-Грес-Кью-Эл)</I>.</P> @@ -169,13 +167,12 @@ расширенное подмножество <SMALL>SQL</SMALL>. PostgreSQL - это свободное и полностью открытое программное обеспечение.</P> - <P>Разработку PostgreSQL выполняет команда, - связанная через Internet, все участники которой подписаны на список - рассылки разработчиков. В настоящее время, их координатором - является Марк Форнай (Marc G. Fournier) (<A href= + <P>Разработку PostgreSQL выполняет команда разработчиков, все участники + которой подписаны на список рассылки разработчиков. В настоящее время, + их координатором является Марк Форнай (Marc G. Fournier) (<A href= "mailto:scrappy@PostgreSQL.org">scrappy@PostgreSQL.org</A>). (См. - ниже о том, как подключиться к разработке). Эта команда теперь - отвечает за всю разработку PostgreSQL.</P> + секцию <A href="#1.6">1.6</A> о том, как подключиться к разработке). + Эта команда теперь отвечает за всю разработку PostgreSQL.</P> <P>Авторами PostgreSQL 1.01 являются Эндрю Ю (Andrew Yu) и Джоли Чен (Jolly Chen). Многие другие внесли свой вклад в перенос на другие @@ -240,10 +237,10 @@ <P><STRONG>Клиент</STRONG></P> <P>Для запуска на платформах MS Windows возможна компиляция C - библиотеки <I>libpq</I>, psql и других интерфесов и бинарных файлов. + библиотеки <I>libpq</I>, psql, других интерфесов и клиентских приложений. В этом случае, клиент запускается на MS Windows и связывается по TCP/IP с сервером, запущенным на одной из поддерживаемых Unix - платформ. В дистрибутив включается файл <I>win31.mak</I> для того, + платформ. В дистрибутив включается файл <I>win32.mak</I> для того, чтобы можно было провести сборку библиотеки <I>libpq</I> и <I>psql</I> для Win32. PostgreSQL также работает через <SMALL>ODBC</SMALL>.</P> @@ -252,10 +249,12 @@ <P>Сервер БД может быть запущен на Windows NT и Win2k, используя библиотеку Cygwin, разработанную для переноса программного обеспечения Unix - в NT. Смотрите <I>pgsql/doc/FAQ_MSWIN</I> в дистрибутиве или <A href= - "http://www.postgresql.org/docs/faq-mswin.html">MS Windows FAQ</A> - на нашем сайте. Мы не планируем специально переносить PostgreSQL - на какую-либо платформу Microsoft.</P> + в NT. Смотрите <I>pgsql/doc/FAQ_MSWIN</I> в дистрибутиве или + MS Windows FAQ на <A href="http://www.postgresql.org/docs/faq-mswin.html"> + http://www.PostgreSQL.org/docs/faq-mswin.html</A>.</P> + + <P>PostgreSQL, спортированный специально для MS Win NT/2000/XP в + настоящий момент начал работать.</P> <H4><A name="1.5">1.5</A>) Где можно взять PostgreSQL?</H4> @@ -321,7 +320,7 @@ <P>Список коммерческой поддержки компаний доступен на <A href= - "http://www.postgresql.org/users-lounge/commercial-support.html">http://www.postgresql.org/users-lounge/commercial-support.html</A>.</P> + "http://www.postgresql.org/users-lounge/commercial-support.html">http://www.PostgreSQL.org/users-lounge/commercial-support.html</A>.</P> <H4><A name="1.7">1.7</A>) Какая последняя версия?</H4> @@ -341,8 +340,8 @@ "http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A> и <a href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</a>. Список книг по PostgreSQL, которые можно купить доступен по адресу - <a href="http://www.postgresql.org/books/">http://www.postgresql.org/books/</a>. - Кроме того, по адресу <a href="http://techdocs.postgresql.org">http://techdocs.postgresql.org/</a> + <a href="http://www.ca.postgresql.org/books/">http://www.ca.PostgreSQL.org/books/</a>. + Кроме того, по адресу <a href="http://techdocs.postgresql.org">http://techdocs.PostgreSQL.org/</a> вы можете найти коллекцию технических статей посвященных PostgreSQL.</p> @@ -405,8 +404,8 @@ <H4><A name="1.13">1.13</A>) Как отравить сообщение об ошибке??</H4> - <P>Пожалуйста посетите страничку <A href= - "http://www.postgresql.org/bugs/bugs.php">PostgreSQL BugTool</A>, + <P>Пожалуйста посетите страничку PostgreSQL BugTool на <A href= + "http://www.postgresql.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bugs.php</A>, на которой предоставлены детальные инструкции о том как отправить сообщение об ошибке.</P> @@ -445,9 +444,8 @@ Мы делаем упор на надежность и расширенные возможности, но мы также продолжаем увеличивать производительность с каждым выпуском. Существует интересная страничка в Интернет, сравнивающая PostgreSQL и MySQL на - <A href="http://openacs.org/why-not-mysql.html"> - - http://openacs.org/why-not-mysql.html</A><BR> + <A href="http://openacs.org/philosophy/why-not-mysql.html"> + http://openacs.org/philosophy/why-not-mysql.html</A><BR> <BR> </DD> @@ -467,15 +465,15 @@ <DT><B>Поддержка</B></DT> - <DD>Наш список рассылки представлен большой группой разработчиков - и пользователей, которые могут помочь решить любые возникшие - проблемы. В то же время, мы не гарантируем какие-либо исправления, - но и разработчики коммерческих <SMALL>СУБД</SMALL> не всегда делают - исправления. Прямой доступ к разработчикам, сообществу пользователей, - руководствам и исходным текстам часто делают поддержку PostgreSQL - превосходящей другие <SMALL>СУБД</SMALL>. Существует коммерческая - поддержка по результам возникших инцидентов, которая доступна для - тех кому она нужна. (Смотрите <A href="#1.6">Как получить поддержку?</A>.)<BR> + <DD>Наш список рассылки предоставляет возможможность общения с + большой группой разработчиков и пользователей, которые могут помочь решить + любые возникшие проблемы. В то же время, мы не гарантируем какие-либо + исправления, но и разработчики коммерческих <SMALL>СУБД</SMALL> не всегда + делают исправления. Прямой доступ к разработчикам, сообществу + пользователей, руководствам и исходным текстам часто делают поддержку + PostgreSQL превосходящей другие <SMALL>СУБД</SMALL>. Существует + коммерческая поддержка по результам возникших инцидентов, которая + доступна для тех кому она нужна. (Смотрите <A href="#1.6">Секцию 1.6</A>.)<BR> <BR> </DD> @@ -493,7 +491,7 @@ PostgreSQL?</H4> <P>PostgreSQL имеет одноранговую инфраструктуру с того самого времени - как мы начали разработку 6 лет назад. Мы должны благодарить за + как мы начали разработку в 1996 году. Мы должны благодарить за это Марка Фоная (Marc Fournier), который создал эту инфраструктуру и управляет ей на протяжении этих лет.</P> @@ -505,8 +503,8 @@ некоторое количество ежемесячных и одноразовых расходов, которые требуют денег. Если вы или ваша компания имеет деньги, которые можно передать в помощь нашим усилиям, пожалуйста посетите страничку - <A href="https://store.pgsql.com/shopping/index.php?id=1"> - https://store.pgsql.com/shopping/index.php?id=1</A> + <A href="https://store.pgsql.com/shopping/"> + https://store.pgsql.com/shopping/</A> и сделайте свой вклад.</P> <P>Хотя на страничке говорится о PostgreSQL, Inc, пункт @@ -549,29 +547,23 @@ <P>Прекрасное введение во взаимодействие баз данных и Web можно найти на: <A href="http://www.webreview.com">http://www.webreview.com</A></P> - <P>Также загляните на <A href= - "http://www.phone.net/home/mwm/hotlist/">http://www.phone.net/home/mwm/hotlist/.</A></P> - <P>Для интеграции с Web, одним из превосходных инструментов является PHP. - Домашняя станичка <A - href="http://www.php.net">http://www.php.net</A>.</P> + Домашняя станичка <A href="http://www.php.net">http://www.php.net</A>.</P> - <P>Для комплексных решений, многие пользуются Perl интерфейсом и CGI.pm.</P> + <P>Для комплексных решений, многие пользуются Perl интерфейсом и CGI.pm или mod_perl.</P> <H4><A name="2.3">2.3</A>) Есть ли у PostgreSQL графический интерфейс пользователя? Генератор отчетов? Встроенный интерфейс для языка запросов?</H4> <P>У нас есть прекрасный горафический интерфейс, называемый - <I>pgaccess</I>, который является частью дистрибутива. <I>pgaccess</I> - также емеет генератор отчетов. Его страничка <A href= - "http://www.flex.ro/pgaccess">http://www.flex.ro/pgaccess</A></P> + PgAccess, который также можно использовать как генератор отчетов. + Его страничка <A href="http://www.pgaccess.org">http://www.pgaccess.org/</A></P> <P>Мы также включаем <I>ecpg</I>, который предоставляет встроенный интерфейс к языку запросов SQL из C.</P> - <H4><A name="2.4">2.4</A>) Какие языки могут взаимодействовать с - PostgreSQL?</H4> + <H4><A name="2.4">2.4</A>) Какие языки могут взаимодействовать с PostgreSQL?</H4> <P>Вот эти:</P> @@ -584,7 +576,7 @@ <LI>Java (jdbc)</LI> - <LI>Perl (perl5)</LI> + <LI>Perl (DBD::Pg и perl5)</LI> <LI>ODBC (odbc)</LI> @@ -594,11 +586,12 @@ <LI>C Easy API (libpgeasy)</LI> - <LI>Embedded <SMALL>HTML</SMALL> (<A href= - "http://www.php.net">PHP from http://www.php.net</A>)</LI> + <LI>PHP ('pg_' functions, Pear::DB)</LI> </UL> - <P>Дополнительные интерфейсы доступны по адресу <A href="http://www.postgresql.org/interfaces.html"> - http://www.postgresql.org/interfaces.html.</A> + <P>Дополнительные интерфейсы доступны по адресу + <A href="http://www.postgresql.org/interfaces.html">http://www.PostgreSQL.org/interfaces.html.</A> + и + <A href="http://gborg.postgresql.org/">http://gborg.PostgreSQL.org</a>. </P> <HR> @@ -671,7 +664,7 @@ <P>Если вы выполняете много операторов <SMALL>INSERT</SMALL>, рассмотрите возможность выполнять их в большой пачке, используя команду <SMALL>COPY</SMALL>. Это значительно быстрее, чем отдельные - <SMALL>INSERT.</SMALL> Во-вторых, операторы вне блока транзакции + <SMALL>INSERT</SMALL>. Во-вторых, операторы вне блока транзакции <SMALL>BEGIN WORK/COMMIT</SMALL> сами выполняют транзакцию. Подумайте над выполнением нескольких операторов в одном блоке транзакции. Это уменьшит количество транзакций. Также, задумайтесь над удалением @@ -740,7 +733,7 @@ <P>Если <I>postmaster</I> запущен, запустите <I>psql</I> в одном окне, затем найдите <SMALL>PID</SMALL> процесса <I>postgres</I>, используемый <I>psql</I>. Используйте отдадчик для подключения к - <I>postgres</I> <SMALL>PID.</SMALL> Вы можете установить точки + <I>postgres</I> <SMALL>PID</SMALL>. Вы можете установить точки прерывания в отладчике и запустить запрос из <I>psql</I>. Если вы производите отладку запуска <I>postgres</I>, вы можете установить PGOPTIONS="-W n", и затем запустить <I>psql</I>. Эта опция приводит @@ -781,7 +774,7 @@ семафоров, <SMALL>SEMMNS</SMALL> и <SMALL>SEMMNI;</SMALL> максимальное количество процессов, <SMALL>NPROC;</SMALL> максимальное количество процессов на пользователя, <SMALL>MAXUPRC;</SMALL> и максимальное - количество открытых файлов, <SMALL>NFILE</SMALL> и <SMALL>NINODE.</SMALL> + количество открытых файлов, <SMALL>NFILE</SMALL> и <SMALL>NINODE</SMALL>. Причина создания ограничения на количество backend процессов как раз и состоит в том, чтобы вашей системе хватило ресурсов.</P> @@ -789,38 +782,35 @@ было 64, и изменение этого количества требовало перекомпиляции после установки константы MaxBackendId в <I>include/storage/sinvaladt.h</I>.</P> - <H4><A name="3.9">3.9</A>) Что это за файлы <I>pg_sorttempNNN.NN</I> - в моем каталоге с базой данных?</H4> - - <P>Это временные файлы, генерируемые во время выполнения запроса. - Например, если для оператора <SMALL>ORDER BY</SMALL> должна быть - выполнена сортировка, которая требует больше места чем выделенно - для backend процесса в опции <I>-S</I>, то создается временный файл для - хранения дополнительных данных.</P> + <H4><A name="3.9">3.9</A>) Что находится в каталоге <I>pgsql_tmp</I>?</H4> - <P>Временные файлы должны удаляться автоматически, но этого может - не происходить, если backend процесс падает во время сортировки. - Если у вас не запущено ни одного backend процесса, то вы можете - спокойно удалить файлы pg_tempNNN.NN.</P> + <P>Данный каталог содержит временные файлы, генерируемые обработчиком + запроса. Например, если для выполнения <small>ORDER BY</small> нужна + сортировка и эта сортировка требует памяти больше, чем допускает параметр <i>-S</i> + у backend'а, то для хранения дополнительных данных создаются временные + файлы.</P> + + <P>Эти временные файлы должны удаляться автоматически, но этого может не + произойти, если backend рухнул во время сортировки. Останов и запуск + серверного процесса обеспечит их удаление из каталога.</P> - <A name="3.10">3.10</A>) Почему необходимо делать dump и restore при - обновлении выпусков PostgreSQL?<BR> + <H4><A name="3.10">3.10</A>) Почему необходимо делать dump и restore при + обновлении выпусков PostgreSQL?</H4> <P>Разработчики PostgreSQL делают только небольшие изменения между подвыпусками. Таким образом обновление с версии 7.2 до 7.2.1 не требует - выполнения dump и restore. Однако при выходе очередного выпуска часто - меняется внутренний формат системных таблиц и файлов данных. Эти - изменения часто носят комплексный характер, так что нет возможности - обеспечить обратную совместимость файлов данных. Выполение dump - позволяет получить данные в общем формате, который затем может быть - загружен при использовании нового внутреннего формата.</P> + выполнения dump и restore. Однако при выходе очередного выпуска + (т.е. при обновлении например, с 7.2 на 7.3) часто меняется внутренний + формат системных таблиц и файлов данных. Эти изменения часто носят + комплексный характер, так что нет возможности обеспечить обратную + совместимость файлов данных. Выполение dump позволяет получить данные + в общем формате, который затем может быть загружен при использовании + нового внутреннего формата.</P> - <P> - В тех выпусках, где формат данных на диске не меняется, для проведения + <P>В тех выпусках, где формат данных на диске не меняется, для проведения обновления может быть использован сценарий <i>pg_upgrade</i> без использования dump/restore. Комментарии к выпуску говорит когда можно - использовать <i>pg_upgrade</i> для этого выпуска. - </P> + использовать <i>pg_upgrade</i> для этого выпуска.</P> <HR> <H2 align="center">Вопросы эксплуатации</H2> @@ -857,7 +847,8 @@ <H4><A name="4.4">4.4</A>) Как удалить колонку из таблицы?</H4> - <P>Мы не поддерживаем <SMALL>ALTER TABLE DROP COLUMN,</SMALL> но + <P>Эта функциональность была добавлена в выпуск 7.3 с оператором + <small>ALTER TABLE DROP COLUMN</small>. В ранних версиях, можно сделать так:</P> <PRE> BEGIN; @@ -981,21 +972,21 @@ SELECT col FROM tab ORDER BY col [ DESC ] - LIMIT 1 + LIMIT 1; </pre> <P>Когда используются операции с шаблонами, например <SMALL>LIKE</SMALL> - или <I>~</I>, индексы могут быть использованы в следующих случаях: - </P><UL> - <LI>Начало строки поиска должно совпадать с началом искомой строки, т.е.:</LI> + или <I>~</I>, индексы могут быть использованы в следующих случаях:</P> <UL> - <LI><small>LIKE</small> шаблоны не должны начинаться с <i>%.</i><LI> - <LI><i>~</i> шаблоны регулярных выражений должна начинаться на <i>^.</i><LI> - </UL> + <LI>Начало строки поиска должно совпадать с началом искомой строки, т.е.: + <UL> + <LI><small>LIKE</small> шаблоны не должны начинаться с <i>%.</i>.</LI> + <LI><i>~</i> шаблоны регулярных выражений должна начинаться на <i>^</i>.</LI> + </UL></LI> <LI>Строка поиска не должна начинаться с символа класса, т.е. [a-e].</LI> - <LI>Не должен использоваться поиск независимый от регистра такой как - <small>ILIKE</small> и <i>~</i>. Вместо него используйте функциональные - индексы, которые описаны в этом FAQ ниже.</LI> + <LI>Поиск независимый от регистра, такой как <small>ILIKE</small> и + <i>~*</i> не использует индексы. Вместо него, используйте функциональные + индексы, которые описываются в секции <A href="#4.12">4.12</A>.</LI> <LI>Во время <i>initdb</i> должна использоваться локаль по умолчанию <i>C</i>. </UL> @@ -1053,13 +1044,13 @@ <PRE> SELECT * FROM tab - WHERE lower(col) = 'abc' + WHERE lower(col) = 'abc'; </PRE> Эта конструкция не будет использовать стандартный индекс. Однако, если вы создадите функциональный индекс, он будет использован: <PRE> - CREATE INDEX tabindex on tab (lower(col)); + CREATE INDEX tabindex ON tab (lower(col)); </PRE> <H4><A name="4.13">4.13</A>) Как я могу определить, что значение поля @@ -1074,8 +1065,8 @@ Тип Внутреннее имя Замечания -------------------------------------------------- "char" char 1 символ -CHAR(#) bpchar заполняется пустотой до фиксированной длины -VARCHAR(#) varchar размер задает максимальную длину, нет заполнения +CHAR(n) bpchar заполняется пустотой до фиксированной длины +VARCHAR(n) varchar размер задает максимальную длину, нет заполнения TEXT text нет задаваемого верхнего ограничения или длины BYTEA bytea массив байт переменной длины (можно использовать null-байт без опаски) </PRE> @@ -1091,13 +1082,14 @@ BYTEA bytea массив байт переменной длины (можно использовать так что занимаемое дисковое пространство может также быть и меньше, чем ожидалось.</P> - <P><SMALL>CHAR()</SMALL> - это лучшее решение для хранения строк, которые - обычно имеют одинаковую длину. <SMALL>VARCHAR()</SMALL> - это лучшее + <P><SMALL>CHAR(n)</SMALL> - это лучшее решение для хранения строк, которые + обычно имеют одинаковую длину. <SMALL>VARCHAR(n)</SMALL> - это лучшее решение, когда нужно хранить строки переменной длины, но не превышающие определенного размера. <SMALL>TEXT</SMALL> - это лучшее решение для строк неограниченной длины, с максимально допустимой длиной в 1 гигабайт. <SMALL>BYTEA</SMALL> для хранения бинарных данных, значения которых - могут включать <SMALL>NULL</SMALL> байты.</P> + могут включать <SMALL>NULL</SMALL> байты. Эти типы имеют сходные + характеристики производительности.</P> <H4><A name="4.15.1">4.15.1</A>) Как мне создать поле serial/с-авто-увеличением?</H4> @@ -1136,11 +1128,11 @@ BYTEA bytea массив байт переменной длины (можно использовать <P>Один из способов состоит в получении следующего значения <SMALL>SERIAL</SMALL> из объекта sequence с помощью функции <I>nextval()</I> <I>перед</I> вставкой и затем вставлять это значение - явно. Используйте таблицу-пример в <A href="#4.15.1">4.15.1</A>, чтобы - увидеть как это делается в Perl:</P> + явно. Используйте таблицу-пример в <A href="#4.15.1">4.15.1</A>, пример + в псевдоязыке покажет как это делается:</P> <PRE> - 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')"); </PRE> Затем вы должны также сохранить новое значение в переменной @@ -1152,11 +1144,11 @@ BYTEA bytea массив байт переменной длины (можно использовать именами вашей таблицы и вашей колонки <SMALL>SERIAL</SMALL>. <P>В качестве альтернативы, вы можете получить назначенное значение - <SMALL>SERIAL</SMALL> с помощью функции <I>currval</I>() + <SMALL>SERIAL</SMALL> с помощью функции <I>currval()</I> <I>после</I> проведения обычной операции вставки, например</P> <PRE> - 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')"); </PRE> И наконец, вы можете использовать значение @@ -1171,7 +1163,7 @@ BYTEA bytea массив байт переменной длины (можно использовать использование <I>currval()</I> и <I>nextval()</I> приведет к зациклированию с другими пользователями?</H4> - <P>Нет. Currval() возвращает текущее значение, назначенное вашем + <P>Нет. <i>currval()</i> возвращает текущее значение, назначенное вашем backend'ом, а не другими пользователями.</P> <H4><A name="4.15.4">4.15.4</A>) Почему числа из моей последовательности @@ -1191,7 +1183,7 @@ BYTEA bytea массив байт переменной длины (можно использовать в PostgreSQL. Каждая запись, которая создаётся в PostgreSQL получает уникальный <SMALL>OID</SMALL>. Все значения <SMALL>OID</SMALL> генерируемые во время <I>initdb</I> имеют значения меньше 16384 (из - <I>backend/access/transam.h</I>). Все созданные пользователем + <I>include/access/transam.h</I>). Все созданные пользователем <SMALL>OID</SMALL> имеют бОльшие значение. По умолчанию, все эти <SMALL>OID</SMALL> являются уникальными не только внутри какой-либо таблицы или базы данных, но и внутри всей СУБД PostgreSQL.</P> @@ -1215,13 +1207,12 @@ BYTEA bytea массив байт переменной длины (можно использовать COPY new TO '/tmp/pgtable'; DELETE FROM new; COPY new WITH OIDS FROM '/tmp/pgtable'; +</PRE> <!-- CREATE TABLE new_table (mycol int); INSERT INTO new_table (oid, mycol) SELECT oid, mycol FROM old_table; --> -</PRE> - - <P><SMALL>OID</SMALL> хранится как 4-х байтное целое и не может превышать + <P>O<SMALL>ID</SMALL> хранится как 4-х байтное целое и не может превышать значение в 4 миллиарда. Однако, еще никто не сообщил о том, что такое произошло, но мы планируем до того как это случиться избавится от этого ограничения.</P> @@ -1258,8 +1249,7 @@ BYTEA bytea массив байт переменной длины (можно использовать <LI>range variable, table name, table alias</LI> </UL> - <P>Список общих терминов по базам данных можно найти на <A href= - "http://www.comptechnews.com/~reaster/dbdesign.html">http://www.comptechnews.com/~reaster/dbdesign.html</A></P> + <P>Список общих терминов по базам данных можно найти на <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.html</A></P> <H4><A name="4.18">4.18</A>) Почему я получаю ошибку <I>"ERROR: Memory exhausted in AllocSetAlloc()"</I>?</H4> @@ -1284,7 +1274,7 @@ BYTEA bytea массив байт переменной длины (можно использовать <H4><A name="4.19">4.19</A>) Как мне узнать, какая версия PostgreSQL запущена?</H4> - <P>Из <I>psql</I>, наберите <CODE>select version();</CODE></P> + <P>Из <I>psql</I>, наберите <CODE>SELECT version();</CODE></P> <H4><A name="4.20">4.20</A>) Почему при работе с моим большим объектом я получаю ошибку <I>"invalid large obj descriptor"</I>?</H4> @@ -1324,18 +1314,16 @@ BYTEA bytea массив байт переменной длины (можно использовать увеличить скорость в других запросах, замените <CODE>IN</CODE> на <CODE>EXISTS</CODE>:</P> <PRE> -<CODE>SELECT * + SELECT * FROM tab - WHERE col IN (SELECT subcol FROM subtab) -</CODE> + WHERE col IN (SELECT subcol FROM subtab); </PRE> на: <PRE> -<CODE>SELECT * + SELECT * FROM tab - WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col) -</CODE> + WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col); </PRE> Чтобы такая конструкция работала быстро, колонка <CODE>subcol</CODE> @@ -1390,7 +1378,7 @@ BYTEA bytea массив байт переменной длины (можно использовать Поскольку PostgreSQL загружает системные каталоги специфичные для базы данных, непонятно даже, как должен себя вести такой межбазовый запрос.</P> - <P><I>/contrib/dblink</I> позволяет запросы между базами, используя + <P><I>contrib/dblink</I> позволяет запросы между базами, используя вызовы функций. Разумеется, клиент может одновременно устанавливать соедиенения с различными базами данных и таких образом объединять информацию из них.</P> @@ -1399,8 +1387,8 @@ BYTEA bytea массив байт переменной длины (можно использовать <P>Вы можете возвращать из функций PL/pgSQL списки результатов, используя <i>refcursors</i>. Смотрите <A - href="http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html"> - http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html,</a> + href="http://www.postgresql.org/idocs/index.php?plpgsql-cursors.html"> + http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html</a>, секцию 23.7.3.3.</P> <H4><A name="4.26">4.26</A>) Почему я не могу надежно создавать/удалять @@ -1416,10 +1404,26 @@ BYTEA bytea массив байт переменной длины (можно использовать <H4><A name="4.27">4.27</A>) Какие опции репликации существуют?</H4> - <P>Есть несколько решений для репликации типа master/slave. Они допускают - использование только одного сервера для внесения изменений в базу данных, - а slave серверы просто позволяют читать данные из базы.</P> - + <P>Есть несколько опций для репликации типа master/slave. Они допускают + использование только master сервера для внесения изменений в базу данных, + а slave серверы просто позволяют читать данные из базы. Об этом читайте + здесь: <A href="http://gborg.postgresql.org/genpage?replication_research"> + http://gborg.PostgreSQL.org/genpage?replication_research</A>. О репликации + с несколькими master серверами читайте здесь: + <a href="http://gborg.postgresql.org/project/pgreplication/projdisplay.php">http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</A>.</P> + + <h4><a name="4.28">4.28</a>) Какие опции шифрования существуют? + </h4> + <ul> + <li><i>contrib/pgcrypto</i> содержит много функций шифрования для + использования в <small>SQL</small> запросах.</li> + <li>Есть только один способ шифрования данных, передаваемых от клиента + к серверу, через использование <i>hostssl</i> в <i>pg_hba.conf</i>.</li> + <li>Пароли пользователей к базе данных автоматически шифруются, при + сохранении в версии 7.3. В предыдущих версиях, вы должны разрешить + опцию <i>PASSWORD_ENCRYPTION</i> в <i>postgresql.conf</i>.</li> + <li>Сервер можно запустить, используя шифрованную файловую систему.</li> + </ul> <HR> <H2 align="center">Расширения PostgreSQL</H2> @@ -1439,8 +1443,10 @@ BYTEA bytea массив байт переменной длины (можно использовать <H4><A name="5.3">5.3</A>) Как мне написать C функцию, возвращающую запись?</H4> - <P>Это требует некоего шаманства так как авторы никогда не пробовали - делать это, хотя в приницпе это возможно.</P> + <P>В версиях PostgreSQL, начиная с 7.3, функции, возвращающие таблицы + полностью поддерживаются в C, PL/PgSQL и SQL. Подробности смотрите в + Руководстве Программиста. Пример возвращающей таблицу функции, + написанной на C, можно найти в <i>contrib/tablefunc</i>.</P> <H4><A name="5.4">5.4</A>) Я изменил исходный файл. Почему после перекомпиляции я не вижу изменений?</H4> |