Лыцарь пичальнава образа - про SQL [entries|archive|friends|userinfo]
silly_sad

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

про SQL [Apr. 21st, 2011|03:40 pm]
Previous Entry Add to Memories Tell A Friend Next Entry
я так думаю что DDL это один сплошной ОГРОМНЫЙ проёб в SQL, и (быть может) он играет не последнюю роль в формировании (плохо осознанного) общественного недовольства эскуэлем.

АД состоит в том что DDL формулирует не состояние схемы данных а ПЕРЕХОД в него.

естественно этот переход жостко зависит от начального состояния, подразумевает его, и не приведёт к нужному результату если этот состояние изменится.
поэтому:
(1) полностью разрушен цикл отладки -- ошибочный DDL может изменить состояние, значит сразу после возникновения ошибки ваш исходник становится негодным для внесения в него исправлений -- пишите новый, пригодный для нового состояния схемы данных (такой же одноразовый как и предыдущий).
Конечно можно придумать специальные условия, чтобы цикл отладки возсоздать, но осадочек остался.
(2) уничтожена переносимость -- со своим DDL в другую базу не суйся, никто вам не гарантирует одинаковости исходных состояний двух инстансов базы (сидите изобретайте специальные условия чтобы самостоятельно гарантировать эту идентичность, а потом удивляйтесь раз за разом откуда разница пролезла)
(3) затруднено тиражирование(пересоздание) БД -- ваш инит-скрипт годен только для чистой БД. вносите изменения в инит-скрипт -- рабочий инстанс out-of-date; вносите изменения в рабочий инстанс -- инит-скрипт out-of-date. И трахайтесь с синхронизацией как хотите. На практике люди просто забивают на человеко-читаемые инит-скрипты и таскают за собой дампы со всемы вытекающими.

вещь в себе получается.

Гораздо было бы более ЗДРАВО (и более адекватно вцелом принятому в SQL уровню абстракции) формулировать СОСТОЯНИЕ, а переход в него пусть система ищет а не програмист!
LinkLeave a comment

Comments:
[User Picture]
From:[info]daddym
Date:April 21st, 2011 - 02:42 pm
(Link)
Ну сиквель это вообще УГ.
Как еще объяснить то что профессиональное программирование на нем это выписывание хинтов и трассировка оптимизатора.
From:[info]silly_sad
Date:April 21st, 2011 - 02:45 pm
(Link)
это всё детские болезни.
я же вам фундаментальную проблему выкопал.
вплоть до того что это создаёт разницу в уровнях абстракции в разных частях одного подхода.
From:[info]ludmilin.livejournal.com
Date:May 1st, 2011 - 05:28 am
(Link)
Никакой проблемы вы не выкопали. Вы не понимаете для чего нужны БД и как их используют в реальной жизни. Поэтому не понимаете что ваши уровни абстракции никому не нужны кроме лично вас. Схема данных в приличной БД меняется максимум раз в пару лет. При этом в продакшине такие изменения производят ТОЛЬКО после серьезного тестирования - в первую очередь тестирования процедуры отката до предыдущего состояния а не наката новой версии. Поэтому ваш инит-скрипт и живет только один раз и после этого умирает. Поэтому он может и часто должен быть уникален. Как уникальна и каждая БД.

> И трахайтесь с синхронизацией как хотите.

Ну варианты есть, например WFS - но пользы от него в реальной жизни как с козла молока.

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

DELETE FROM MyTable WHERE date<'01012011'

для таблицы с сотнями миллионов записей когда нужно удалить старые записи. Выдача такой инструкции серверу в продакшине может привести к увольнению гения. Поэтому делают это "антитеоретически" - в цикле с незначительным количеством удаляемых записей за один цикл и задержками между циклами. И отправляют в плаванье на пару дней - пока само не закончится. Иначе мы можем поставить раком всю систему на пару часов: записи будут как и требовалось - удалены, но вот несколько тысяч юзеров будут курить бамбук эти пару часов - ожидая завершение гениальной транзакции. Сколько стоит простой конвеера, например, на заводах Ford вы знаете? Вот что сделают с тем кто его остановит на пару часов? Поможет ли ему рассказ о том что он делал теоретически все верно - и будет тыкать пальцем в учебник? Вот вы будучи владельцем завода с таким гением-подчиненым, выдали бы ему премию или дали бы ему пинка под зад?
From:[info]silly_sad
Date:May 1st, 2011 - 07:28 am
(Link)
вы производите впечатление очень образованного сумасшедшего.
вы все слова умные знаете. а мысль постоянно СОСКАКИВАЕТ.
получается полный бред.
From:[info]ludmilin.livejournal.com
Date:May 1st, 2011 - 10:09 am
(Link)
:) Моя одна родственница с 6 классами образования говорила обо примерно то же что и вы: "ты, говорила она, дурной но умный" Дурным я был потому что говорил те вещи которые она не понимала и считала поэтому дуростью, а умным - потому что все что я говорил сбывалось.

