metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2011-04-05 07:18 pm

Перепост, про Firebird

ссылка
В бане (или борделе, кто куда ходит), после грамотной попарки (или еще чего), распаренный партнер подсказывает генральному, что во всем виноват тормозной Firebird, и надо переходить на "промышленные" СУБД.
...
Правильно затюнигованный Firebird держит 1500 активных клиентских подключений, обслуживает 400Гб базу, и экономит предприятию как минимум от $6000 за каждый процессор.

У меня на почве Firebird когнитивный диссонанс в крайней стадии.
Во-первых, он у меня работает в количестве нескольких сотен штук у разных клиентов. Во-вторых, я на его использовании съел собаку. В третьих, у меня кодогенератор пока заточен строго под Firebird и свои модели хранит тоже в Firebird. То бишь мне по долгу службы положено всюду Firebird пропагандировать и пиарить.

Но периодически возникают срачи с разного рода админами, коллегами-программистами и прочими причастными к теме, и все они крайне не любят оный Firebird. Типа истории про неуловимый баг "если в процессе работы почитать(скопировать) базу извне сервера, то база сдохнет. Оригинал сдохнет, не копия". Ну и прочие urban legends. У людей без мозгов вообще первая реакция примерно такая: "Firebird? А, ну идите в топку, пионеры из НИИГиТ.".

Ребе [livejournal.com profile] theiced вообще убеждает меня, что базы Firebird регулярно отправляются на марс, со всеми данными :) И таки да, надо признать, такое бывало, меньше 1% случаев, но бывало. Я не знаю, как обстоят с таким дела у всяких Ораклов или PostgreSQL, но меньше 1% излечимых отказов, при жестоко удолбищных условиях эксплуатации - это имхо, вполне хорошо. Возможно, я чего-то не понимаю, и отказов вообще быть не должно.

Если посмотреть на среднего вопрощающего на sql.ru или на отвечающих ему местных "гуру", то причины такой ситуации становятся более понятны - вопрощающий обычно реально пионер из НИИГиТ, отвечающие или модераторы - несдержанные на язык красноглазики, в самом лучшем случае - делающие гешефт на Firebird и около того товарищи.

И еще один аспект - это те самые условия эксплуатации. Oracle/MSSQL - это значит заведомо нормальный сервер, инфраструктура и наличие обслуживающих админов. PostgreSQL/MySQL - наличие в дельта-окрестности следящего за инфраструктурой красноглазика.
Для Firebird же типичная инфраструктура - "первый попавшийся десктоп с виндой, с матерью на nvidia чипсете, съеденными мышами проводами, на котором кишат вирусы, админов нет, а пользователи качают с китайских серверов зоофильское порно с троянами и червями".
Я до сих пор не могу забыть, как админы клиентов базу данных бухгалтерской системы один раз удалили вместе с образом виртуальной машины, а в следующий раз, уже после переселения на физическую машину, у них просто ВЫПАЛ ПРОВОД из винчестера во время работы. Слава богу, база была на другом винчестере.

[identity profile] fraks-nsk.livejournal.com 2011-04-11 08:30 am (UTC)(link)
>> Типа истории про неуловимый баг "если в процессе работы почитать(скопировать) базу извне сервера,
>> то база сдохнет. Оригинал сдохнет, не копия"

Кстати, было у меня такое разок, слава богу не на боевой базе.
Это если копировать при наличии коннекта к базе.
Копия понятно что дохлая, но что исходник ломается - был удивлен.

Но это было давно, версию сервера уже не помню, возможно это был еще дятел, или IB.
В FB это вроде потом исправили, кажется файл базы открывался не в том режиме и вероятно какая-то виндовая хрень еще примешалась. Но все равно не рискую так делать - сначала файл переименую. Если получилось - то коннектов не было и уже по тем алиасам не будет.
На юниксах это не сработает. Переименовать работающий файл там можно.
Впрочем я так понимаю теперь этого бага нет.

[identity profile] metaclass.livejournal.com 2011-04-11 09:11 am (UTC)(link)
Я сначала смотрю наличие коннектов к БД, а потом уже что-нибудь делаю.

[identity profile] fraks-nsk.livejournal.com 2011-04-11 09:19 am (UTC)(link)
Ну так я же и пишу - простейший способ проверить наличие коннектов - переименовать файл. Если удалось - это гарантирует что
- коннектов не было
- коннектов не будет

А если посмотреть есть ли коннекты то в процессе все равно не исключено что кто-то прицепится.