Showing posts with label translation. Show all posts
Showing posts with label translation. Show all posts

September 20, 2010

Доступен PostgreSQL 9.0 Final Release!

Перевод PostgreSQL 9.0 Final Release Available Now! с PostgreSQL

Опубликовано 2010-09-20, press@postgresql.org

Вышел PostgreSQL 9.0! The PostgreSQL Global Development Group анонсирует выход долгожданного релиза. PostgreSQL 9.0 включает встроенную бинарную репликацию и более дюжины других больших нововведений расчитанных на всех от web разработчиков до хакеров БД.

9.0 реализует большее количество крупных возможностей, чем любой релиз до этого, включая:

- Hot standby
- Потоковую репликацию
- In-place обновления
- 64-bit Windows сборки
- Облегченное массовое управления правами
- Анонимные блоки и именованные параметры для хранимых процедур
- Новые windowing функции и упорядоченные агрегаты

... и многое другое. Более детальное описание свыше 200 дополнений и улучшений в этой версии, разработанные более чем сотней людей, вы сможете найти в замечаниях к релизу.

"Такие нововведения являются прочным основанием тому, что критически важные технические задачи могут продолжать опираться на мощь, гибкость и надёжность PostgreSQL", Afilias CTO Ram Mohan

Больше информации о PostgreSQL 9.0:
- Замечания к релизу
- Пресс-кит
- Руководство по 9.0

Скачать 9.0 сейчас:
- Главная страница загрузки
- Исходный код
- Бинарные пакеты
- Установка в один клик, включая пакеты для Windows

September 7, 2010

В ожидании 9.1 - concat, concat_ws, right, left, reverse

Перевод Waiting for 9.1 - concat, concat_ws, right, left, reverse с select * from depesz;

24 августа Takahiro Itagaki применил патч:

Добавлены строковые функции: concat(), concat_ws(), left(), right()
и reverse().

Pavel Stehule, проверено мной.


Что это за функции?

August 11, 2010

В ожидании 9.1 - Распознавание функциональной зависимости от первичных ключей

Перевод Waiting for 9.1 – Recognize functional dependency on primary keys с select * from depesz;

Вчера (7 августа) Tom Lane применил:

Распознавание функциональной зависимости от первичных ключей. Это позволяет
колонкам не присутствовать в GROUP BY, если там присутствует первичный ключ.

В дальнейшем нам стоит также разрешить функциональную зависимость от UNIQUE
ограничений при условии, что колонка помечена как NOT NULL, но это будет ждать пока
NOT NULL ограничения не будут представлены в pg_constraint, т.к. нам будут нужны
pg_constraint OID-ы для всех условий, где будет разрешаться функциональная
зависимость.

Peter Eisentraut, проверено Alex Hunsaker и Tom Lane


Одна из наиболее частых проблем, с которой люди сталкиваются при переходе с MySQL на PostgreSQL, заключается вот в таких запросах:

SELECT field_a, field_b, count(*)
FROM TABLE
GROUP BY field_a


Это нормально для MySQL, но не работало в PostgreSQL.

В ожидании 9.1 - Снижаем уровни блокировок для ALTER TABLE

Перевод Waiting for 9.1 – Reduced lock levels for ALTER TABLE с select * from depesz;

28 июля Simon Riggs применил патч:

Снижает уровни блокировок CREATE TRIGGER и некоторых действий ALTER TABLE,
CREATE RULE. Убирает прописанные на прямую в коде режимы блокировок, используемые во
множестве команд изменения DDL, позволяя более легко менять уровни блокировок в
будущем. Реализован начальный анализ DDL подкомманд, так что многие уровни блокировок
теперь будут ShareUpdateExclusiveLock или ShareRowExclusiveLock, позволяя конкретным
коммандам не блокировать чтение/запись. Это первое изменение из числа запланированных
в этом направлении; будет нужна дополнительная документация когда весь проект
завершится.


Во первых - это только начало. Конечная цель - сделать все (большинство?) выражения ALTER TABLE менее навязчивыми.

Как получить имена всех таблиц содержащих колонку с заданным именем

На основе обсуждения filter tables from database с pgsql-general

Всё очень просто:

SELECT table_name
FROM information_schema.columns
WHERE column_name = 'put_column_name_here';

July 29, 2010