Про отладчик DDL может писать только идиот который не имеет представления как там унутри работают RDBMS. Я полагаю для вас секретом является мысль ПОЧЕМУ нельзя, допустим, добавить новое поле в таблицу и присандалить ему автоинкриментацию в одном ALTER TABLE. Не, чисто по синтаксису можно, но человека так делающего к базам данных подпускать нельзя.

Кстати за мой бред мне в одной из стран золотого миллиона платят топовую зарплату в означеной области. То есть больше меня получают единицы. И работаю я исключительно только на компании с мировыми именами.
From:[info]silly_sad
Date:May 1st, 2011 - 10:25 am
(Link)
успешник detected :-)
From:[info]ludmilin.livejournal.com
Date:May 1st, 2011 - 10:54 am
(Link)
Я просто грамотный специалист в отличии от разных фантазеров.

Так вы может объяснить почему я упомянул что за такой ALTER TABLE мудака-спеца его предложившего нужно гнать ссаными тряпками и сраными вениками от RDBMS? Готов поставить деньги - вы даже не догадываетесь о причине, специялисть-анивиндусятньик :)
From:[info]silly_sad
Date:April 21st, 2011 - 02:47 pm
(Link)
нет. меня категорически не устроит идея писать своё хранилище данных.
кроме очень специальных случаев.
From:[info]ludmilin.livejournal.com
Date:May 1st, 2011 - 05:46 am
(Link)
Пишут порой однако. Например Barclay Capital - они писали свой движок для приложения работающего с акциями, но мне так показалось, что писать они это начали всилу слабого знания баз данных. Про существование планов выполнения запросов и их кеширования, их ведущие разработчики не знали до встречи со мной. Поэтому возможно и стали изобретать велосипед. Хотя может они были и правы - что им нужно бещеное быстродействие и минимум разных секюритей в из базе
From:[info]silly_sad
Date:May 1st, 2011 - 07:30 am
(Link)
да. и ещё у вас огромные проблемы с пониманием русскоязычного текста.
From:[info]ludmilin.livejournal.com
Date:May 1st, 2011 - 10:13 am
(Link)
Ой, они что ли с вами тоже консультировались? Вы хоть представление имеете что значат те 2 слова что я упомянул? :)

И русский язык не понимаете как раз вы. Я готов был бы поспорить с теми разрабочиками что их задача решалась стандартной какой-нибудь RDBMS без написания "своё хранилище данных". Как правило "очень специальных случаев" - это случай безграмотного архитектора
From:[info]ludmilin.livejournal.com
Date:May 1st, 2011 - 05:04 am
(Link)
> Как еще объяснить то что профессиональное программирование на нем это выписывание хинтов и трассировка оптимизатора.

Элементарно - потому что на быстродействие (это главный фактор в БД дефакто) влияет структура и статистика данных, а так же параметры и настройки железа. Посколько эти параметры в 99% случаев оптимизатору до вызова запроса неизвесты, но могут ЗНАЧИТЕЛЬНО повлиять на быстродействие (милисекунды или часы - лехко) - поэтому построение плана запросов сводится на самом деле просто к перебору (хоть и оптимизированому) полученых параметров. Как известно, увеличение количества параметров приводит к увеличению комбинаций в геометрической прогрессии. Таким образом перебор вариантов может занять дольше времени чем собственно выполнение запроса. Поэтому оптимизатор выбирает наиболее оптимальный по каким-то критериям план запроса а не самый-самый лучший.
From:[info]daddym.livejournal.com
Date:May 1st, 2011 - 12:16 pm
(Link)
Я кагбэ скромно напомню что SQL вводился в свое время именно как прозрачная реляционная абстракция, которая будет эффективно обрабатывать реляционную алгебру. Даже индексы рассматривались не как средство доступа, а для соблюдения номальных форм. Еще правда, хаха как естественный язык.
Так вот, поскольку все запросы идут через энджин, то жалобы на неизвестность данных или статистики запросов, относятся исключительно к убогости разработчиков. Кстати большая часть параметров и настроек железа энджину известна.
Просто MS действительно революционизировал мир разработки ПО. Программы должны писать таджики. Ну на крайний случай индусы.
From:[info]ludmilin.livejournal.com
Date:May 1st, 2011 - 12:44 pm
(Link)
> Я кагбэ скромно напомню что SQL вводился в свое время именно как ...

