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] sgalitsky.livejournal.com 2011-04-08 02:23 pm (UTC)(link)
> Кроме того, у него с типизацией полей печаль.
- с какой стороны посмотреть. я его давно не юзал. последний раз - под тиклем, - что в тикле - каждая переменная - строка, что в sqlite (а он из тикля и вырос) - то же самое.

под питоном поюзал слегка - для внутренних нужд, - переменные и файлики хранить, - какие проблемы с типизацией?

- или я где-то ошибся и надо левым ухом правую руку чесать?

[identity profile] metaclass.livejournal.com 2011-04-08 03:01 pm (UTC)(link)
Правильная система типов позволяет выкинуть половину кода, всякие там проверки да обработки ошибок, т.к. просто не позволяет ввести неправильные данные.
В реляционных БД система типов конечно, слабее, чем во всяких хаскелях и агдах, но обладает некоторыми свойствами, которые в обычных языках до сих пор сделать невозможно, без выворачивания мозгов наизнанку.

[identity profile] sgalitsky.livejournal.com 2011-04-08 04:48 pm (UTC)(link)
т.е. Вы заранее согласны с тем, что используемая система выкатит ошибку за номером #012157615?
- т.е. своей проверки в Вашем коде нет? ни эксепшнов правильных?

[identity profile] metaclass.livejournal.com 2011-04-08 06:34 pm (UTC)(link)
Эта ошибка сопоставляется осмысленному сообщению, и показывает это сообщение пользователю. Это в случае, если неправильные данные все таки дошли до базы, после всех проверок в клиентском ПО.
Некоторые проверки, впрочем, в таком случае можно вообще не делать - пользователю будет показано осмысленное сообщение, а действия откатятся.

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

[identity profile] sgalitsky.livejournal.com 2011-04-09 01:19 pm (UTC)(link)
верно. и не верно.
- программер все-таки должен выполнять проверки у себя. то, что это база может - хорошо. - они все это умеют, между прочим..

[identity profile] fraks-nsk.livejournal.com 2011-04-13 01:03 am (UTC)(link)
Они-то умеют, но надо что бы и программист умел этим пользоваться.
Запихивание даты в строку - это изощренный обход умений сервера и раскладка граблей собственными руками.

[identity profile] sgalitsky.livejournal.com 2011-04-13 08:14 am (UTC)(link)
Вы бы sqlite сервером не называли. - В следующий раз за умного сойдете..

[identity profile] fraks-nsk.livejournal.com 2011-04-13 08:24 am (UTC)(link)
Так вы же мне его предлагаете юзать вместо FB :)

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 08:37 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 08:44 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 08:50 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 09:01 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 09:09 (UTC) - Expand

[identity profile] fraks-nsk.livejournal.com 2011-04-13 08:28 am (UTC)(link)
Кстати, по вашей работе которой вы периодически лишаетесь всвязи с кризисом и прочим..

>> 90% приложенй в мире укладывается в это определение. Соответственно, 90% разработчиков
>> ищут БД именно под такую задачу.
>> Вы думаете, все по 500 Гб и тысяче коннектов держат?

http://www.sql.ru/forum/actualthread.aspx?tid=843451&pg=1&mid=10511458#10511458

Вы выбрали не тот размерчик :)

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 08:40 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 08:45 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 08:50 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 08:41 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 08:46 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 08:47 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 08:48 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 08:57 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 09:25 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 09:35 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 09:26 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 09:37 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 09:43 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 09:57 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 09:59 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 10:02 (UTC) - Expand

(no subject)

[identity profile] w00dy.livejournal.com - 2011-04-13 10:05 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2011-04-13 10:08 (UTC) - Expand

(no subject)

[identity profile] kurilka.livejournal.com - 2011-04-13 10:10 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 11:41 (UTC) - Expand

(no subject)

[identity profile] kurilka.livejournal.com - 2011-04-13 11:56 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 12:13 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2011-04-13 12:28 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 12:38 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 15:01 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 18:54 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 19:14 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-14 08:08 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-14 08:27 (UTC) - Expand

(no subject)

[identity profile] w00dy.livejournal.com - 2011-04-14 09:11 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-14 09:17 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2011-04-14 09:25 (UTC) - Expand