В ожидании 9.1 - CREATE TABLE IF NOT EXISTS

Перевод Waiting for 9.1 – CREATE TABLE IF NOT EXISTS с select * from depesz;

25 июля Robert Haas применил патч, добавляющий CREATE IF NOT EXISTS для таблиц.

CREATE TABLE IF NOT EXISTS.

Reviewed by Bernd Helmle.


Пример тривиален:

$ create table if not exists tesit (x text);
CREATE TABLE

$ create table if not exists tesit (x text);
NOTICE: relation "tesit" already exists, skipping
CREATE TABLE


Как можно видеть ошибки нет - просто дружелюбное замечание.

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

July 26, 2010

Как можно задать порядок результата

Перевод How to order by some random - query defined - values? с select * from depesz;

Представим простую ситуацию - есть таблица каких-то объектов (каждый со своим id) откуда надо достать объекты с id 3, 71, 5 и 16. И, самое главное, в том же порядке!

Как это сделать?

MVC бэкапы

Перевод MVC Backups с David Fetter's blog

Цель - использовать паттерн Model-View-Controller для создания бэкапов на любой платформе, которую поддерживает PostgreSQL.

Сначала создадим SQL файл, реализующий Model и View:

backup.sql:
WITH t AS ( -- Эта часть Model.
SELECT quote_ident(datname) AS d
FROM pg_database WHERE NOT datistemplate
)
SELECT
'pg_dump -U postgres -Fc --file=' || d || -- Эта часть View.
to_char(now(),'_YYYYMMDD') ||
'.pgbackup' || ' '|| d
FROM t;


Затем реализуем Controller.

psql -Atqf backup.sql | sh

Заметьте, если вы на Windows, то можете подставить cmd.exe или command.com как sh.

Готово!

July 22, 2010

В ожидании 9.1 - \conninfo в psql

Перевод Waiting for 9.1 – \conninfo in psql с select * from depesz;


20 июля Robert Haas применил патч, добавляющий ещё одну \* комманду в psql:

Добавляет команду \conninfo в psql, показывающую информацию о текущем соединении.

David Christensen. Проверено Steve Singer. Некоторые изменения от меня.


Из сообщения всё предельно понятно, т.ч. просто посмотрим на это:

В ожидании 9.1 - standard_conforming_strings = on

Перевод Waiting for 9.1 – standard_conforming_strings = on с select * from depesz;

В основном я пишу о новых возможностях, но это изменение довольно таки важное.

20 июля Robert Haas сделал следующие изменения:

Значение standard_conforming_strings по умолчанию теперь on.

Это изменение должно быть доведено до сведения разработчиков драйверов и в
замечаниях к релизу должно быть указанным как не совместимое с предыдущими
релизами.


Что это и почему так важно?
Допустим вы хотите выбрать какое-то значение содержащее символ ' (апостроф). Т.к. строки тоже определяются этим символом нам нужно замаскировать его.

Долгое время можно было делать так:

$ SELECT 'guns \'n roses';
?COLUMN?
---------------
guns 'n roses
(1 row)


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

April 14, 2010

Перенимаем NoSQL

Перевод Learning from NoSQL с Bruce Momjian: Postgres Blog

Я думаю, что первый урок, который PostgreSQL сообщество может вынести из NoSQL, в том, что не всем нужны все наши возможности, и, если это не будет сложно, нам необходимо дать пользователям возможность отказаться от некоторых из них, в пользу желаемых NoSQL преимуществ. В некоторых случаях мы уже можем это сделать:

- Вы можете улучшить скорость за счёт откладывания или отказа от надежности (synchronous_commit, fsync)
- Вы можете убрать затраты на целостность не устанавливая ограничения (constraints)
- Можете использовать подготовленные (prepared) запросы для устранения затрат на парсера и оптимизатора
- Массивы часто могут быть использованы для ухода от затрат на join
- Можно хранить не структурированные данные в hstore
- Устаревшие данные можно обслуживать с помощью асинхронной мульти-мастер репликации (Bucardo)

Однако есть некоторые вещи, которые будет сложно осуществить:

- Доступ к данным без SQL
- Снижение затрат за счёт отказа от атомарности и изоляции

Я думаю о новых опциональных возможностях, которые мы могли бы предоставлять потенциальным NoSQL пользователям, но тут надо всё хорошо продумывать.

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

