LINUX.ORG.RU

Брюс Момджан, Марко Креэн, Фёдор Сигаев и Максим Богук ответили на вопросы о PostgreSQL

 , ,


0

0

30 июня мы провели онлайн-сессию «Вопросы к ведущим мировым экспертам PostgreSQL». В течение трёх часов любой желающий мог задать вопрос одному из приглашённых гостей и получить исчерпывающий ответ. В результате было получено более 40 вопросов, ни один из которых не остался без внимания.

Участники: Брюс Момджан (Bruce Momjian) (PGDG, EnterpriseDB), Максим Богук (Rambler, Мастерхост), Фёдор Сигаев (PGDG), Марко Креэн (Marko Kreen) (Skype).

Вот пара интересных вопросов и ответы на них:

Вопрос №3

kai: Одна из досадных штук в работе — это отсутствие конструкции "INSERT OR UPDATE". В MySQL можно сделать так: "INSERT INTO users (username, email) VALUES ('Jo', 'jo@email.com') ON DUPLICATE KEY UPDATE email = 'jo@email.com'". Появится ли что-нибудь похожее в PostgreSQL?

Брюс Момджан, лидер сообщества PostgreSQL, эксперт компании EnterpriseDB: Стандартный (ANSI) способ для таких вещей — это MERGE или UPSERT. Оба способа находятся у нас в TODO-листе и, насколько я знаю, кто-то работает над этой функциональностью для PostgreSQL 8.4, хотя лично я ещё не видел этого патча. Мы, вне всяких сомнений, нуждаемся в таком синтаксисе.

Вопрос №5

Alexander: Вопросы к разработчикам Skype: 1) Хочется оценить масштабы Skype, хотя бы приблизительно. Сколько пользователей сейчас зарегистрировано? Сколько пользователей находятся одновременно онлайн? Сколько транзакций в секунду выполняет Ваш PostgreSQL? Сколько у Вас серверов PostgreSQL? 2) Как правильно померить количество транзакций в секунду в PostgreSQL?

Марко Креэн, инженер компании Skype: 1) Общее количество пользователей у нас сейчас в районе 300 миллионов. Я точно не знаю насчёт активных пользователей, но мой Skype-клиент показывает, что сейчас онлайн находятся 10 миллионов пользователей, и это далеко не пиковая нагрузка. У меня нет точных цифр по количеству транзакций в секунду (TPS), но, кажется, наша нагрузка — где-то в районе 10-20 тысяч TPS. Всего у нас более 100 серверов PostgreSQL, хотя и не все из них работают одновременно. 2) Используйте анализатор логов или pgBouncer, установленный перед базой данных, он даёт такую статистику.

>>> Полная история онлайн-сессии

> насколько я знаю, кто-то работает над этой функциональностью

> точно не знаю насчёт активных пользователей

> У меня нет точных цифр по количеству транзакций в секунду (TPS), но, кажется, наша нагрузка

Они хоть что-нибудь точно знают!?

gaa ★★
()

А у нас вручную считали быстродействие(нет не секундомером), давно правда было...

Correctnoe_imya_polzovatelya ★★★★★
()

Skype настолько беден, что не может себе позволить Oracle, а юзает эту бздявую быдлоподелку.

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

многие, использующие, эту "быдлоподелку" (c) - выбрали ее не по причине нехватки средств на ОраклЕ. и перешли, в массе - своей, зачастую - как раз с такового. причем достаточно крупные компании(как из F500-списка, так и вне такового).

p.s. вы ВНУТРЬ Ораклу заглядывали ? использовать под СЕРЬЕЗНОЙ нагрузкой ? это ЧУДО - устарело, еще задолго до выпуска. и малопригодно для любого мало-мальски, сурьезного применения.

BasileyOne
()
Ответ на: комментарий от anonymous

Нет. Я об этом:
---------------
Вопрос №4

kai:
Будет ли улучшена работа с обработкой данных на различных языках? Например, у меня многоязычный сайт, и я был бы рад получать для него форматированные из timestamp даты в зависимости от указанной в SQL запросе локали.

Фёдор Сигаев, ведущий разработчик PostgreSQL:
Работа над этим ведётся, но в основном она сосредоточена в области COLLATION и полнотекстового поиска. Первое, с чем надо разобраться — это хотя бы создание базы с локaлью, отличной от локали кластера. А формирование даты обычно намного проще и гибче делается в приложении.
-------------

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

и тем не менее - SQL делает это быстрее и лучше. применительно к использованию оной - в нем-же быстрее - тк компилятор оного и UDF-ки - шустрее всего остального, включая оба JIT(минус GCC ;) а лучше потому что управляемее и ПРОЩЕ.

см СКЛ99.

BasileyOne
()

