LINUX.ORG.RU

PostgreSQL 9.2

 


1

2

Вышла новая версия СУБД PostgreSQL — 9.2.

Основные изменения в этой версии:

  • «Index Only Scans» — возможность выбирать данные прямо из индекса, если в индексе они есть. До этого СУБД использовала индекс только для поиска, непосредственно данные всегда выбирались из страниц данных. Данная функция работает только в случае если страница с искомыми данными не менялась с момента последней операции VACUUM.
  • Каскадная репликация — standby сервера теперь тоже могут отправлять журнал транзакций другим узлам.
  • Поддержка типа данных JSON для хранения неструктурированных документов.
  • Добавлены типы данных для диапазонов значений.
  • Серия различных оптимизаций производительности, в том числе:
    • улучшенная работа с блокировками на системах с 32-мя и более ядрами;
    • функция сортировки в памяти ускорена на 25% в некоторых случаях;
    • простаивающий узел СУБД теперь проявляет меньше активности, что полезно при работе в виртуальной машине или при применении в embedded окружении;
    • ускорена работа команды COPY за счет уменьшения операций записи в журнал транзакций и уменьшения количества блокировок;
    • добавлен сбор статистики для массивов, благодаря чему улучшена генерация планов исполнения для запросов с массивами.

>>> Подробности

★★★★★

Последнее исправление: maxcom (всего исправлений: 5)

Ответ на: комментарий от maxcom

Максим, а вот хочу я целое, чтобы было больше двух и мень пяти. Раньше я это делал только триггерами. Хотя, может быть и был более оптимальный способ, ранее, который я не знал, или упустил. Триггеры (на мой не очень пофессиональный взгляд) более относятся к «последнему доводу королей», когда штатные возможности уже исчерпаны.

imul ★★★★★
()
Ответ на: комментарий от imul

а вот хочу я целое, чтобы было больше двух и мень пяти.

Такое ощущение, что у тебя пользователи работают в psql.

baverman ★★★
()
Ответ на: комментарий от imul

Диапазоны в новом постгрессе это немного не про то - это замена двум отдельным полям в которых содержатся начало и конец диапазона, пара значений с операциями над ней

maxcom ★★★★★
() автор топика
Последнее исправление: maxcom (всего исправлений: 1)
Ответ на: комментарий от imul

А то что ты хочешь, насколько я понимаю, это CHECK constraint, это еще в 8.1 было

maxcom ★★★★★
() автор топика
Ответ на: комментарий от leave

Ну да. А у пыха целых полтора дополнительных пакета, и оба - акселераторы.

И еще для любителей винтажа есть pear и pecl.

Vit ★★★★★
()
Ответ на: комментарий от maxcom

Наверное я не совсем понял о чём речь. Как обычно, сначала надо читать документацию, а потом писать на форуме.

imul ★★★★★
()
Ответ на: комментарий от baverman

Такое ощущение, что у тебя пользователи работают в psql.

Всё намного хуже. Почему? Смотри чуть выше.

imul ★★★★★
()
Ответ на: комментарий от imul

Всё намного хуже. Почему? Смотри чуть выше.

Перечитал все твои посты, так и не понял, почему БД должна чекать эти данные.