Несколько слов о NoSQL

Перевод Settling for NoSQL с Bruce Momjian: Postgres Blog

В последнее время вокруг NoSQL баз данных довольно много шума, и, багодаря посещению конференции Emerging Technologies for the Enterprise Conference, я узнал о них больше. Я прослушал рассказ о Cassandra, и ещё один о MongoDB.

NoSQL базы имеют несколько отличий от реляционных:

- "голое" обращение к данным, другими словами отсутствие языка запросов (клиент делает большинство того, что обычно делается с помощью SQL)
- отсутствие join-ов (данные должны соединяться на стороне клиента)
- жертвуется ACID и транзакционные свойства ради скорости, отказоустойчивости, простоты добавления/выведения нод

Кого-то может смутить отсутствие этих значительных возможностей реляционных баз, но, если нужный вам отклик и требования к инфраструктуре не вписываются в рамки реляционных баз, и вы можете принять такие ограничения (думаю социальные медиа или поисковые движки), тогда NoSQL вполне имеет смысл.

April 1, 2010

PostgreSQL 9.0: Добавлена эмуляция MySQL (MySQL Emulation Layer)

Перевод PostgreSQL 9.0: Includes the new MySQL Emulation Layer с ads' corner

(В январе 2010 г. команда разработчиков решила, что следующая версия PostgreSQL будет нумероваться 9.0, а не 8.5)


Сегодня в PostgreSQL 9.0 была добавлена возможность эмуляции MySQL, так называемый MySQL Emulation Layer.

Для активации этой возможности просто включите CUG опцию mysql_compatible в "on".

postgres=# SELECT * FROM pg_settings WHERE name = 'mysql_compatible';
-[ RECORD 1 ]----------------------------------------------------------------
name | mysql_compatible
setting | ON
unit |
category | Version AND Platform Compatibility / Other Platforms AND Clients
short_desc | Enable MySQL Emulation Layer
extra_desc |
context | backend
vartype | bool
source | DEFAULT
min_val |
max_val |


March 26, 2010

Postgres участвует в Google Summer of Code 2010

Перевод Postgres participating in Google Summer of Code 2010 с PostgreSQL: News

Пост от 2010-03-20
Автор xzilla@users.sourceforge.net

Я счастлив сообщить что Postgres был выбран для участия в программе Google Summer of Code этого года. В следующую пару недель мы будем утверждать наставников; если вы работаете над Postgres и хотели бы взять под своё начало ученика, сообщите мне об этом, чтобы мы могли вас записать. Если вы ученик и хотели бы работать над Postgres, присылайте свои предложения. Набор учеников начнётся 29 марта, т.ч. мы бы хотели чтобы наставники были готовы, и чтобы студенты обсудили с разработчиками Postgres свои предложения. Если у кого-то есть вопросы, пишите мне на email или найдите меня в irc.

Полезные ссылки для Postgres GSoC:

Our ideas page for GSoC

Our loose attempt at organization

Our Postgres page on the GSoC site

Users Guide to GSoC

Спасибо всем, буду ждать ещё одного интересного года c GSoC и надеюсь что вам понравится.

March 23, 2010

В ожидании 9.0 (8.5) - Информация об использовании буферов в EXPLAIN

Перевод Waiting for 8.5 – buffers info for explain с select * from depesz;

(В январе 2010 г. команда разработчиков решила, что следующая версия PostgreSQL будет нумероваться 9.0, а не 8.5)


Сегодня речь пойдёт о маленьком, но (по крайней мере для меня) действительно полезном патче. Принял его 15 декабря Robert Haas, а сделал Itagaki Takahiro:

Добавляет опцию EXPLAIN (BUFFERS) для отображения статистики
использования буферов.

Патч также убирает эту статистику из вывода track_counts, т.к. EXPLAIN
(или глобальная статистика) теперь считается лучшим местом для такой
информации.

Itagaki Takahiro, проверено Euler Taveira de Oliveira.


March 21, 2010

В ожидании 9.0 (8.5) - Агрегаты с упорядочиванием

Перевод Waiting for 8.5 – ordered aggregates с select * from depesz;

(В январе 2010 г. команда разработчиков решила, что следующая версия PostgreSQL будет нумероваться 9.0, а не 8.5)