Блин, я провтыкал опрос. Знает кто, планируется ли в будущем разделение прав доступа к строкам в таблице? Чтоб пользователь имел право применять UPDATE и DELETE только к тем записям, которые он сам создал? Это единственное, чего мне в данный момент не хватает в postgres. Надоело враперы писать :(

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

А что, в мускуле такое есть? о_О

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

те "оптимистические, raw-based(или по колонкам) locking" ? в мэйнстриме - вроде не общалось. а если пересобрать - хз. киньте им на мыло вопрос.

BasileyOne
()

помогите разрешить спор: что находится в shared_buffers ? правильно ли что в shared_buffers только измененные блоки которые стоят в очереди на сброс на HDD, а кешированием блоков данных занимается ОС, задается параметром effective_cache_size ?

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

>Блин, я провтыкал опрос. Знает кто, планируется ли в будущем разделение прав доступа к строкам в таблице? Чтоб пользователь имел право применять UPDATE и DELETE только к тем записям, которые он сам создал? Это единственное, чего мне в данный момент не хватает в postgres. Надоело враперы писать :(

Врапперы - не нужны. Можно всё сделать вьюхами примерно так - http://www.opennet.ru/tips/info/1420.shtml

illi
()

ЗЫ. имхо постгресу надо бы документацией занятся, а то не понятно как работают даже базовые вещи.

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

> ЗЫ. имхо постгресу надо бы документацией занятся, а то не понятно как работают даже базовые вещи.

Вот с чем, чем, а с доками у PostgreSQL полный порядок.

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

>Вот с чем, чем, а с доками у PostgreSQL полный порядок.

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

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

> ЗЫ. имхо постгресу надо бы документацией занятся, а то не понятно как работают даже базовые вещи.

ИМХО надо читать эту документацию, а не три раза переспрашивать один и тот же вопрос (#6), а оказывается что его функциональность уже заложена в ядре.

А вообще надо немного отличать СУБД от API. Почему все хотят все реализоват именно в самой СУБД. Ну и что получится, второй неповоротливый оракл?

Вопрос 12. А с какого перепугу создатели постгреса должны делать какой то механизм которые будет вносить изменения в базы даннх по мере их разработки. 8-() вообще не ясно.

Вопрос №17 этого вообще убить!

Вопрос №18 Расстрелять!

Вопрос №19 Вот это я понимаю вопрос, действительно актуальный. Перенос дампами уже откровенно начинает нервировать. Особенно пользователей.

Вопрос №35 А что системный планировщик задач уже не катит чтоли? Вот же ленивые люди пошли.

Вопрос №37 Хороший вопрос, и качественный ответ. Люди думают о будущем, при том за всех остальных. основная база данных доступна полностью функциональна. И это бесплатно! А уж за удобства нужно заплатить, кстати не так много как кажется.

В общем как то хило. Все от лени, лени читать документацию, лени искать софт, лени просто пошевелить мозгом. Хотим бесплатно, качественно и что бы еще со всеми удобствами. Мне кажется это глупо.

maxik73
()
Ответ на: комментарий от Evgueni

Год назад с месяц пытался сделать репликацию файлами - ничего не вышло. Дока совершенно невменяемая.

anonymous
()
Ответ на: комментарий от BasileyOne

>и тем не менее - SQL делает это быстрее и лучше. применительно к использованию оной - в нем-же быстрее - тк компилятор оного и UDF-ки - шустрее всего остального, включая оба JIT(минус GCC ;) а лучше потому что управляемее и ПРОЩЕ.

А, ну сорри. Я на плюсах пишу. Но все же это неправильно как-то - по идее, такие детали визуально представления до базы не должны доходить...

anonymous
()
Ответ на: комментарий от Bod

Насколько помнится - локаль на лету поменять можно

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

> в доке лишь синтаксис, из нее не понять даже базовых вещей, типа как fullscan работает (есть ли мультиблочное чтение), что такое shared_buffers и многое другое ...

А зачем пользователю информация как fullscan работает? Мне просто интересно. Что конкретно вам нужно знать про shared_buffers? И что значит многое другое?

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

> Год назад с месяц пытался сделать репликацию файлами - ничего не вышло. Дока совершенно невменяемая.

По этому поводу ничего сказать не могу. IMHO конкретные рецепты имеет смысл спрашивать в списке рассылки. В интервью он по-моему указан.

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

>А, ну сорри. Я на плюсах пишу. Но все же это неправильно как-то - по идее, такие детали визуально представления до базы не должны доходить...

Ну, у меня в куче таблиц в вебфронтморде дата везде выводится в одном формате. Я был бы просто счастлив, еслиб один раз прописал в sql запросе вывод даты в нужном формате и программно менял бы тока локаль в этом запросе. Без дополнительных обработок результата запроса.

А то какой-то сраный javascritp это может, а постгрес - увы.

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

>А то какой-то сраный javascritp это может, а постгрес - увы.

а напомните плиз чем отличается javaскрипт от СУБД?

maxik73
()
Ответ на: комментарий от anonymous

shared_buffers содержит все дисковые страницы с которыми потсгрес в данный момент работает (неважно в каком режиме - RO или RW). В том числе (но не только) там содержаться недавно измененные страницы, ожидающие записи на диск.

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

teodor
()
Ответ на: комментарий от maxik73

Ну вот почти со всем согласен. Но вот какого хрена заставлять кодеров читать действительно слабо приспособленную для них документацию? Ну знает человек SQL и пару встроенных языков - ну и пусть пользуется. По опыту знаю - многие вещи в документации разобщены, хотя взаимно зависимы. Вот и заставляйте сотрудников ковыряться в документации на слабознакомом English или переводите документацию самостоятельно, вставляя ссылки на разделы документации (и HOWTO, и TODO) связаные с переводимым разделом. Я не имею возможности держать штат, грамотный настолько, чтобы всё это делать. А по поводу поиска сотрудников полноценно владеющих английским - (как тут говорят) кастую - высуньте нос за МКАД.

anonymous
()
Ответ на: комментарий от teodor

2teodor

>shared_buffers содержит все дисковые страницы с которыми потсгрес в данный момент работает (неважно в каком режиме - RO или RW). В том числе (но не только) там содержаться недавно измененные страницы, ожидающие записи на диск.

а есть урл на достоверный источник ?

anonymous
()
Ответ на: комментарий от maxik73

>Вопрос №35 А что системный планировщик задач уже не катит чтоли? Вот же ленивые люди пошли.

не катит. кто будет писать обработчик если при запуске крона база лежала ? да и посмотрите на остальнрые фичи dbms_job из оракла ...

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

> а есть урл на достоверный источник ?

Считай, что тот ответ и есть источник самый что не на есть достоверный. Вообще-то описание что такое shared_buffers ищется на раз-два через google.

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

те весь трэш(тот или иной) нужный конкретному разработчику(или группе таковых) - вы предлагаете пихать В ЯДРО СУБД ? причем - в мэйнстрим-ядро ? вот исходники, вот руки - допишите аналог планировщика. и-или "аналог "jobs_dbms".

BasileyOne
()
Ответ на: комментарий от anonymous

Я думал об этом, но потом решил, что в данном случае иллюзорное облегчение жизни во вред.

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

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

Это Вы с собой что ли разговариваете?

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

>Skype настолько беден

правильное слово- жаден :-)

anonymous
()
Ответ на: комментарий от Evgueni

>Считай, что тот ответ и есть источник самый что не на есть достоверный. Вообще-то описание что такое shared_buffers ищется на раз-два через google.

и что мне даст мнение прыщавого васи пупкина на тему шаред буфера ? мне нужен нормальный источник, а не статейки с домена народ.ру, есть такой с точной информацией ?

anonymous
()
Ответ на: комментарий от BasileyOne

>вот исходники, вот руки - допишите аналог планировщика. и-или "аналог "jobs_dbms".

зачем ? меня dbms_job всем устраивает, а кронтаб, повторюсь, нифига не катит.

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

>не катит. кто будет писать обработчик если при запуске крона база лежала ? да и посмотрите на остальнрые фичи dbms_job из оракла

а вы вообще не хотите ничего писать? Тогда посмотрите на цену оракла.

maxik73
()
Ответ на: комментарий от anonymous

> Skype настолько беден, что не может себе позволить Oracle, а юзает эту бздявую быдлоподелку.

Ты хочешь чтобы они купили Oracle, а в их ценах появился лишний ноль? я - нет...

gods-little-toy ★★★
()
Ответ на: комментарий от anonymous

> и что мне даст мнение прыщавого васи пупкина на тему шаред буфера ? мне нужен нормальный источник, а не статейки с домена народ.ру, есть такой с точной информацией ?

Понятно - то есть даже не пробовали :( Здесь скучно и грустно.

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

> и тем не менее - SQL делает это быстрее и лучше.

Вы что, видели где-то проект, который тормозил из-за медленных конверсий между разными форматами даты??

gods-little-toy ★★★
()
Ответ на: комментарий от anonymous

> и что мне даст мнение прыщавого васи пупкина на тему шаред буфера ?

Да, забыл добавить, что про shared_buffers вам отвечал один из основных разработчиков PostgreSQL. IMHO зря он это сделал ибо не в коня корм.

Evgueni ★★★★★
()
Ответ на: комментарий от gods-little-toy

да нет, я просто про то, что (в случае УМЕЛОЙ реализации)server-side обработка - имеет феноменальные бенефиты. по всем направлениям, кроме(отчасти), трудозатрат(ибо отладчик - не во всех СКЛ - подарок, а UDF ...).

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

> доступ к ним - был у компании, для которой, я, некоторое время назад, писал.

А что писали? Ни за что не поверю что что-то связанное с БД после вашего высказвания про оптимистические блокировки :-)

anonymous
()
Ответ на: комментарий от Evgueni

>> и что мне даст мнение прыщавого васи пупкина на тему шаред буфера ?

> Да, забыл добавить, что про shared_buffers вам отвечал один из основных разработчиков PostgreSQL.

Смешно. Другой Анонимус, не суди о прыщах ближнего по своим :-)

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