baverman ★★★
()
Ответ на: комментарий от Vit
$ aptitude search ^php5
p   php5                                     - server-side, HTML-embedded scripting language (meta
p   php5-adodb                               - Extension optimising the ADOdb database abstraction
p   php5-cgi                                 - server-side, HTML-embedded scripting language (CGI 
p   php5-cli                                 - command-line interpreter for the php5 scripting lan
p   php5-common                              - Common files for packages built from the php5 sourc
p   php5-curl                                - CURL module for php5                               
p   php5-dbg                                 - Debug symbols for PHP5                             
p   php5-dev                                 - Files for PHP5 module development                  
p   php5-enchant                             - Enchant module for php5                            
p   php5-exactimage                          - fast image manipulation library (PHP bindings)     
p   php5-ffmpeg                              - audio and video support via ffmpeg for php5        
p   php5-fpm                                 - server-side, HTML-embedded scripting language (FPM-
p   php5-gd                                  - GD module for php5                                 
p   php5-gdcm                                - Grassroots DICOM PHP5 bindings                     
p   php5-geoip                               - GeoIP module for php5                              
p   php5-gmp                                 - GMP module for php5                                
v   php5-idn                                 -                                                    
p   php5-imagick                             - ImageMagick module for php5                        
p   php5-imap                                - IMAP module for php5                               
p   php5-interbase                           - interbase/firebird module for php5                 
p   php5-intl                                - internationalisation module for php5               
v   php5-json                                -                                                    
p   php5-lasso                               - Library for Liberty Alliance and SAML protocols - P
p   php5-ldap                                - LDAP module for php5                               
p   php5-librdf                              - PHP5 language bindings for the Redland RDF library 
p   php5-mapscript                           - php5-cgi module for MapServer                      
p   php5-mcrypt                              - MCrypt module for php5                             
p   php5-memcache                            - memcache extension module for PHP5                 
p   php5-memcached                           - memcached extension module for PHP5, uses libmemcac
v   php5-mhash                               -                                                    
p   php5-midgard2                            - Midgard2 Content Repository - PHP5 language binding
p   php5-ming                                - Ming module for php5                               
v   php5-mssql                               -                                                    
p   php5-mysql                               - MySQL module for php5                              
p   php5-mysqlnd                             - MySQL module for php5 (Native Driver)              
p   php5-odbc                                - ODBC module for php5                               
p   php5-pgsql                               - PostgreSQL module for php5                         
p   php5-ps                                  - ps module for PHP 5                                
p   php5-pspell                              - pspell module for php5                             
p   php5-radius                              - PECL radius module for PHP 5                       
p   php5-recode                              - recode module for php5                             
p   php5-remctl                              - PECL module for Kerberos-authenticated command exec
p   php5-rrd                                 - rrd module for PHP 5                               
p   php5-sasl                                - Cyrus SASL extension for PHP 5                     
p   php5-snmp                                - SNMP module for php5                               
p   php5-sqlite                              - SQLite module for php5                             
p   php5-svn                                 - PHP Bindings for the Subversion Revision control sy
p   php5-sybase                              - Sybase / MS SQL Server module for php5             
p   php5-tidy                                - tidy module for php5                               
p   php5-tokyo-tyrant                        - PHP interface to Tokyo Cabinet's network interface,
p   php5-vtkgdcm                             - Grassroots DICOM VTK PHP bindings                  
p   php5-xcache                              - Fast, stable PHP opcode cacher                     
p   php5-xdebug                              - Xdebug Module for PHP 5                            
p   php5-xmlrpc                              - XML-RPC module for php5                            
p   php5-xsl                                 - XSL module for php5 

И оно все _работает_. Приложения, использующие gd, работают всегда и везде, где этот gd есть. Им не нужна своя отдельная версия интерпретатора с отдельными версиями расширений. По поводу pear и pecl я выше отписал - оно нужно раз в два года.

leave ★★★★★
()
Ответ на: комментарий от baverman

Потому что БД крутится на мощной железке, для которой лишний триггер как укус комариный слону. А пишут в базу удалённо слабенькие железки для которых лишнее не нужно. Но это, разумеется, слишком узко, специфично и существует только у меня в голове, поскольку остальным не нужно даже близко.

imul ★★★★★
()
Ответ на: комментарий от baverman

Пользователи — бездушные, но очень слабые железки. Им всё равно, главное температурный режим и LA.

imul ★★★★★
()
Ответ на: комментарий от Sectoid

Отличная новость! Интересно, когда до Sid'а добежит? Дебианщики, есть прогнозы?

Судя по рассылке — в experimental будет уже на днях.

Сам спрашиваю — сам отвечаю%)

Sectoid ★★★★★
()
Ответ на: комментарий от leave

Ощь... там не полтора, там два с половиной модуля....!!! А остальное можно скачать с сайтов васьпупкиных в виде RAR архивов!

Vit ★★★★★
()
Ответ на: комментарий от special-k

Пока большиснство популярных CMS, CRM, Wiki-движков, форумов и т.п. Создаются на PHP - Ruby будут рассматривать только как ЯП, на котором написаны рельсы. И никак иначе. А рельсы берут, когда нужно сваять что-то сложное и дорогое, вроде кастомной системы документооборота, или большой кастомный интернет-магазин, вроде ebay. В остальных случаях люди берут готовый движок на PHP, и навешивают на него кастомные дополнения и тему оформления. Если проект не очень большой, не очень сложный, и существующие решения на PHP хотя-бы процентов на 80 соответствуют тому, что требуется от проекта, дешевле написать пару модулей к готовому решению, чем делать всё с нуля на Ruby. Тот же Wordpress, Joomla или Prestashop - им нет адекватной замены в стане Ruby. Да и среди проектов на Django. Замечательные фреймворки есть как под Ruby/Python, так и под PHP. PHP коряв, возможно в чём-то убог, но на нём написана масса замечательных вещей. Аналогов которым нет. И пока ситуация обстоит таким образом, PHP живее всех живых. Хоть как ЯП, Ruby и намного приятней, а PHP он пока не конкурент. В сфере готовых решений, он конкурировать способен только в сфере узкоспециалтзированных проектов на фреймворках. Кто не понимает этого, тот рано хоронит PHP.

lucentcode ★★★★★
()
Ответ на: комментарий от baverman

не понял, почему БД должна чекать эти данные

А почему нет? Буква C из ACID: на поле (или на таблице) висит CONSTRAINT valid_range CHECK (field > 2 AND field < 5).

С чего бы это БД должна позволять некорректные значения? Может ещё и внешние ключи чекать не надо, ведь у нас приложение готовыми справочниками пользуется?

baka-kun ★★★★★
()
Ответ на: комментарий от baka-kun

С чего бы это БД должна позволять некорректные значения?

Потому что приложение это может сделать проще и гибче. Хватит уже логику пихать в БД, не нужна она там.

baverman ★★★
()
Ответ на: комментарий от lucentcode

Создаются

создавались

будут рассматривать только как ЯП, на котором написаны рельсы

мне не надо об этом рассказывать, я-то знаю что может руби.

Если проект не очень большой, не очень сложный

Сателит

Тот же Wordpress, Joomla или Prestashop - им нет адекватной замены в стане Ruby.

а на рельсах есть редмайн например.. Может проблема в том, что cms не нужны?)

php: hompage, ruby:

когда нужно сваять что-то сложное и дорогое

Ситуация меня более чем устраивает)