(no subject)

[identity profile] w00dy.livejournal.com - 2011-04-14 09:50 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-14 10:16 (UTC) - Expand

(no subject)

[identity profile] w00dy.livejournal.com - 2011-04-14 09:41 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-14 10:48 (UTC) - Expand

(no subject)

[identity profile] w00dy.livejournal.com - 2011-04-14 09:20 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-14 09:28 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 19:15 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 19:22 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-14 08:59 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-14 09:04 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-14 09:11 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-14 09:06 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 12:43 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 10:11 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 11:48 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 11:57 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 12:26 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 13:41 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 18:46 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-14 08:25 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-14 08:39 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-14 08:56 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-14 08:58 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-14 09:07 (UTC) - Expand

(no subject)

[identity profile] w00dy.livejournal.com - 2011-04-14 09:15 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-14 09:19 (UTC) - Expand

(no subject)

[identity profile] w00dy.livejournal.com - 2011-04-14 09:43 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 11:38 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2011-04-13 11:42 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 11:47 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2011-04-13 11:49 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 11:45 (UTC) - Expand

(no subject)

[identity profile] w00dy.livejournal.com - 2011-04-13 11:59 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2011-04-13 12:01 (UTC) - Expand

(no subject)

[identity profile] w00dy.livejournal.com - 2011-04-13 12:05 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 12:41 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2011-04-13 12:45 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 18:32 (UTC) - Expand

(no subject)

[identity profile] w00dy.livejournal.com - 2011-04-13 18:47 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 18:58 (UTC) - Expand

(no subject)

[identity profile] w00dy.livejournal.com - 2011-04-13 19:17 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 19:26 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2011-04-13 19:49 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-14 00:30 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2011-04-14 06:48 (UTC) - Expand

(no subject)

[identity profile] w00dy.livejournal.com - 2011-04-14 08:00 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2011-04-14 08:03 (UTC) - Expand

(no subject)

[identity profile] w00dy.livejournal.com - 2011-04-13 19:53 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 11:41 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 11:53 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 12:29 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 12:59 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 18:39 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 11:49 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 11:51 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 10:03 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-13 10:05 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-13 08:48 (UTC) - Expand

[identity profile] vp.livejournal.com 2011-04-09 04:01 am (UTC)(link)
С типизацией проблемы в том смысле, что все или строки, или числа. Уже какие-нибудь простейшие операции с условиями, допустим, по диапазону дат, вырождаются в неудобство преобразовать это в числа и выбирать по ним. То есть глядя в базу будет неочевидно, что там - нет встроенного представления для дат-времени.
И в таком все стиле..
Для очень мелких вещей и встроенных хранилищ - да, вполне подходит.

[identity profile] sgalitsky.livejournal.com 2011-04-09 01:22 pm (UTC)(link)
не знал от этого проблем, кстати. наоборот, - весьма удобно, без привязки к типам.
а насчет даты-времени - так вот оно - чего искать-то? http://www.sqlite.org/lang_datefunc.html

[identity profile] vp.livejournal.com 2011-04-09 06:38 pm (UTC)(link)
Ну это называется "стоя в гамаке" :)

[identity profile] sgalitsky.livejournal.com 2011-04-10 02:47 pm (UTC)(link)
это называется "не баг, но - фича"..)
- одну функцию написать для времени/даты - много ли надо..

[identity profile] vp.livejournal.com 2011-04-10 05:22 pm (UTC)(link)
Дык это опять-таки будет выполняться не сервером, а клиентом, это раз. Два: выведя такую базу в текстовый файл и т.п. нельзя будет по-человечески что-то найти, грепнуть и т.п. То есть мы жестко завязываемся на наш тул. с которым и только с которым мы теперь сможем работать.
Не есть правильный подход, имхо.

[identity profile] fraks-nsk.livejournal.com 2011-04-11 01:59 am (UTC)(link)
> весьма удобно, без привязки к типам.

Это писец. офигенный программер :)
Вы походу кроме своего питона ничего освоить не смогли :)

[identity profile] sgalitsky.livejournal.com 2011-04-11 08:15 am (UTC)(link)
я где-то себя программером обозвал?

