Skip to content

Firebird vs Postgresql

Andrey Ashgaliyev edited this page Mar 24, 2016 · 2 revisions

vgv [20:30]
Firebird крутой!
Еще вопросы? :simple_smile:
Ну на самом деле, там сложная история
Сейчас, в 2016 году PG выглядит очень хорошо
и осталось мало областей где FB его бьет
Давайте даже так
FB - это настоящая, полноценная, клиент-серверная СУБД
не поделка типа sqlite и прочих
а настоящая СУБД с ACID транзакциями, поддерживает последние версии SQL и всё такое
с очень древней историей
ну, про историю, я думаю в вики хорошо написано

alex_r [20:33]
это да, но в вики про FB больше плохого, чем хорошего)

vgv [20:33]
ну, потому что мудачье писало, скорее всего
которое слышало звон

alex_r [20:34]
впрочем я не смотрел англоязычную вики, быть может там всё объективней
тем не менее - сейчас FB практически полностью вытеснена PG?

vgv [20:35]
из плюсов прямо сейчас над PG что я сходу могу назвать -

  1. отличная работа на windows (+ простота установки)
  2. embedded версия
  3. правда MVCC (тут даже PG немного посасывает)
  4. очень мало инструментов, но все очень хорошие
    и по пунктам
  5. про Windows - да, сейчас это сильно менее актуально, но лет 10 назад винды было сильно больше. И у разработчиков на машинах, и на конечных станциях
    Представьте себе коробочный софт

sanykey [20:36]
Странно, что про FB никогда вообще не слышал, хоть она и древняя

vgv [20:36]
Где вы найдете под него linux-сервер? В 99% контор куда вы его будете продавать ничего подобного просто нет. Хорошо если там просто есть выделенная машина под базу, а чаще - берут самую мощную из рабочих станций и делают ее сервером
Поставить теткам из бухгалтерии в таком раскладе PG - нереально
И это сейчас, когда у PG есть инсталлятор для винды и всё такое
2) embedded-версия. Вообще киллер-фича, я не вспомню другую базу. Если очень грубо - у FB есть два дистрибутива - нормальный сервер и *.dll
Нормальный сервер - все понятно, установили, подключаемся по сети как обычно
Встроенный сервер - вы линкуетесь с этой dll и у вас прямо внутри программы СУБД Firebird
причем, никакая не урезанная версия

alex_r [20:39]
круто, как sqlite, но нормальная бд )

sanykey [20:39]
А почему бы тёткам из бухгалтерии не поставить mssql или mysql?

vgv [20:39]

А почему бы тёткам из бухгалтерии не поставить mssql или mysql?

кто им должен поставить?
Про embedded - это действительно так - у вас появляются транзации, конкурентный доступ - в общем, ​всё​ что есть у полноценного сервера
Более того, база данных, которую пишет emdedded полностью идентична по формату со ​взрослой​ версией

sanykey [20:40]
Не понял вопроса. а кто вышеописанную поставит?

dfatt [20:41]
я помню фаербёрд

vgv [20:41]
то есть, можно взять этот файл, подсунуть большому FB, поменять в прилодениях строку коннекта с localhost на какой-нибудь 192.169.0.100
и всё, ваше приложение начинает работать с сетевым FB

dfatt [20:41]
её до сих наверное различные динозавры используют

vgv [20:41]
к которому подключаются уже куча клиентоа, а не вы один

Не понял вопроса. а кто вышеописанную поставит? Инсталлятор вашей программы

sanykey [20:42]
ааа, всё, туплю. Встроенная бд.

vgv [20:42]
нет, не встроенная

sanykey [20:42]
тогда не понял в чём отличие?

vgv [20:42]
инсталлятор может поставить и полноценный сервер
от чего?

sanykey [20:42]
и тут круг замкнулся

dfatt [20:42]
https://coub.com/view/9wkwb

Coub
СЛОЖНА,СЛОЖНА. HARRRRRD.
by Kurt Comebain

vgv [20:43]
круг не замкнулся, вы вопрос задайте правильно
а я пока продолжу
3) правда MVCC (тут даже PG немного посасывает)