PHP ... убог

пхп веб убог еще больше, cms веб убог до нельзя.

Взять ту же вики - наверно дольше всех будет жить на пхп. Ведь не отнять тот факт, что она убога. Да, сами данные еще может на что-то и годятся, но интерфейс.. Время cms и форумов уходит (если не ушло), они останутся только в виде сателитов.

special-k ★★★
()
Ответ на: комментарий от tailgunner

Проверка на диапазон допустимых значений вполне себе логика, хоть как ее по-умному не называй. И если с внешними ключами всё понятно, они есть и их диапазон менять не надо, то проверки «от трех до пяти» нахрен не сдались в БД. Как правило такие диапазоны имеют свойство мутировать и тогда наступает ололо.

baverman ★★★
()
Ответ на: комментарий от baverman

Потому что приложение это может сделать проще и гибче.

Повторю: может ссылочная целостность тоже не нужна? Ведь приложение может «…проще и гибче».

Хватит уже логику пихать в БД, не нужна она там.

Именно там /логика/ и нужна. То есть всю декларативщину можно и нужно «запихать» в базу. А вот то, /как/ получить результат, ты опишешь в своём приложении.

baka-kun ★★★★★
()
Ответ на: комментарий от leave

Неужели ты не можешь осознать на сколько сильно этого не хватает)) Куда важнее наладить работу с либами, чем пихать как можно больше в коре.. Как можно НАСТОЛЬКО ограничено мыслить х_х

special-k ★★★
()
Ответ на: комментарий от baka-kun

всю декларативщину можно и нужно «запихать» в базу

+1. «Логика» начинается там, где приходится писать хранимые процедуры, но даже тогда не всё однозначно...

tailgunner ★★★★★
()
Ответ на: комментарий от baka-kun

То есть всю декларативщину можно и нужно «запихать» в базу. А вот то, /как/ получить результат, ты опишешь в своём приложении.

Ох, представь, что диапазоны значений плавающие, сегодня такие, завтра другие.

baverman ★★★
()
Ответ на: комментарий от special-k

А в чем смысл(выигрыш)?

надежней, не надо «помнить» про эти ограничения при написании/изменении кода, данные в БД гарантированно будут соот-вать этим правилам

wota ★★
()
Ответ на: комментарий от special-k

А в чем смысл(выигрыш)?

А в чем разница декларативного и императивного программирования? Вот отсюда и пляши.

