powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Архитектура PostgreSQL
10 сообщений из 10, страница 1 из 1
Архитектура PostgreSQL
    #38980601
Фотография Станислав Клевцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Прошу строго не судить за данную тему.
Чем отличается архитектура PostgreSQL от Oracle ? Возможно есть описание архитектуры PostgreSQL в картинках (буду очень благодарен за ссылки).
Какое отводится место в применении PostgreSQL в высоконагруженных проектах (в том же Hadoop'е)?

Заранее спасибо.
...
Рейтинг: 0 / 0
Архитектура PostgreSQL
    #38980658
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав Клевцов,

тема довольно обширна. вот несколько ссылок с картинками из гугла:

http://raghavt.blogspot.in/2011/04/postgresql-90-architecture.html
http://raghavt.blogspot.in/2011/04/postgresql-90-memory-processes.html
http://dbrang.tistory.com/762
про различия в имплементации mvcc можно тут почитать

потом наверное можно переходить к чтению документации. там много что есть (например, см. часть internals главы 59, 47), но нужно знать, что искать.
...
Рейтинг: 0 / 0
Архитектура PostgreSQL
    #38980760
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав Клевцов,

Я бы выделил следующие отличия.

Версионность и транзакции

версионность в ORACLE реализована на уровне блоков, в PostgreSQL — на уровне записей.

предыдущие версии блоков ORACLE помещает в табличную область UNDO, PostgreSQL просто добавляет новую запись к таблице.

в результате в ORACLE данные в таблицах/индексах всегда самые новые, пройти по уникальному индексу для подсчета записей или же пройтись index-only — пожалуйста!

в PostgreSQL же все данные сразу, поэтому индексы хранят по несколько указателей для одной логической записи. В результате IndexScan всегда (практически) обращается к таблице (хотя в плане это явно не показывается). Index-only в PostgreSQL появился с версии 9.1, но он требует, чтобы таблица была вакуумирована — для интенсивно используемых таблиц проблематично.

также таблицы в PostgreSQL “распухают” из-за старых версий логических записей. Вакуум призван с этим бороться, но на практике это очень занятная часть администрирования.

в ORACLE можно словить “snapshot too old” если в UNDO не нашлось старой версии блока, которая соответствует SCN сессии

откат транзакций в ORACLE долгий, т.к. происходит копирования блоков между UNDO и таблицами, в PostgreSQL все быстро.

ну и самая большая вкусняшка — в PostgreSQL DDL тоже транзакционный, но стоит смотреть доки, т.к. могут быть эффекты (скажем, TRUNCATE можно откатить, но результат становиться виден до завершения транзацкии).

в PostgreSQL реализован уровень изоляции SERIALIZABLE по настоящему.

Администрирование


в ORACLE одна инстанция == одна база (кажется в 12-м есть возможность засунуть несколько баз в инстанцию, но они сами не рекомендуют для продукции). В PostgreSQL — много баз в кластере.

в ORACLE схема и пользователь суть одно и тоже, в PostgreSQL они независимы.

в PostgreSQL нет синонимов, есть search_path

Репликация и Standby (много вкусного!) в PostgreSQL сразу из коробки

в PostgreSQL табличные области есть, но нельзя восстановить только одну область. Восстанавливается всегда весь кластер.

посмотреть что происходит в PostgreSQL сейчас можно только косвенно, средств контроля как у ORACLE (longops, wait events) нету (этот и предыдущий пункт местных админов очень удручает).

Очень хороши презенташки Брюса Момжана (Bruce Momjian) по внутрянке и по фишечкам .

Старая, но крайне информативная статься Грега Смита (Greg Smith) по чекпойнтам . Его же книжка PostgreSQL High Performance считается одной из лучших по теме.
...
Рейтинг: 0 / 0
Архитектура PostgreSQL
    #38980837
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На мое имхо - главная и принципиальнейшая фишка - подход к хинтованию. Постгрес сообщество этому противится изо всех сил -
и хинты в постгресе в явном виде не используются, а обходные маневры не рекомендуются, и считаются моветоном.
В оракле строго наоборот - заброс без пары хинтов - деньги на ветер. В итоге Оракл - самая хинтонасыщенная и хинтолюбимая программистами субд в мире.
...
Рейтинг: 0 / 0
Архитектура PostgreSQL
    #38980998
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan DurakВ оракле строго наоборот - заброс без пары хинтов - деньги на ветер.не преувеличивай. В оракле, на радость админов, есть возможность управлять планом без изменения запроса добавлением хинтов. Для oltp, где преобладает доступ по ключевым полям, хинты редкость. А для dwh вполне часто, тем более таблицы могут меняться существенно и собирать по ним полную статистику накладно.
Но вот что иногда печалит, хинты это комментарии, которые могут игнорироваться оптимизатором и нет их валидации и жесткой зависимости (инвалидации) на упоминаемые в хинте объекты.
...
Рейтинг: 0 / 0
Архитектура PostgreSQL
    #38981122
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p2. Для oltp, где преобладает доступ по ключевым полям, хинты редкость. .
так уж и редкость ?? Есть субд где хинты юзаются чаще???
...
Рейтинг: 0 / 0
Архитектура PostgreSQL
    #38981137
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan DurakЕсть субд где хинты юзаются чаще???Чтобы утверждать за "чаще", нужна сколько-нибудь достоверная статистика. Моя непрезентабельная выборка замечала "хинты" в mssql-базах достаточно часто.
...
Рейтинг: 0 / 0
Архитектура PostgreSQL
    #38981140
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p2.Ivan DurakЕсть субд где хинты юзаются чаще???Чтобы утверждать за "чаще", нужна сколько-нибудь достоверная статистика. Моя непрезентабельная выборка замечала "хинты" в mssql-базах достаточно часто.
часто, но реже чем в оракле на порядок.
...
Рейтинг: 0 / 0
Архитектура PostgreSQL
    #38986337
Фотография Станислав Клевцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorovСтанислав Клевцов,

Я бы выделил следующие отличия.

Версионность и транзакции

версионность в ORACLE реализована на уровне блоков, в PostgreSQL — на уровне записей.

предыдущие версии блоков ORACLE помещает в табличную область UNDO, PostgreSQL просто добавляет новую запись к таблице.

в результате в ORACLE данные в таблицах/индексах всегда самые новые, пройти по уникальному индексу для подсчета записей или же пройтись index-only — пожалуйста!

в PostgreSQL же все данные сразу, поэтому индексы хранят по несколько указателей для одной логической записи. В результате IndexScan всегда (практически) обращается к таблице (хотя в плане это явно не показывается). Index-only в PostgreSQL появился с версии 9.1, но он требует, чтобы таблица была вакуумирована — для интенсивно используемых таблиц проблематично.

также таблицы в PostgreSQL “распухают” из-за старых версий логических записей. Вакуум призван с этим бороться, но на практике это очень занятная часть администрирования.

в ORACLE можно словить “snapshot too old” если в UNDO не нашлось старой версии блока, которая соответствует SCN сессии

откат транзакций в ORACLE долгий, т.к. происходит копирования блоков между UNDO и таблицами, в PostgreSQL все быстро.

ну и самая большая вкусняшка — в PostgreSQL DDL тоже транзакционный, но стоит смотреть доки, т.к. могут быть эффекты (скажем, TRUNCATE можно откатить, но результат становиться виден до завершения транзацкии).

в PostgreSQL реализован уровень изоляции SERIALIZABLE по настоящему.

Администрирование


в ORACLE одна инстанция == одна база (кажется в 12-м есть возможность засунуть несколько баз в инстанцию, но они сами не рекомендуют для продукции). В PostgreSQL — много баз в кластере.

в ORACLE схема и пользователь суть одно и тоже, в PostgreSQL они независимы.

в PostgreSQL нет синонимов, есть search_path

Репликация и Standby (много вкусного!) в PostgreSQL сразу из коробки

в PostgreSQL табличные области есть, но нельзя восстановить только одну область. Восстанавливается всегда весь кластер.

посмотреть что происходит в PostgreSQL сейчас можно только косвенно, средств контроля как у ORACLE (longops, wait events) нету (этот и предыдущий пункт местных админов очень удручает).

Очень хороши презенташки Брюса Момжана (Bruce Momjian) по внутрянке и по фишечкам .

Старая, но крайне информативная статься Грега Смита (Greg Smith) по чекпойнтам . Его же книжка PostgreSQL High Performance считается одной из лучших по теме.


Спасибо за инфу!
...
Рейтинг: 0 / 0
Архитектура PostgreSQL
    #38994536
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorovСтанислав Клевцов,

Я бы выделил следующие отличия.

Версионность и транзакции

версионность в ORACLE реализована на уровне блоков, в PostgreSQL — на уровне записей.

предыдущие версии блоков ORACLE помещает в табличную область UNDO, PostgreSQL просто добавляет новую запись к таблице.

в результате в ORACLE данные в таблицах/индексах всегда самые новые, пройти по уникальному индексу для подсчета записей или же пройтись index-only — пожалуйста!



Я бы назвал эти утверждения относительно Оракла очень смелыми и достаточно спорными.

Да, реализация версионности в оракле и PG разные , грубо говоря, PG "настоящий" версионник, а оракл хранить старые версии
записей в сегменте отката. Т.е. PG хранит записи с разными версиями на страницах данных, а оракл хранит на страницах
данных только последнюю закоммиченную, а если нужны старые, они восстанавливаются на основе данных из сегмента отката.

Но вот что оракл в сегменте отката будет сохранять целые блоки данных, вместо дельты одной изменившейся записи -- это очень было бы глупо, и я уверен, что это не так. К сож. точно сказать, что это не так, я не могу, а рыть доки по ораклу нет желания.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Архитектура PostgreSQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]