безусловно. С тех пор появилось много чего - ХМЛ например и прочее...

> Даже индексы рассматривались не как средство доступа, а для соблюдения номальных форм.

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

> Так вот, поскольку все запросы идут через энджин, то жалобы на неизвестность данных или статистики запросов, относятся исключительно к убогости разработчиков.

:) вы делаете мне смешно. Вы как бы забываете что это система

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

Так что по поводу известности данных - это вы слишком оптимистичны. Сколь не были бы гениальны разработчики, они не могут повысить быстродействие винтов и ширину каналов передачи данных. Хотя теоретически можно испльзовать уже SSDRAM и практически насрать на все эти мелочи, но стоимость решения будет такой что вам не захочется вам такого решения.

Кстати, запросы идут не через один энджин, а минимум через 2

> Кстати большая часть параметров и настроек железа энджину известна.

Разумеется. Неизвестно лишь его использование на тот или иной момент времени. То есть буквально - отдадут ли вам 100% RAM или какой-то более серьезный процесс сожрет процентов 70. А в зависимости от этого нужно использовать либо один индекс, либо другой.

> Программы должны писать таджики. Ну на крайний случай индусы.

Вы не поверите, но львиная доля MS SQL написана русскими :) Так что если вам хочется на кого-то сильно плюнуть.... вам далеко идти не прийдется.

Кстати, у меня есть немало знакомых работающих в том же Oracle - так вот нынче они на SQL очень косо посматривают - отъедает оный у них рынок.
From:[info]ludmilin.livejournal.com
Date:May 1st, 2011 - 12:48 pm
(Link)
Только сейчас заметил, как говорит автор журнала, что вы соскользнули с темы. Я указывал на то почему программирование на СКЛ сводится к "выписывание хинтов и трассировка оптимизатора". При работе с реляционными данными вы при любом синтаксисе/языке будете отлаживать именно хинты и смотреть план запроса.
From:[info]silly_sad
Date:May 1st, 2011 - 01:37 pm
(Link)
просмотрите пож "все комментарии" к этой записи, это поможет составить представление о собеседнике (читать всё необязательно) :-)
обратите внимание, что в капкан с чередованием приставок он таки попал :)
From:[info]tzirechnoy.livejournal.com
Date:April 21st, 2011 - 04:19 pm
(Link)
Ещё минусов:
DDL в принцыпе нереляцыонен. Хотя просмотр результата у половины баз -- таки да. Что, в общем, сносит крышу, требует дополнительного обучения, написания и прочего геморроя.

PS И, как всегда и сикеля, синтаксис близок к ужасному.
From:(Anonymous)
Date:May 1st, 2011 - 04:52 am
(Link)
Ой, на какой заповедник гоблинов я набрел.... Оным гоблинам не понять что существование баз данных существует для удобства потребителя а не разработчика. И что главное цель БД - это быстро дать ответ на запрос. Поэтому все средства заточены именно под это требование и все. Схемы данных же в серьезных системах статичны - именно по причине области примения.

Кстати вот это:

> а переход в него пусть система ищет а не програмист!

делает оптимизатор. Правда 99% программистов не умеют читать планы запросов и даже не знают об их существовании. Зато эти программисты знают про проебы SQL :)
From:[info]silly_sad
Date:May 1st, 2011 - 07:25 am
(Link)
любопытно, а анонимус вообще умеет ли читать по-русски?
или просто не в курсе что обозначает аббревиатура DDL?
From:[info]ludmilin.livejournal.com
Date:May 1st, 2011 - 09:51 am
(Link)
Именно потому что в отличии от вас я знаю что такое DDL - я и удивился.
From:[info]silly_sad
Date:May 1st, 2011 - 09:52 am
(Link)
прекрасно! значит в таком случае нас ещё отличает и знание русского языка :)
From:[info]ludmilin.livejournal.com
Date:May 1st, 2011 - 10:15 am
(Link)
Ну фразу "топовый доход в области RDBMS у топовых компаний" мы понимаем одинаково, да? Тогда имейте ввиду что эта фраза относится ко мне непосредственно. Так что если что - спрашивайте.
From:[info]silly_sad
Date:May 1st, 2011 - 10:26 am
(Link)
спасибо, мне уже понятна ширина вашей разпальцовки.
From:[info]ludmilin.livejournal.com
Date:May 1st, 2011 - 10:55 am
(Link)
> разпальцовки.