[identity profile] fraks-nsk.livejournal.com 2011-04-11 08:25 am (UTC)(link)
А тогда собственно какого... вы тут такие всеобъемлющие выводы делаете? Не нашли у Firebird ручек покрутить, внутри ничего не умеем - значит сервер плохой, в нем нет того что я умею. :)

[identity profile] sgalitsky.livejournal.com 2011-04-11 08:30 am (UTC)(link)
Вам никто никогда не говорил, что поспешные выводы делать - удел недалеких людей?
Из того, что я не называю себя программистом (я работаю сейчас DBA) вовсе не следует, что я не знаю ни одного языка программирования и никогда не занимался разработкой ПО.
какого ... Вы тут "умничаете"?

[identity profile] fraks-nsk.livejournal.com 2011-04-11 08:41 am (UTC)(link)
Из того чем вы тут обмолвились картинка вас как разработчика ПО у меня лично сложилась весьма конкретная. Лепить дату строкой, разбирать ее обратно на клиенте и еще считать что это удобно - нет слов...

Перекладывать весь контроль ввода на программу - аналогично.

То что в Firebird нет практически ничего чего бы мог повертеть абстрактный DBA - это не проблема сервера, это проблема конкретного DBA :)

Считать что ценнось базы определяется ее размером и база менее 1Тб несущественна, а менее 1Гб - вообще ненужная поделка... Ну, разве что с вашей колокольни. Вы вероятно зп от размера базы получаете от того и такое мнение :)

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-11 08:49 (UTC) - Expand

(no subject)

[identity profile] fraks-nsk.livejournal.com - 2011-04-11 08:58 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2011-04-11 09:00 (UTC) - Expand

(no subject)

[identity profile] w00dy.livejournal.com - 2011-04-11 09:05 (UTC) - Expand

(no subject)

[identity profile] metaclass.livejournal.com - 2011-04-11 09:10 (UTC) - Expand

(no subject)

[identity profile] w00dy.livejournal.com - 2011-04-11 09:15 (UTC) - Expand

(no subject)

[identity profile] w00dy.livejournal.com - 2011-04-11 09:02 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-11 09:14 (UTC) - Expand

(no subject)

[identity profile] w00dy.livejournal.com - 2011-04-11 09:18 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-11 09:27 (UTC) - Expand

(no subject)

[identity profile] w00dy.livejournal.com - 2011-04-11 10:10 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-11 10:28 (UTC) - Expand

(no subject)

[identity profile] w00dy.livejournal.com - 2011-04-11 11:20 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-11 11:33 (UTC) - Expand

(no subject)

[identity profile] w00dy.livejournal.com - 2011-04-11 12:22 (UTC) - Expand

(no subject)

[identity profile] sgalitsky.livejournal.com - 2011-04-11 13:00 (UTC) - Expand

[identity profile] sgalitsky.livejournal.com 2011-04-11 08:38 am (UTC)(link)
Вообще-то, слышать что-то вроде "Вы походу кроме своего питона ничего освоить не смогли" от собеседника, до сих пор программирующего на дельфях мелочевку для розничной торговле под firebird,- это таки да.
Круче было бы, если бы Вы кроме вижуал бейсика ничего не видели..

[identity profile] fraks-nsk.livejournal.com 2011-04-11 08:54 am (UTC)(link)
К сожалению VB не владею :)

[identity profile] sgalitsky.livejournal.com 2011-04-11 09:00 am (UTC)(link)
Что так? Не осилили?

[identity profile] fraks-nsk.livejournal.com 2011-04-11 09:14 am (UTC)(link)
Ага. Не нравится.
Человеку воспитанному на Фортране и Паскале трудно привыкать к VB. Да я и вообще новое уже с трудом осваиваю.

[identity profile] fraks-nsk.livejournal.com 2011-04-11 08:55 am (UTC)(link)
Во-первых не мелочевку а во вторых для оптовой в первую очередь.

Пошло меряние пиписками...

[identity profile] sgalitsky.livejournal.com 2011-04-11 09:01 am (UTC)(link)
конечно, оптовой. извините, если обидел.