alex_r [20:43]
видимо sanykey про mysql говорил)

vgv [20:43]
да
я, например, не очень понимаю, почему в PG у меня, когда я делаю ALTER TABLE затыкаются чтения из этой таблицы
и меня это бесит на моих размерах баз
что мне еще нравится - у FB все DDL операции происходят в контексте транзакции
то есть

alter table bugaga add column hahaha varchar;  
rollback;  

и все, таблица bugaga не изменилась
у PG тоже многие DDL операции транзакционные. Многие, но не все
4) очень мало инструментов, но все очень хорошие
для FB есть, конечно, консольная утилита, называется isql
аналог постгресового psql
но есть и совершенная фантастика под названием IBExpert
она платная (но для ex-СССР - бесплатная) и она только под Windows, но когда ты разрабатываешь сложную логику в базе - очень удобная штука

alex_r [20:46]
да, про эту штуку слышал, хвалили

vgv [20:46]
например, в ней есть пошаговая отладка процедур
или такая штука как diff-баз
указываешь две базы и она делает тебе безопасный diff
который надо применить в целевой базе, чтобы накатить ее до состояния исходной
да, это GUI, да под винду, но очень удобная вещь
другое дело, что сейчас уже не так модно иметь богатую логику в базе
поэтому ценность этих утилит постепенно снижается
или, например, IBReplicator
в FB нет репликации из коробки, но есть отдельный платный инструмент
но он позволяет строить совершенно фантастические деревья репликации
не тупо “отсюда-сюда"
нет-нет
а типа
вот с этого мастера на эти три машины
с тех трех вот на эти, эти и эти
на эти всю базу, на эту - вот эти таблицы, на эти в обе стороны
и так далее
денег своих штука стоит совершенно однозначно
если вы строите что-то такое, развесистое
или, как простой пример
каждая собака знает что WAL - это основа целостности в СУБД(edited)
я не знаю откуда это пошло, в ВУЗ’ах что-ли учат
где-ли
однако в FB нет WAL
WAL - это write-ahead-log
так вот

alex_r [20:51]
а что тогда?

vgv [20:51]
и все начинают кричать обычно - “Ага, в FB нет WAL, значит там нельзя гарантировать целостность данных"
FB делает очень изящную штуку
вот у вас транзакция
большая такая, поменяла кучу данных в куче таблиц
на уровне движка базы, это значит что вы помодифили много страниц данных
(практически любая база хранит данные на диске в виде страниц - 4,8,16,32kb) так вот
у FB есть специальная область в базе, где хранится статус транзакций
список вида “Номер транзакции -> статус"
статус это одно из четырех состояний - active, commited, rolled back и еще один, для 2pc вроде, не помню сейчас
у вас у вашей транзакции есть какой-то номер, пусть 123456789
каждое изменение записей, которые вы помодифили в этой транзакции, помечается ее номером
и вот, пришла пора писать это всё на диск
FB выстраивает страницы в таком порядке, чтобы страница со статусом транзакции была последней
последней, которая запишется на диск
то есть - сначала скидываем все эти сотни “грязных” страниц с данными, а последней страницей пишем этот (4/8/16/32 kb) блок со статусом этой транзакции
типа
123456789 => commited
и подумайте сами
что случится если сервер упадет до того, как он запишет эту последнюю страницу
а ничего - на странице статуса транзакций ваша транзакция не будет в статусе commited, а значит ее изменений нет
целиком
а не так что “какие страницы успели сбросить на диск - те и будут"
либо транзакция запишется вся, либо ничего

alex_r [20:59]
круто и достаточно очевидно

vgv [20:59]
но у PG есть как минимум 2 очень сильных плюса
точнее, один, но из него вытекают остальные
у PG коммьюнити сильно больше
прямо сильно
думаю, даже больше чем на порядок
а значит больше разработчиков
в том числе и contrib-модулей
больше пользователей
а значит гораздо больше советов/рецептов в инете
+ сейчас уже мало кого интересуют десктопные приложения а раз у нас веб - то сервер на линкус
скорее всего
а значит нет проблем с установкой PG