baka-kun ★★★★★
()
Ответ на: комментарий от baverman

Ох, представь, что диапазоны значений плавающие

С чего бы?

сегодня такие, завтра другие.

Значит учти это в своей модели данных, и спроектируй базу правильно.

baka-kun ★★★★★
()
Ответ на: комментарий от baverman

Как правило, декларативщина ограничивается внешними ключами и енумами.

И ограничениями целостности. В общем, всё, что не меняет базу, вполне можно описывать в схеме.

tailgunner ★★★★★
()
Ответ на: комментарий от baverman

Как правило, декларативщина ограничивается внешними ключами и енумами.

Как правило императивщики ничего не видят дальше своего носа. :)

ЗЫ. Извиняюсь, ничего личного, просто опыт.

baka-kun ★★★★★
()
Ответ на: комментарий от baka-kun

Значит учти это в своей модели данных, и спроектируй базу правильно.

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

baverman ★★★
()
Ответ на: комментарий от special-k

Как это не надо..

«не надо» в том смысле, что положить некорректные данные у тебя не получится, конечно такая попытка будет тоже ошибкой, но она не пройдет незамеченной

Ну а сериализация данных например, тут что ты будешь ограничивать?

не проблема написать функцию для проверки

wota ★★
()
Ответ на: комментарий от baka-kun

Т.е.

- переносимость

- создавать/изменять правила в нескольких местах

+ Следование некой идеологии

special-k ★★★
()
Ответ на: комментарий от special-k

Да можно, но в чем смысл?!

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

wota ★★
()
Ответ на: комментарий от special-k

Как это не надо.

А для чего? В базу ты левый мусор не положишь.

Ну а сериализация данных например

У поля всегда есть базовый тип, тот же smallint, например. Да и как ты сериализируешь ключи, какой-нибудь CustomerId или ещё чего?

baka-kun ★★★★★
()
Ответ на: комментарий от wota

Так несколько мест (в приложении и в БД) как раз минус. Или ты предлагаешь в БД вынести вообще всю логику? o_O

Любая запись в БД - суть сериализация, т.е. приложение знает об объекте все, БД не знает почти ничего. Кроме того, моя задача не допускать ошибок при записи в БД, т.е. невалидный объект на стороне приложения - это абсолютно нормльно, ошибка при записи - это внештатная ситуация. Правильно сказал baverman, БД это всего лишь хранилище. Это слабый и неудобный инструмент логики. И опять же:

минус переносимость

минус гибкость (я вообще могу хранить данные в разных БД)

special-k ★★★
()
Ответ на: комментарий от baverman

Мой опыт говорит, чем меньше завязываешься на БД, тем проще поддерживать приложение.

У меня вон рядом есть человек, который постоянно заявляет: «чем меньше оставляешь свободы разработчикам сервера приложений, больше логики утягиваешь к себе в базу, тем легче поддерживать /решение целиком/». Приходится не давать обеим сторонам утянуть одеяло на себя.

База это сраное хранилище

С таким подходом RDBMS противопоказаны, поскольку это далеко не только хранилище. Правильная БД — это как минимум половина решения, поскольку описывает приложение целиком в рамках реляционной модели. База описывает /что/, а бизнес-логика — /как/.

все эти констрейнты нах никуда не впились и нет никакой магии в консистентном наполнении со стороны приложения

Тогда возьми какого-нибудь наследника dBase, и не мучай ни себя, ни окружающих.

baka-kun ★★★★★
()
Ответ на: комментарий от special-k

Приведи пример чем чревато отсутствие описания «что» в БД.

То есть там хранятся просто какие-то блобы? База не будет полезной частью приложения, а только «тупым хранилищем». RDBMS не для этого создавались, поэтому вернись к xBase, файлам на FS или перфокартам.

baka-kun ★★★★★
()
Ответ на: комментарий от tailgunner

Как правило, декларативщина ограничивается внешними ключами и енумами.

откуда возьмутся ошибки в целостности?

special-k ★★★
()
Ответ на: комментарий от special-k

Так несколько мест (в приложении и в БД) как раз минус

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

Или ты предлагаешь в БД вынести вообще всю логику? o_O

нет

БД не знает почти ничего.

ей это и не надо, у нее своя задача - обеспечивать целостность данных

минус гибкость (я вообще могу хранить данные в разных БД)

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

wota ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.