Границы применимости решений
Вот тут и тут идут практически идентичные срачи на тему "Зачем юзать (дорогую, энтерпрайзную, сложную) технологию А, если можно воспользоваться (простой, дешевой, десктопно-наколенной) технологией Б?".
А я, честно говоря, совсем уже потерял нить рассуждений, и не могу толком ответить на этот вопрос. Т.е. для меня вещи типа "бухгалтерию на dbf файлах в 2009 году не делают" и "mysql не является базой подходящей для систем со сложными расчетами и высокой нагрузкой" являются как бы самоочевидными, поэтому поиском аргументов на эту тему я себя никогда не утруждал.
Ну вот всегда, когда сталкивался с решениями на основе dbf (клариона, фокспро, клиппера, access, итд) - всегда очевидно, что разработчикиблядь говно тупые уроды ебаные троечники по которым агрогородки плачут отстали от современных технологий, неважно по какой причине, соотвественно, они не способны принимать участие в современных разработках, у них нет для этого мыслительных категорий.
То же самое mysql, который в старых версиях, насколько я помню, вообще толком никакой логики на стороне сервера не содержал и транзакции умел только с одним типом хранилища. Для меня самоочевидно, что транзакции - это благо. И самоочевидно, зачем нужны вещи типа Software Transactional Memory и зачем нужны проверки целостности на стороне БД. Но большому количеству разработчиков это просто непонятно - я уже писал когда-то про попавшуюся под руки базу, в которой FK не было вообще.
С другой стороны - у меня в проекте Firebird молотит данные сотнями записей в секунду на обычном железе, с одновременными массовыми перерасчетами, и ничего. Хотя как бэ и СУБД тоже из разряда тех, на которые тупые линуксоиды наезжают в стиле "это же говно, потому что я так считаю".
И вот получается, что границы применимости решений (в данном случае СУБД) становятся совершенно непонятными. Очевидно, что при желании все недостатки отдельной СУБД можно обойти в программном коде. В экстремальных случаях это получится полное повторение функционала, уже существующего в другой СУБД, и это не всегда плохо - некоторые вещи настолько сделаны чрезмерно сложно и методом постепенного добавления фич, что переписывание с нуля их только улучшит.
Но вот где граница - "берем Postgresql, программиста и линуксоида на обслуживание" vs "покупаем Oracle, покупаем DBA, покупаем страшный софт за бешеные бабки и считаем что мы круты" - непонятно. Исключая, конечно, момент откатов за софт, тогда второй случай безальтернативен.
А я, честно говоря, совсем уже потерял нить рассуждений, и не могу толком ответить на этот вопрос. Т.е. для меня вещи типа "бухгалтерию на dbf файлах в 2009 году не делают" и "mysql не является базой подходящей для систем со сложными расчетами и высокой нагрузкой" являются как бы самоочевидными, поэтому поиском аргументов на эту тему я себя никогда не утруждал.
Ну вот всегда, когда сталкивался с решениями на основе dbf (клариона, фокспро, клиппера, access, итд) - всегда очевидно, что разработчики
То же самое mysql, который в старых версиях, насколько я помню, вообще толком никакой логики на стороне сервера не содержал и транзакции умел только с одним типом хранилища. Для меня самоочевидно, что транзакции - это благо. И самоочевидно, зачем нужны вещи типа Software Transactional Memory и зачем нужны проверки целостности на стороне БД. Но большому количеству разработчиков это просто непонятно - я уже писал когда-то про попавшуюся под руки базу, в которой FK не было вообще.
С другой стороны - у меня в проекте Firebird молотит данные сотнями записей в секунду на обычном железе, с одновременными массовыми перерасчетами, и ничего. Хотя как бэ и СУБД тоже из разряда тех, на которые тупые линуксоиды наезжают в стиле "это же говно, потому что я так считаю".
И вот получается, что границы применимости решений (в данном случае СУБД) становятся совершенно непонятными. Очевидно, что при желании все недостатки отдельной СУБД можно обойти в программном коде. В экстремальных случаях это получится полное повторение функционала, уже существующего в другой СУБД, и это не всегда плохо - некоторые вещи настолько сделаны чрезмерно сложно и методом постепенного добавления фич, что переписывание с нуля их только улучшит.
Но вот где граница - "берем Postgresql, программиста и линуксоида на обслуживание" vs "покупаем Oracle, покупаем DBA, покупаем страшный софт за бешеные бабки и считаем что мы круты" - непонятно. Исключая, конечно, момент откатов за софт, тогда второй случай безальтернативен.
no subject
я в том адовом треде вже писал. оракель нужен ТОЛЬКО в том случае если есть относительно большие (>100GB) объёмы данных и есть только тушкан мега-оракель-дба (ака тупое быдло ничего кроме рутинного обслуживания оракля не умеющая). постгре при больших объёмах всё же требует квалификации, но работает лучше.
Почему лучше:
1. быстрее
2. фичастее (а в оракле нетуть WITH RECURSIVE ня ня ня)
3. предсказуемее
4. можно _быстро_ получить вменяемую поддержку - что платную что на офф канале ирц - там и разработчики тусят и мощные визарды (мне вот в ирц за 15 минут оччччень нетривиальные вещи разжёвывали, брали мои 100меговые дампы и показывали на факапы за час итд - саппорт оракля который может ваш вопрос на пол года отложить тут рядом не срал).
no subject
2. Нет. Потому что уже давно есть CONNECT BY. Списками фич не советую даже пытаться меряться.
3. Что, и хинты можно руками любые прописывать?
4. Ни разу не приходилось в суппорт обращаться. Зато обучиться можно вполне себе достойно.
no subject
нюню
Вы хотите сказать, что вопросы у вас НАСТОЛЬКО уникальны, что на них ответа нет даже на sql.ru ??? Пример можно ? (Хоть бы и в ЛС).
А насчет иродов - если у вас из личного авто будут из бака бензин регулярно пиздить, что, замочек не поставите?
Re: нюню
вопросы -- например, из недавнего, запрос
в некоторых строчках выдавал res1=1, res2=1, res3=0.
Причём стабильно, перегрузка базы не помогала.
Благодаря зоопарку бд мы случайно обнаружили, что вызывает подобное поведение. Но -- зацените всю красоту!
Но это относительно самой базы данных. Радость доставляют также неимоверно кривые oracle forms + reports. Не передать.
У меня память на плохие вещи не очень, да и часто эти вопросы формулируются в стиле "почему оно вылетело", "почему оно выдало внутреннюю ошибку", "почему оно не сделало импорт базы и ничего не ругнулось", и в таком духе, поэтому конструктивного разбирательства не выйдет.
Re: нюню
Re: нюню
Re: нюню
Зря.
Чтобы не сваливаться в оффтоп - вот еще один компонент "границы": наличие или готовность купить лицензию на ОРАКЛ.
Re: нюню
Re: нюню
1)я не имею привычки фантазировать. Есть прога (железка), и она устроена так, как устроена. Я предпочитаю знать, как:
"CURSOR_SHARING=SIMILAR causes statements that may differ in some literals, but are otherwise identical, to share a cursor by replacing the literals with system-generated bind variables, unless the literals affect either the meaning of the statement, or the degree to which the plan is optimized.
With CURSOR_SHARING=SIMILAR we look at replaced literals in some query predicates during optimization, to calculate the predicate selectivity. This is the normal effect of BIND PEEKING.
A side effect of this bind peeking is to potentially mark the bind as unsafe, so it is no longer shareable. This is done for range predicates (eg <, >=) or equality predicates in the presence of a histogram on the column. The purpose of this is to ensure we only share cursors when bind values lead to the same selectivity.
In 9i there was a problem (Bug 3668224) which meant that we could not peek bind variables in predicates if they were under operators, for example WHERE ENAME = UPPER(:b1).
The fix for this problem is in patchsets 9.2.0.6 and 10.2.0.3, but for 9i release it has to be explicitly enabled by setting event 38044.
There was also a follow-on problem (Bug 4359367) which meant that we were peeking excessively (in circumstances other than those appropriate for cursor_sharing=similar) but this is also fixed in 10.2.0.3."
Процесс разбора тоже документирован. Из касающихся вопроса - сначала идет проверка синтаксиса, потом, если сказано cursor_sharing=similar, литералы заменяются на псевдопеременные. Потом идет поиск уже разобранного запроса. И если находится такой же, то берется его план на исполнение. А сколько в тех запросах литералов, и как они раскиданы и что получается после bind_peeking - только по месту.
2) select case ... вкупе с упоминанием, что там тысячи таких, мне тоже нормальным не кажется. Но пока я не разобрался, откуда оно выросло - говном,хрупким и прочими эпитетами не разбрасываюсь.
Re: нюню
Я не понимаю, как можно результат этого запроса считать неправильно, здесь нет никаких неоднозначностей, тупая логика и однозначный результат. Возможно, тут есть что-то не упомянутое, потому что если сервер себя ведет так - это ад.
Re: нюню
2) сколько похожих запросов, отличающихся только литералами, у них там еще?
Re: нюню
Причем тут разработчики сервера? Есть два одинаковых запроса с разными параметрами - они имеют разные планы в зависимости от параметров, и выполняются, соответственно, по разному. (И разработчики сервера удолбались объяснять, что порядок строк без order by произвольный) Строки выборки, соответственно, могут идти в разном порядке. По всей видимости, приложение где-то неявно завязано на определенный порядок строк резалтсета - и в результате при его изменении получаем проблемы.
Тут наступили на аж на четыре грабли:
Грабля первая - не надо завязываться на определенный порядок строк
Грабля вторая - не трогай то, что влияет на не до конца понятные тебе вещи
Грабля третья - используйте параметры, а не литералы. Если используете литералы - четко понимайте, для чего это вы делаете.
Грабля четвертая - если использовать процедуры, то вышеперечисленные грабли обходятся автоматически: так просто на них не наступишь, это надо уметь делать.
Виноват во всем, разумеется, Оракл.
Re: нюню
Re: нюню
Re: нюню
Пусть он заменяет литералы на bind variables, я не против (даже скорее за это), но зачем же неправильно вычислять результат применения "and" к двум предикатам? Один из ключевых моментов оптимизации -- неизменная семантика. А тут -- ёбаный стыд какой-то.
Re: нюню
2) второй источник засады - bind peeking, скорее всего именно эта штука вам всё и испортила. Это такой способ "припомнить", что было прошлый раз. И на основании этого строится план, в т.ч. и вычисление логики - "если первый предикат and уже ложен, второй вычислять не будем".
У каждого сложного продукта есть какие-то свои выверты, никуда ни денешься.
no subject
no subject
no subject
Но на комплекс где стоит 100% MSSQL я не буду его ставить.
1. Админов местных надо обучать будет. Если эти лемминги испугаются и оперативно не подымут что то в течение получаса, то за невыход рекламы, на нас через суд повесят пару десятков штук ойро.
2. У нас нет 100Gb баз. 50Gb - да может быть, не больше.
3. У нас нет логики в базе.
4. Не вижу я смысла на Win юзать Postgree, MySQL, Oracle
Это не отменяет того что все остальные DB надо обязательно пощупать и выяснить те самы рамки применимости, о которых вопрошал автор корневого сообщения :)
no subject
no subject
no subject
no subject
Виндовый сервер для меня просто инструмент, его требует заказчик и платит деньги, при этом у нас есть отработанный набор инструментов для разработки обкатанные на куче проектов.
Точно так же мы работаем с Linux(для кластерных хранилок StorNext, ExaStore), MacOSX(для NLE станций).
Свои задачи WinServer выполняет. Как только Linux будет иметь инфраструктурные возможности (не просто "это в принципе можно наваять", а будет стандартно это делать) для наших задач и поддержка и сопровождение будет финансово выгодна - вопросов не будет.
no subject
no subject
Вот работают третий год 5 серверов Вонь2003, Оракл 9.2.0.6.
Я плююсь, конечно, мне до них RDP ходить приходится в соседнюю область. Но проблемы были только с одним - распиздяям одминам моих 3х китайских предупрждений о том, что UPS надо настроить, было мало. Пришлось подключить главбуха.
Остальные 4 проблем за 3 года не вызвали. Может, таки начнем смотреть на задачу в комплексе? Или Вы готовы саппортить пол-россии в одно лицо?
no subject