alex_r [21:01]
т.е. в целом FB выбирают, когда нужна надежная бд под более-менее серьезные задачи?

vgv [21:02]
да, но PG в плане надежности совсем не хуже
я думаю что прямо сейчас FB выбирают те, кто точно знает что им надо FB
а остальные берут по дефолту постгрес(edited)
вот например я работал с FB лет 10, наверное
очень плотно
и я точно знаю что я с ней справлюсь
и без советов из инета
поэтому могу взять под новый проект
а если человек только выбирает - он сравнит то же количество ответов на stackoverflow(edited)
да или даже в локальном коммьюнити
в каком бы городе вы ни жили - скорее всего вокруг вас сильно больше людей кто знает PG чем FB
причем, надо понимать что я ни в коем случае не ругаю PG
я и с ним работаю уже лет 10, наверное
отличная штука

alex_r [21:05]
особенно на фоне MySQL?)

vgv [21:05]
ну, сейчас мускул тоже подтянулся, конечно
но когда я знакомился с ним - было тошно
особенно на фоне FB
и транзакции, и триггеры, и хранимые процедуры
да даже банальные генераторы
смотришь на mysql - Н-И-Х-Е-Р-А

alex_r [21:06]
:simple_smile: @vgv: спасибо, теперь стало понятней "что за птиц" :simple_smile:

vgv [21:08]
все используют движок MyISAM без транзакций
а на вопрос “Ребяты, а как вы без транзакций-то?” отвечают “А зачем они? Мой сервер и мой PHP не падает"
но это, замечу, уже древние года
2003-2005-2007
где-то так

endurance [21:09]
а сейчас все пересели на innodb? там что-то про транзакции есть

alex_r [21:09]
не прошло и много лет)(edited)

vgv [21:09]
сейчас все уже, наверное, пересели на MariaDB
и слава богу
еще добавлю про PG/FB/MySQL(edited)
мое окружение сейчас - это web-проекты
как и у большинства здесь, наверное(edited)
и в web традиционно силен MySQL и PG
вот так сложилось
поэтому вы в принципе не услышите особенно много про FB
это все равно что ждать, что рядом с вами вдруг окажется знаток Фортрана или R
не окажется :simple_smile:
так и тут
поэтому мы варимся не в той среде где особенно много можно услышать про Firebird
поэтому может сложиться мнение что он умирает

endurance [21:12]

все уже, наверное, маловероятно xD

alex_r [21:12]
https://habrahabr.ru/post/267647/(edited)
так что да, кому надо - тот использует

vgv [21:13]
ну, например, ММВБ
Московская Межбанковская Валютная Биржа

alex_r [21:13]
Газпром
Магнит
Газпромбанк
Сибур
Аэрофлот
Почта России
Фармстандарт
Московская Биржа
Газпром автоматизация
Отисифарм
РКК Энергия

vgv [21:15]
+ еще вот какой - над FB работает много русских разработчиков поэтому в случае действительно серьезных проблем можно обратится к ним напрямую
в Бразилии, кстати, FB очень любят и широко используют
однако, кто из нас силен в португальском языке и интересуется бразильским ИТ? )

alex_r [21:17]
всё что о ней известно - есть такая страна и вроде там экономика вверх попёрла)

vgv [21:17]
то есть - куда ни ткни, всё мимо web-разработчика читающего русские и англоязычные ресурсы
у них там серьезный курс на OpenSource везде
и в гос учреждениях тоже
а FB - отличная база
если посмотреть в список разработчиков FB - половина русские, вторая половина - бразильцы
утрирую, конечно, но не сильно
всё, надеюсь мое краткое освещение FB принесло пользу
всем спасибо :simple_smile:
4

alex_r [21:19]
сохраните, пожалуйста, диалог(монолог) )
хм, а FB как-то связана с Interbase?

vgv [21:23]
да
прямой наследник(edited)
однажды компания Borland открыла исходники Interbase 6.0
их тут же форкнули, назвали Firebird и понеслось
долгое время они даже по формату базы были совместимы
сейчас уже совсем нет, конечно

Clone this wiki locally