А мне ваши познания не только в рузком языке.

PS Вас из школы в каком классе выгнали-то?
From:[info]silly_sad
Date:May 1st, 2011 - 11:40 am
(Link)
вы не представляете насколько это приятно!
вызвать такую бурю эмоций у такого прославленного ТОПОВОГО экперта!
From:[info]ludmilin.livejournal.com
Date:May 1st, 2011 - 11:44 am
(Link)
Вы лучше про ALTER TABLE сделайте какие-то предположения, а? Вы предложили куда более глобальное решение проблемы, а не можете ответить на примитивный вопрос, скатываясь к банальным наездам на личности. Засчитаем вам слив и полную безграмотность в RDBMS?
From:[info]silly_sad
Date:May 1st, 2011 - 11:47 am
(Link)
блеск!
вы хотите чтобы я разбирался в вашем потоке сознания?
я вам с самого начала ответил: У ВАС СОСКАЛЬЗЫВАЮЩЕЕ СОЗНАНИЕ.
вы не пригодны для обсуждения RDBMS потому что для вас разпальцовка важнее.
From:[info]ludmilin.livejournal.com
Date:May 1st, 2011 - 11:55 am
(Link)
Вы тупеете прямо на глазах. Я вам задал уже несколько технических вопросов и не одного по распальцовке.

Мой поток сознания пока говорит что вы безграмотны в RDBMS. Причем абсолютно по всем направлениям:

http://lj.rossia.org/users/silly_sad/278272.html?nc=1

Извините, только дебил от RDBMS мог написать то что вы написали по этой ссылке.
From:[info]silly_sad
Date:May 1st, 2011 - 11:58 am
(Link)
ну и нахрена вам мои ответы?!
кто я такой чтобы научать и просвещать топового эксперта из дикого запада!
From:[info]ludmilin.livejournal.com
Date:May 1st, 2011 - 12:04 pm
(Link)
Ну мне некто тут написал кучу малоприятного, что я там типа ничего про DDL не знаю и так далее, но когда я слышу что-то такое, я обычно удивляюсь и пытаюсь уточнить что я не понял. Как правило суперспецы сливаются до банального наезда на мою скромную личность.

Ответов у вас нет потому что у вас их нет. Вы не понимаете о чем трындите. Уходите в садовники.
From:[info]silly_sad
Date:May 1st, 2011 - 01:33 pm
(Link)
я просто в восторге от буйства вашей фантазии :)
From:[info]ludmilin.livejournal.com
Date:May 1st, 2011 - 11:02 am
(Link)
И вы не поняли - на диком западе не платят ни за раЗпальцовку, ни за двапальцовку. Платят за знания. А за слова типа "к винде не притронутся из гигиенических соображений" сказаные одним уже бывшим коллегой мне в присутствии его босса, коллеги не было на рабочем месте уже через 3 часа. При этом он получил волчий билет в виде референса от его бывшего менеджера и что после этого будет делать - не знаю. Мне искренне жаль было того чувака - я просил его не выгонять, ибо чувак был неглуп, хотя дурак.
From:[info]ludmilin.livejournal.com
Date:May 1st, 2011 - 10:50 am
(Link)
Кстати вот у вас еще забавное:

http://lj.rossia.org/users/silly_sad/275569.html?nc=2

сообщил всем своим знакомым (которые сами никогода естественно к винде не притронутся из гигиенических соображений).

Видимо для вас слово Микрософт ругательное, да? Вы не в курсе на какой платформе бегает NASDAQ? (Привет Barclay Capital) или что использует в качестве движка www.ebay.com. Если ваши эмоции замеченые вами выше верны, то я нынче беседую не иначе как с будущим Сергеем Брином или Марком Цукербергом, не ниже.

Кстати вам на размышление - у меня хороший приятель работает в компании которая продает аналог SAP - только послабее софтина. Естественно она писана под все возможные платформы. За последние несколько лет они для десятков клиентов провели перевод их баз данных с одной платформы на другую. Эти две платформы были Oracle и MS SQL Server Теперь попробуйте угадать - сколько переводов было с SQL на Oracle, а cколько с Oracle на SQL? Причем направление перевода определял клиент а не компания-разработчик.