The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Материалы онлайн-конференции с ведущими экспертами PostgreSQL

06.08.2008 13:06

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

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

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

Вопрос (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, хотя лично я ещё не видел этого патча. Мы, вне всяких сомнений, нуждаемся в таком синтаксисе.

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

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

Вопрос (Сергей Коноплёв): У нас есть задачи генерации событий на основе операций в БД: добавление/изменение/удаление. Это, конечно, можно делать в триггерах, но на уровне WAL файлов IMHO это было бы эффективнее, не говоря о том, что обработку можно было бы делать отложенной и вынесенной. Вопрос - есть ли хорошо документированный API для работы с WAL файлами и, если есть, насколько сильно он будет меняться от версии к версии? Если да, то где можно найти информацию об этом?

Фёдор Сигаев, ведущий разработчик PostgreSQL: Внешнее API отсутствует, поскольку никогда не предполагался внешний доступ к WAL-файлам. Более того, их формат совместим только для минорных версий, гарантии совместимости форматов между major-версиями никогда даже не предполагалось. В Постгресе даже нет центрального расшифровщика WAL-записей, каждая запись в некотором смысле контейнер, который имеет признак расшифровщика (таблица, btree-индекс, GiST-индекс и т.д.) Строить свою обработку на WAL-логах не очень удобно ещё и по следующей причине: файлы могут использоваться повторно, и Постгрес никак не оповещает внешний мир об этом.

Брюс Момджан, лидер сообщества PostgreSQL, эксперт компании EnterpriseDB: То есть, Вы ищете способ чтения WAL-файлов напрямую? Не существует никакого API для этого, так как их внутренний формат достаточно сложен. Я сейчас понял, что возможность чтения логов могла бы быть полезной, возможно, нам стоит рассмотреть вопрос о включении этого пожелания в TODO-лист. У нас есть на самом деле pg_filedump, но я не уверен, что он дампит WAL-файлы.

Марко Креэн, инженер компании Skype: Может быть, это более эффективно, но менее надёжно (например, WAL-файл может сротироваться без вашего ведома). Пожалуйста, попробуйте PgQ из пакета Skytools и поизучайте скрипты, которые используют этот механизм для организации очереди. Это очень эффективная очередь внутри базы данных, легкая в использовании и надёжная. Также в ней существует встроенный фреймворк для того, чтобы гарантировать транзакции между несколькими базами данных при обработке очереди. Ещё в ней существуют триггеры, которые автоматически определяют структуру таблиц и форматируют данные в легко разбираемом формате (urlencode).

Полную историю онлайн-сессии можно прочитать здесь.

  1. Главная ссылка к новости (http://postgresmen.ru/articles...)
  2. OpenNews: Онлайн-конференция с ведущими экспертами PostgreSQL
Автор новости: postgresmen
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/17265-postgresql
Ключевые слова: postgresql
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (5) RSS
  • 1, Veter (??), 16:58, 06/08/2008 [ответить]  
  • +/
    А вот обсуждение конференции на sql.ru

    http://sql.ru/forum/actualthread.aspx?tid=581632&pg=-1

     
     
  • 2, Все тот же аноним (?), 19:17, 06/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    sql.ru - это баш.орг с SQL уклоном. Иногда, правда, вижу там Бартунова, Золотухина, но - редко.
     

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

    Это что значит, что в PGSQL нет команды insert? Всю жизнь ее там использую. Или в чем вопрос Kai заключался?

     
     
  • 4, deadl2 (?), 22:19, 06/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    смотрю в книгу - вижу фигу? 'отсутствие конструкции "INSERT OR UPDATE"' - если запись по ключу есть - она апдейтится, нет - вставляется
     
     
  • 5, Vitaly_loki (??), 22:54, 06/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >смотрю в книгу - вижу фигу? 'отсутствие конструкции "INSERT OR UPDATE"' -
    >если запись по ключу есть - она апдейтится, нет - вставляется
    >

    а-а-а, понятно

     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру