metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2009-12-02 09:19 pm

Границы применимости решений

Вот тут и тут идут практически идентичные срачи на тему "Зачем юзать (дорогую, энтерпрайзную, сложную) технологию А, если можно воспользоваться (простой, дешевой, десктопно-наколенной) технологией Б?".

А я, честно говоря, совсем уже потерял нить рассуждений, и не могу толком ответить на этот вопрос. Т.е. для меня вещи типа "бухгалтерию на dbf файлах в 2009 году не делают" и "mysql не является базой подходящей для систем со сложными расчетами и высокой нагрузкой" являются как бы самоочевидными, поэтому поиском аргументов на эту тему я себя никогда не утруждал.

Ну вот всегда, когда сталкивался с решениями на основе dbf (клариона, фокспро, клиппера, access, итд) - всегда очевидно, что разработчики блядь говно тупые уроды ебаные троечники по которым агрогородки плачут отстали от современных технологий, неважно по какой причине, соотвественно, они не способны принимать участие в современных разработках, у них нет для этого мыслительных категорий.
То же самое mysql, который в старых версиях, насколько я помню, вообще толком никакой логики на стороне сервера не содержал и транзакции умел только с одним типом хранилища. Для меня самоочевидно, что транзакции - это благо. И самоочевидно, зачем нужны вещи типа Software Transactional Memory и зачем нужны проверки целостности на стороне БД. Но большому количеству разработчиков это просто непонятно - я уже писал когда-то про попавшуюся под руки базу, в которой FK не было вообще.

С другой стороны - у меня в проекте Firebird молотит данные сотнями записей в секунду на обычном железе, с одновременными массовыми перерасчетами, и ничего. Хотя как бэ и СУБД тоже из разряда тех, на которые тупые линуксоиды наезжают в стиле "это же говно, потому что я так считаю".

И вот получается, что границы применимости решений (в данном случае СУБД) становятся совершенно непонятными. Очевидно, что при желании все недостатки отдельной СУБД можно обойти в программном коде. В экстремальных случаях это получится полное повторение функционала, уже существующего в другой СУБД, и это не всегда плохо - некоторые вещи настолько сделаны чрезмерно сложно и методом постепенного добавления фич, что переписывание с нуля их только улучшит.
Но вот где граница - "берем Postgresql, программиста и линуксоида на обслуживание" vs "покупаем Oracle, покупаем DBA, покупаем страшный софт за бешеные бабки и считаем что мы круты" - непонятно. Исключая, конечно, момент откатов за софт, тогда второй случай безальтернативен.

[identity profile] a-sure.livejournal.com 2009-12-03 01:51 pm (UTC)(link)
за постгрес сейчас не скажу, 7 лет назад - на С.
Оракл на юнихах (лялих,словарис) позволяет дописывать на С и жабе.
ПОд виндой - за С не скажу, жабаВМ у него своя, так что тоже можно.

Re: нюню

[identity profile] metaclass.livejournal.com 2009-12-03 01:56 pm (UTC)(link)
Не, если автозамена литералов на переменные для того, чтобы использовать скэшированный план приводит к нарушениям логики запросов - это таки показатель, что у разработчиков сервера не все в порядке с головой.

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

Re: нюню

[identity profile] a-sure.livejournal.com 2009-12-03 02:01 pm (UTC)(link)
1) запроса я не видел - только его начало
2) сколько похожих запросов, отличающихся только литералами, у них там еще?

Re: нюню

[identity profile] gds.livejournal.com 2009-12-03 02:05 pm (UTC)(link)
логику разбора и влияние данной опции на разбор и поиск плана я понимаю. На пару с дба честно накопали всю информацию, осмыслили, оба в ступоре. Более того, не представляете, как меня лично удивило влияние этой опции на выполнение запроса. Ещё может быть интересно, что по структуре этот запрос только один такой (не было других подобных; например, берущих из того же набора таблиц), и в нём нет bind variables вообще.
Пусть он заменяет литералы на bind variables, я не против (даже скорее за это), но зачем же неправильно вычислять результат применения "and" к двум предикатам? Один из ключевых моментов оптимизации -- неизменная семантика. А тут -- ёбаный стыд какой-то.

[identity profile] theiced.livejournal.com 2009-12-03 03:56 pm (UTC)(link)
я готов решить проблемы ВСЕЙ рашки. очень быстро и просто. ВСЕХ перестрелять поголвно. да - под раздачу попадут и достойные люди, но их единицы на всю рашку.

[identity profile] theiced.livejournal.com 2009-12-03 03:57 pm (UTC)(link)
высококвалифицированные постгрешники получают больше чем высококвалифицированные ораклисты. вопросы? :)

Re: нюню

[identity profile] a-sure.livejournal.com 2009-12-03 04:44 pm (UTC)(link)
1) он не заменяет литералы на Bind - я специально писал "псевдо". Мне счас негде уже (я дома) искать, но лежала где-то нота с металинка про поведение оптимизатора. Там скорее все литералы заменяются на одно и тоже для каждой позиции, после чего шарится в кеше уже разобранных запросов на предмет посимвольного совпадения.
2) второй источник засады - bind peeking, скорее всего именно эта штука вам всё и испортила. Это такой способ "припомнить", что было прошлый раз. И на основании этого строится план, в т.ч. и вычисление логики - "если первый предикат and уже ложен, второй вычислять не будем".


У каждого сложного продукта есть какие-то свои выверты, никуда ни денешься.

From: udpn

(Anonymous) 2009-12-03 04:56 pm (UTC)(link)
Оффтоп: должен пожаловаться на дистерминию относительно "антропного принципа".

[identity profile] madeveloper.livejournal.com 2009-12-03 07:22 pm (UTC)(link)
Честно говоря, с Оракла я слез 7 лет назад. На 8.1.7 никаких хлопот небыло. Потом встречи стали эпизодическими ;)

[identity profile] madeveloper.livejournal.com 2009-12-03 07:45 pm (UTC)(link)
Че-то тогда как-то странно... С оракла я слез 7 лет назад, и эти годы занимался и Firebird и MySQL и MSSQL. И постоянно не находил в них чего-то привычного и удобного. Хотя MSSQL значительно подрос, к нему меньше всего вопросов...

[identity profile] kurilka.livejournal.com 2009-12-03 08:05 pm (UTC)(link)
Корпорации Oracle почти уже :)

Re: нюню

[identity profile] plumqqz.livejournal.com 2009-12-04 08:17 am (UTC)(link)
Не, если автозамена литералов на переменные для того, чтобы использовать скэшированный план приводит к нарушениям логики запросов - это таки показатель, что у разработчиков сервера не все в порядке с головой.

Причем тут разработчики сервера? Есть два одинаковых запроса с разными параметрами - они имеют разные планы в зависимости от параметров, и выполняются, соответственно, по разному. (И разработчики сервера удолбались объяснять, что порядок строк без order by произвольный) Строки выборки, соответственно, могут идти в разном порядке. По всей видимости, приложение где-то неявно завязано на определенный порядок строк резалтсета - и в результате при его изменении получаем проблемы.

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

Виноват во всем, разумеется, Оракл.

Re: нюню

[identity profile] metaclass.livejournal.com 2009-12-04 08:27 am (UTC)(link)
А где там порядок строк, там же три поля в одной строке?

Как план запроса и замена литералов параметрами может вызвать такое, что: P1=True P2=True, но P1 and P2=False - мне непонятно, это вещи из разряда "в военное время синус может достигать 4"

Описанные грабли здесь к делу, по моему, не относятся.

Re: нюню

[identity profile] plumqqz.livejournal.com 2009-12-04 08:32 am (UTC)(link)
Лехко:
select 1
from table where
(select val from table1 where rownum<2 and sum>N order by sum desc)
[Error: Irreparable invalid markup ('<m [...] </pre>') in entry. Owner must fix manually. Raw contents below.]

Лехко:
<pre>
select 1
from table where
(select val from table1 where rownum<2 and sum>N order by sum desc)<M and
P2=K
</pre>

[identity profile] oldmann.livejournal.com 2009-12-07 04:43 am (UTC)(link)
ребе, это просто критическая надежность, а не Кровавый Энтерпрайз. например, АСУТП должна иметь критическую надежность, но делается она из простых компонентов и по несложной логике. Кровавый Энтерпрайз - это, как минимум, пара заводов в разных часовых поясах, и московский офес, управляющий всем. Истинный Кровавый Энтерпрайз это как у меня - когда на борту девять часовых поясов, а численность персонала до недавнего времени миллионами измерялась.

[identity profile] oldmann.livejournal.com 2009-12-07 04:51 am (UTC)(link)
это очень просто. аутсорсные уеб-проекты должны быть прозрачны для инвесторов. тех, кто финансирует. а значит, должны строиться на понятных и доказавших свою эффективность технологиях. типа жабы и оракла, да.

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

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

[identity profile] oldmann.livejournal.com 2009-12-07 04:58 am (UTC)(link)
1. автоматизацию бизнес-процесса "ремонт подстанции Перепердюйская Хабаровского Края" в наших масштабах представляете? сколько он тащит за собой транзакций, от движек в финплане, графике платежей, логистике запчастей, закрытия актов по работам и т.д.? и сто будет, если своевременно подстанцию не отремонтировать, а она возьми и наебнись зимой, в сорокоградусный мороз? это вам не миски супа мексам считать.

2. OeBS вообще странная система. на ней стоит клеймо Связьинвеста, а там воруют-с.

и это. сравнения с газпромом/и железкой не канают. там требуется немножко другой результат, нежели повышение эффективности управления через автоматизацию. вон ЖыДы купили сорок (!) мейнфреймов, а они у них тупо стоят третий год. зато освоено.

[identity profile] metaclass.livejournal.com 2009-12-07 01:45 pm (UTC)(link)
Так я, в общем, про это и пишу. Т.е. хотелось бы "повышения эффективности через автоматизацию". Или хотя чтобы она не снизилась, эта эффективность, чтобы бухгалтера в екселе и на самописных прожках местных программистов не считали. А с местными сука-псами-менеджерами может получится, что проект начнут, бабло попилят, а до конца не доведут, и будет еще хуже чем раньше. Так лучше пусть на чем-нибудь попилят, что можно заставить работать без дальнейших затрат бабла. Оракл, SAP R/3 и прочая тяжесть в таких условиях не заработают.

Page 4 of 4