15 декабря Tom Lane применил патч от Andrew Gierth (aka RhodiumToad), добавляющий интересную возможность:

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

Возможно стоит упомянуть о изменении в поведении: ранее agg(DISTINCT x) всегда выкидывала null-значения. Теперь это происходит только тогда, когда transition-функция агрегата реализует это ограничение. Иначе null-значения обрабатываются так, как обычно делает DISTINCT, т.е. возвращается одна копия.

Andrew Gierth, проверено Hitoshi Harada


Замечания к релизу 9.0

Перевод 9.0 Release Notes Done с Bruce Momjian's blog

(В январе 2010 г. команда разработчиков решила, что следующая версия PostgreSQL будет нумероваться 9.0, а не 8.5)


Суббота, 20 Марта 2010

Я закончил замечания к релизу 9.0, тут вы можете найти их онлайн. Конечно же к финальной версии там ещё будет много правок.

March 18, 2010

PL/pgSQL по умолчанию

Перевод Waiting for (9.0) 8.5 – PL/pgSQL by default с select * from depesz;

(В январе 2010 г. команда разработчиков решила, что следующая версия PostgreSQL будет нумероваться 9.0, а не 8.5)


18 декабря Bruce Momjian прменил очень важный, но относительно не большой патч:

Устанавливает язык PL/pgSQL по умолчанию.

Нет смысла показывать пример, т.к. сообщение говорит обо всём - начиная с новой версии язык PL/pgSQL будет доступен по умолчанию во всех базах.

Было время, когда пользователи отказывались от хранимых процедур в связи с тем, что у них не было ни какого PL/ языка, а его установка требовала прав суперюзера. Начиная с 8.3 уже не надо было быть суперюзером, чтобы установить доверительний (trusted) язык, т.о. проблема почти исчезла, но сейчас она просто переста существовать :)

March 15, 2010

В ожидании 9.0 (8.5) - Изменения в VACUUM FULL

Перевод Waiting for 8.5 – VACUUM FULL change с select * from depesz;

(В январе 2010 г. команда разработчиков решила, что следующая версия PostgreSQL будет нумероваться 9.0, а не 8.5)


Некоторое время назад Josh Berkus написал о возможных изменениях в VACUUM FULL. Теперь это воплотилось в жизнь. Под "теперь" я имею ввиду 6 января, когда Takahiro Itagaki применил свой патч:

Поддержка основанного на перезаписи полного вакуума как
VACUUM FULL. Традиционный VACUUM FULL был переименован в VACUUM
FULL INPLACE. Также добавлена опция -i, --inplace в vacuumdb для
FULL INPLACE ваккума.

Т.к. новый VACUUM FULL использует инфраструктуру от CLUSTER, мы
не можем использовать его для системных таблиц. VACUUM FULL для
них прозрачно преобразуется в VACUUM FULL INPLACE.

Itagaki Takahiro, проверено Jeff Davis и Simon Riggs.


March 12, 2010

В ожидании 9.0 - Потоковая репликация

Перевод Waiting for 9.0 – Streaming replication с select * from depesz;

(В январе 2010 г. команда разработчиков решила, что следующая версия PostgreSQL будет нумероваться 9.0, а не 8.5)


Это очень важный функционал, возможность благодаря которой PostgreSQL сделал скачёк от 8.4 до 9.0. Патч разработан Fujii Masao и принят Heikki Linnakangas 15 января 2010.

Добавляет Потоковую репликацию (Streaming replication).

Включает два новых вида процессов postmaster-а - walsender и walreceiver. Walreceiver отвечает за соединение с главным сервером и передачу WALL данных на диск, в то время как walsender работает на главном сервере и передаёт клиенту WAL данные с диска.

Документация всё ещё нуждается в доработке, но основа уже есть. Возможно мы позже вынесем секцию касающуюся репликации в отдельную главу, также как и секцию о репликации на основе файлов. Это будет в отдельном патче, чтобы было понятно что добавлено/изменено. Этот патч также добавляет новую секцию в главу о FE/BE протоколе, касающуюся walsender/walreceivxer

Подняли версию каталога из-за двух новых функций pg_last_xlog_receive_location() и pg_last_xlog_replay_location() для мониторинга прогресса репликации.

Fujii Masao, с дополнительными правками от меня