Книги и статьи по SQL Rambler's Top100 Switch language to: English 14 июля 2020 г. 18:07:38


www.sql-ex.ru
Skip Navigation Links  

 

Print  Версия для печати

На главную страницу

Что говорят о SQL-EX.RU сотрудники Майкрософт

Алексей Шуленин,
эксперт по технологиям обработки и анализа информации,
департамент стратегических технологий, Microsoft


Как открытый образовательный ресурс сайт «Задачи и упражнения по SQL» - SQL Exercises (http://www.sql-ex.ru/) является ценным учебно-методическим проектом, позволяющим в сжатые сроки развить навыки владения языком SQL до уровня мастер-класса. Несмотря на широкое распространение в последнее время систем дистанционного обучения, я бы охарактеризовал данный проект не только как инновационный, но и как уникальный благодаря следующим его характеристикам.

1. Выбранное направление образовательной деятельности

1.1. Разработка ПО охватывает множество направлений от дизайна пользовательского интерфейса до системного программирования. На сегодня наибольшая доля программистов в мире – это прикладники, сконцентрированные на слое бизнес-логики. За крайне редким исключением не бывает чистого прикладного разработчика. Например, не зная, как устроены транзакции на уровне СУБД, будет достаточно проблематично, я думаю, работать с ними на уровне EnterpriseServices / СОМ+. Как можно рассчитывать построить масштабируемое приложение, не ведая о блокировках и уровнях изоляции транзакций? Как вообще отобразить необходимые данные из базы на форме или получить в компоненту бизнес-логики, не зная SQL? Таким образом, каждый разработчик бизнес-логики, никуда не деться, должен в той или иной степени быть также database developer, следовательно, благодаря своей направленности сайт sql-ex.ru будет полезен широкой аудитории разработчиков.

1.2. Мне попалось на глаза исследование Gartner, в котором определялись технологические приоритеты развития IT путем опроса 1400 руководителей информационных подразделений по всему миру: в какие направления ваши предприятия собираются инвестировать в ближайшее время и в каких пропорциях (http://www.gartner.com/it/page.jsp?id=501189)? Из отчета видно, что на первом месте по приоритетам стоит загадочная аббревиатура BI. Этот термин впервые был введен в 1958 г. (http://www.research.ibm.com/journal/rd/024/ibmrd0204H.pdf), тогда в него вкладывался смысл, эквивалентный нынешнему понятию DSS (decision support systems – системы поддержки принятия решений). С тех пор он стал значительно более объемлющим. Сейчас под BI (Business Intelligence) понимается «a set of technology tools focused on querying, reporting and multi-dimensional analysis on top of a data warehouse» - набор инструментов, ориентированный на запросы, отчеты и многомерный анализ на основе хранилищ данных. Хранилища данных традиционно обеспечиваются реляционными (или объектно-реляционными) серверами баз данных, в качестве средства общения с которыми выступает язык SQL. Обучая SQL, сайт sql-ex.ru помогает людям получить профессию, которая, по прогнозам, обещает быть наиболее востребованной в ближайшее время.

1.3. Приоритеты CIO подкрепляются развитием рынка BI-приложений в целом (http://www.cnews.ru/news/top/index.shtml?2007/07/02/257161), динамика роста которого составила 11.5% в 2006 г. и 12.5% в 2007-м. Ожидается, что этот рост сохранится до 2011 г., когда объем рынка достигнет 7 млрд.$, после чего рост несколько снизится (до 8-9%), но все равно будет сохранять стабильность (первая производная останется положительной). Таким образом, профессия, неотъемлемыми требованиями которой выступают знание SQL и навыки работы с СУБД, обещает не только гарантированное трудоустройство, но и стабильный доход.

2. Процесс обучения

Недостаточно прививать полезные знания, которые затем пригодятся в практической деятельности, важно это делать правильно. В Рунете можно нарваться на сайты дистанционного обучения, которые формально отрабатывают свои деньги с точки зрения контента, однако все сводит на нет дилетантская постановка учебного процесса. Руководителем проекта SQL Exercises является профессиональный преподаватель высшей школы, который просто по роду своей деятельности призван решать подобного рода задачи. С.И.Моисеенко - доцент факультета высоких технологий Южного Федерального университета, кандидат физико-математических наук, автор учебника по SQL.

3. Состав экспертов

Как популярный ресурс по базам данных сайт SQL Exercises неизменно притягивает к себе опытных профессионалов в этой области, которые всегда присутствуют на форумах сайта и помогают получить более оптимальное решение, посмотрев на задачу под другим углом или просто обратив внимание на малоизвестные особенности SQL или его конкретной реализации. Общение на форуме происходит в доброжелательной дружелюбной атмосфере, здесь никто не будет попрекать новичка незнанием, как это делается, например, на sql.ru, печально известном снобизмом и неадекватным поведением тамошних модераторов. В зависимости от количества решенных задач, сложности каждой и времени ее решения на сайте sql-ex автоматически подсчитываются рейтинги участников. Рейтинги помогают объективно оценивать свой уровень знаний, а также уровень компетенции своих собеседников по форуму.

4. Качество упражнений

Все упражнения сформированы в 3 блока, которые можно условно назвать квалификационным, зачетным и оптимизационным. Достаточно сказать, что для человека, прошедшего их до конца, не составят труда задачи по SQL на сертификационных экзаменах Microsoft и Oracle (возможно, других). В основном, среди них попадаются те, которые можно охарактеризовать как задачи уровня мастер-класса, или, если можно так выразиться, олимпиадных задач. Можно быть практически уверенным, что для поднаторевшего в их решении специалиста, не будут камнем преткновения задачи по SQL, с которыми он сталкивается в ходе своей производственной деятельности.

5. Сертификация

Немаловажным преимуществом сайта sql-ex.ru выступает бесплатность обучения. Деньги (по 840 руб.) стоят только сертификаты 1-го и 2-го уровня обучения (в зависимости от числа решенных задач). При наличии первого сертификата, второй стоит 420 руб. Если участник не желает, он может не заказывать себе этот сертификат – знания в любом случае останутся при нем. Однако среди кадровых агентств и работодателей при найме на связанную с базами данных работу сертификаты sql-ex.ru все больше начинают котироваться, поскольку означают, что их обладатель действительно является специалистом высшей пробы в области SQL.

Недостатки

Как всегда, наши недостатки служат продолжением наших достоинств и наоборот. Я не могу сказать, что заметил на sql-ex.ru массу негатива, однако такие моменты есть, и они идут рука об руку с его сильными сторонами.

Я уже упоминал о сильном, практически олимпиадном уровне многих задач на sql-ex.ru. Однако это не только достоинство, но и недостаток. Зачем решать такие задачи с практической точки зрения, если нигде на практике такой высокий уровень не понадобится? Складывается впечатление, что авторы задач не наигрались в олимпиады и оторвались от реальности. Спору нет, гимнастика ума всегда полезна, однако лучше пометить такие задачи звездочкой и выделить в отдельную группу. Зачем учить людей выживанию в джунглях Амазонки, если с вероятностью 99% никто из них за всю свою жизнь там не окажется? Лучше сосредоточиться на более практических вещах для более вероятной среды обитания. Если же кто-то готов уделить время экзотике повышенной сложности, пожалуйста, в этот раздел.

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

Помимо настоящих «олимпиадных» задач, на которые действительно не жалко потратить время (при условии, что оно есть), существуют задачи, решение которых искусственно усложнено за счет накладываемых sql-ex.ru ограничений. Наиболее существенным, на мой взгляд, является то, что задача должна быть решена при помощи единственного SELECT-запроса с лимитом по стоимости плана. В реальной жизни вы будете использовать локальные переменные, временные таблицы, управляющие конструкции в виде условных операторов и циклов, напишете свою процедуру или функцию, в том числе на CLR. Это быстрее и проще. Более того, если на практике вы ее решите способом a la sql-ex.ru, никакого восторга вокруг не будет. Наоборот, вам повертят пальцем у виска за неоправданно потраченное время. В целом, можно понять, откуда эти ограничения растут на sql-ex.ru: чтобы никакой злоумышленник не напакостил плюс уберечь сервер от run-away queries. Но, почему, например, я до сих пор не могу использовать СТЕ при том, что упражнения уже давно выполняются и проверяются на SQL Server 2005 – нет, это выше моего понимания.

Особняком стоит выделить подмножество упражнений, которые вообще не относятся к предмету SQL и притянуты сюда явно искусственно. Яркий пример – задача 59. Для каждой задачи существует свой инструмент решения. Например, молотком забивают гвозди, а штопором открывают бутылки, и не надо учить людей делать это наоборот. Не дай бог, он попробует это на работе, по головке его за это вряд ли погладят. Едва ли кто-то из посетителей учит SQL ради теоретического интереса. Очевидно, большинство собирается применять полученные знания на практике. SQL - это декларативный язык, исповедующий функциональный стиль программирования и ориентированный на работу с множествами данных. В этом его сила. При всей любви авторов к SQL не надо пытаться изобразить, будто им можно решать любые классы задач, это не так. В действительности никто не будет извращаться, привлекая SQL для алгоритмически-императивных задач. Либо на худой конец напишет функцию. Вывод: эта задача не имеет практической ценности. Обидно и глупо тратить время на такие задачи, потому что искусство, с которым вы ее, в конце концов, решите, нигде больше вам не пригодится.

Другим неоправданным усложнением я считаю упражнения по 3-й базе («Корабли»). На мой взгляд, оно состоит в особенностях ее схемы, которая имеет искусственно неряшливый дизайн (например, "в отношение Outcomes могут входить корабли, отсутствующие в отношении Ships"), специально созданный, чтобы усложнить решение, причем это усложнение имеет мало общего со сложностями реальных проектов. В реальной жизни с такой схемой бы просто работать никто не стал, и первым этапом проекта была бы ее нормализация и очистка как раз во имя того, чтобы впоследствии избежать ненужных сложностей при составлении запросов по "кривой" схеме.

Еще один недостаток, который проистекает из автоматизированного режима выполнения и проверки упражнений, это наличие двух баз: основной и проверочной, по которым тестируется ваш запрос. Если результаты выполнения запроса по каждой совпали с эталонами, задача считается решенной. Результаты запроса по основной базе вы видите, по проверочной – нет. Вам только говорится, совпали результаты или нет. Существование проверочной базы вполне обосновано, чтобы страховаться от подгонки результата под желаемый при помощи select ... union all … .Она имеет аналогичную структуру, что и основная, но свой набор данных.

Казалось бы, все логично. Однако в основной базе данные распределены на порядок проще. Такое впечатление, что кто-то с тайным злорадством напихал в проверочную базу предельных случаев и исключительных ситуаций, которые сложно себе представить, когда смотришь на устройство данных в основной. Типичная ошибка «Ваш запрос вернул правильные данные по основной базе, но не прошел проверку на скрытой» означает, что нам предлагается, по сути, умозрительное изучение SQL. Это тоже, на мой взгляд, искусственное усложнение, которое могло прийти в голову сотрудникам преимущественно академического образа мысли, но имеет мало общего с практической деятельностью.

Дмитрий Валуев в своем отзыве (http://shop.piter.com/book.phtml?978546901362) с придыханием пишет «Целью проверочной базы является защита от подгонки ответа, однако, фактически это модель того, что в статистике называется "генеральной совокупностью"». Фактически это ни то, ни другое. Во-первых, проверочная база не спасает от подгонки после того, как устройство данных в ней выясняется методом проб по некоторым косвенным признакам. Для примера я так решил задачу №98, получив запрос с рекордно минимальной стоимостью и потратив на ее решение минимально короткое время. Во-вторых, на практике не бывает «генеральной совокупности», и проверочная база ей не является.

Известны упражнения, после которых проверочная база, скажем так, дорабатывалась. Самый строгий процесс тестирования, через который проходит программа, не даст вам 100%-й уверенности, что она свободна от багов. Он сможет гарантировать только, что при данном наборе начальных условий и распределении данных она выдает ожидаемые результаты. Собственно, вот критерий правильности программы. Это черный ящик, от которого никто больше ничего не ждет. На практике играют роль простые экономические факторы: зачем повышать уверенность с 0.999 до 0.9999, если это обойдется на несколько порядков дороже того, что мы уже потратили. Далее. «Действительно, во всем мире тысячи программистов пишут тысячи запросов, которые не прошли бы проверочную базу, если бы она вдруг появилась. Однако, для многих из них состояние "проверочной базы" так и не наступает». Правильно, и с вероятностью 0.999 никогда не наступит. Извините за ересь, я сомневаюсь, чтобы все SQL-запросы в приложениях, например, ЮФУ были писаны окончательно предельно правильно. Но это никому неинтересно, потому что при том распределении данных, с которыми они работают, они выдают правильные результаты. И пока они будут это делать, об этом никто не узнает. Если же вдруг в данных произошло какое-то редкое непредвиденное изменение, и результаты стали неверны, ошибка отлавливается и чинится единомоментно, потому что данные перед глазами и не требуется ничего измышлять. На практике скрытых данных не бывает.

Лучше, как мне кажется, поменять явную и скрытую базы местами, потому что при том подходе, который действует сейчас (определи ситуацию, при которой данный запрос может не работать) sql-ex.ru – сайт не столько для разработчиков, сколько для тестеров.

На главную страницу

Print  Версия для печати


Использование любых материалов данного сайта возможно только
при условии обязательного размещения прямой ссылки на сайт
http://www.sqlbooks.ru
на каждой странице, где размещены используемые материалы.

 Начало   Статьи    Книги 
Рейтинг@Mail.ru Rambler's Top100 Alt Упражнения по SQL: обучение, тестирование, сертификация по языку SQL Copyright c 2002-2006. All rights reserved.