AskTom in Moscow: отчет Дмитрия Белобородова

Материал из CustisWiki

Перейти к: навигация, поиск

Регистрация и организация

Мероприятие AskTom in Moscow представляло из себя серию мини-докладов Тома Кайта, известного практика-популяризатора продуктов Oracle, пишущего книги и отвечающего на вопросы на сайте AskTom. Семинар проходил 24 февраля 2010 года в гостинице «Ренессанс Москва», в зале «Волга».

Организаторами перед началом семинара была приведена статистика: приехало 333 человека из 150 компаний (количество городов не запомнил, но было много иногородних: Киев, Минск, Сыктывкар, Калуга и т.д.). Девушка-организатор попросила поднять руки людей, приехавших за собственные деньги — их оказалось около трети (!).

Что понравилось:

  • содержание докладов: интересно изложены, не являлись агрессивно рекламными, соблюден баланс полезных общих сведений и новой информации;
  • при регистрации проблем не возникло;
  • качество показанных слайдов и выданных материалов весьма хорошее (единственное, обложка оказалась перевернутой);
  • питание было организовано на высоком уровне, количество приборов (3 вилки и 2 ножа разных размеров) привело даже в некоторое замешательство;
  • синхронный перевод можно признать удовлетворительным (с поправкой, что переводчики явно не сильны в предметной области).

Что не понравилось:

  • маленький размер зала (предполагаю, что с дальних рядов было все плохо видно);
  • неудобная архитектура зала: две большие колонны заслоняли экраны.

Далее кратко изложено, что показалось интересным и оказалось записанным в блокнот.

Доклады

How Do You Know What You Know...

Презентация

ThingsYouKnow OOW.pdf

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

  • «знания» могут быть ошибочны;
  • знания могут быть не ошибочны, но устареть.

Привел примеры ошибочности знаний из повседневной жизни (большинство ошибается в причине происхождения названия Канарских островов и Биг-Бена) и применительно к базе данных Oracle:

  • конструкции SELECT INTO и FETCH...CLOSE (равнозначны);
  • IN vs EXISTS (равнозначны);
  • NOT IN vs NOT EXISTS (равнозначны);
  • WHERE NVL(:bind, column) = column (не рекомендуется);
  • FETCH ARRAY.

Предостерег от сомнительных улучшений:

  • разделения хранения данных и индексов (не оказывает сильного влияния);
  • пытаться все-все переносить в базу данных неразумно.

Много раз повторил, что поведение и решение, работающее в предыдущих версиях (вообще и Oracle Database в частности), может не работать в новых версиях.

The Best Way

Презентация

Thebestway.pdf

В значительной степени философский доклад, хотя и, естественно, с технической подоплекой.

Ценными показались мысли о том, что «best practices» и пути решения любой задачи («best way») для каждого человека свои из-за разного личного опыта и набора знаний. Даже для одного и того же человека решения могут существенно отличаться в зависимости от контекста, т.е. конкретных условий, ситуации.

Перечислил набор лучших практик от Bryn Llewellyn, запомнившиеся:

  • наличие высокого класса образования (не формального, а истинных знаний);
  • способность механистической визуализации (насколько я понял, умение визуализировать задачу как в своей голове, так и с помощью внешних средств для общения с другими людьми);
  • возможность выразить что угодно на языке программирования (был упомянут именно PL/SQL, мне кажется, что указание конкретного языка не столь важно);
  • выбор родителей (видимо, это была шутка, хотя, конечно, фактор весьма важный :).

Далее Кайт в качестве приземленного примера привел SQL-запрос (две таблицы, соединенные идентификатором), показав разные пути более эффективного выполнения запроса в разных условиях (HASH JOIN или индексы). Основной вывод — не все однозначно, не выбирайте прямолинейное решение.

Еще озвучил банальную (но правильную мысль) — изучайте разные языки программирования. Чем больше знаете, тем более удачное решение сможете выбрать. Перечислил свой набор в порядке изучения: Tcl, Ada, C, PL/SQL, Java, C++.

Database Worst Practices

Презентация

OOW WorstPractices.pdf

В презентации они выглядели именно в виде «вредных советов», добавляя отрицание, звучат примерно так:

  1. Обязательно задавайте вопросы и оставляйте комментарии (авторам книг, блогов).
  2. Используйте binding переменных:
    • противодействие SQL-injection;
    • снижение нагрузки на процессор из-за постояного разбора каждого запроса на сервере;
    • уменьшение загрузки памяти по этой же причине;
    • улучшение масштабирования.
  3. Сообщайте пользователям об ошибках:
    • после WHEN OTHERS THEN (если уж воспользовались OTHERS) хотя бы log_error(...);
    • в самом приложении выводите сообщения об ошибках.
  4. Излишнее обобщение (на уровне БД, приложения) — плохо.
  5. Не упрощайте излишне (перекликается с предыдущим советом).
  6. Не стремитесь создавать как можно больше экземпляров базы данных на один физический сервер, лучше создавать несколько виртуальных машин («больших 7 шапок из овцы не выкроишь никак»), так как неоптимально и несбалансированно расходуется память.
  7. Используйте внутреннюю функциональность БД (возможно, вы о ней даже не знаете), не изобретайте, вероятнее всего, худшие решения (имеющиеся возможности БД удовлетворяют 90% потребностей).
  8. Обязательно тщательно тестируйте:
    • более чем одним пользователем (одновременно);
    • максимально приблизьтесь к реальным данным (по объемам и наполнению);
    • написание «бенчмарков» (тестов с числовыми метриками) не заменяет полноценного тестирования;
    • обязательно нагрузочное тестирование.
  9. Используйте соответствующие типы данных (не приводите все искусственно к VARCHAR).
  10. Не делайте commit (очень) часто.
  11. Уделяйте внимание безопасности с самого начала проектирования (в презентации изображена машинка, обернутая цепью, чтобы не украли).
  12. Общайтесь с DBA (обращение к разработчикам) и разработчиками (обращение к DBA).

Top 10, no 11, new features of Oracle database 11g Release 2

Презентация

11 things about 11gr2 Long.pdf

Постараюсь уместить в одну строку каждую новую возможность (очень заинтересовавшиеся могут посмотреть в презентации подробней, ссылка выше):

  • возможность параллелизма запросов (новый пакет DBMS_PARALLEL_EXECUTE);
  • новая аналитическая функция LISTAGG;
  • запуск в каталоге (результаты выполнения shell-скриптов можно использовать в SELECT, забавно);
  • новый синтаксис иерархических запросов (ANSI-совместимый, мне показался более элегантным, чем CONNECT BY...START WITH);
  • возможность выбрать предыдущие данные (исторически прошлые; типа, машина времени);
  • наблюдение за появление файлов в каталоге (генерация события, обработчик);
  • Deferred Segment Creation (честно говоря, не понял, что имелось ввиду);
  • расширенная поддержка кэширования (оптимальное использование медленных SSD в составе кэша);
  • улучшение исполнения запросов в очереди запросов;
  • возможность одновременного существования в базе нескольких наборов (пакетов, представлений и т.д.), которые названы версиями. После тестирования нового набора одной командой он делается рабочим.

Why: Why Why is probably the right answer

Презентация
Why.pdf

Смысл названия доклада в том, что при задании вам вопроса рекомендуется задавать уточняющие вопросы (для того, чтобы самому дать ответ):

  • как реорганизовать таблицы — зачем именно, оно действительно нужно?
  • как создать таблицу в хранимой процедуре — зачем это вообще нужно (в качестве повторяющегося действия это неестественно)?
  • как реорганизовать 50Гб базу данных — недостаточно данных, для чего именно?

Далее к Кайту присоединились люди из российского представительства Oracle (Дмитрий Волков и др.) и прочие лица. Наиболее интересным все же оказалось наблюдать за реакцией на вопросы (не всегда технические) и слушать ответы самого Томаса. Запомнились такие вопросы и ответы:

  1. Будет ли переписано ядро базы данных на JavaC/C++) — нет, так как
    • предъявляются жесткие требования по скорости;
    • портабельность под различные платформы у Java ниже, чем у C;
  2. Чего не любит в PL/SQL (я ожидал услышать, что синтаксис, далекий от ООП):
    • злоупотребления использования WHEN OTHERS THEN;
    • автономные транзакции (PRAGMA AUTONOMOUS_TRANSACTION), так как их на практике обычно используют только для логгирования;
    • триггеры (помещают сложную логику).
  3. Пользуется ли он исходными кодами базы данных для ответов на вопросы — нет, так как это не имеет смысла (кода много, он запутан, ничем не поможет).
  4. Пользуется ли он My Oracle Support (бывший Metalink) — нет, так как для доступа к базе знаний есть какое-то приложение для внутреннего пользования.
  5. Планирует ли использовать Flash на AskTom (на Metalink он появился) — нет, не планирует.
  6. Какие домашние животные есть у Кайта — 2 кота (всей семьи), морская свинка (дочери) и 2 лягушки (живут на столе у Тома).
  7. Что читает в свободное время (нетехническое) — сказал, что любит фантастику (назвал Азимова).

Общие выводы

  • основной докладчик (Кайт), безусловно, вызывает большое уважение, хорошо рассказывает и уверенно отвечает на вопросы (видно, что предварительно обдумав);
  • атмосфера мероприятия импонирует, собравшимся людям действительно интересно (в отличие от этого семинара, например, Oracle Tech Forum больше похоже на какое-то зомбирующее мероприятие);
  • то, что рассказывается устами Кайта действительно «втыкает» (выражение от Андрея Бибичева), на меня особенно произвело впечатление слушание «The Best Way»;
  • надо практиковаться в английском языке;
  • приятно видеть человека (Кайта), занимающегося делом, которое ему интересно на протяжении столь длительного времени (и знания которого полезны другим).



Внимание! Эта статья была создана путем автоматического реплицирования из внутренней базы знаний компании Заказные Информ Системы. Любые правки этой статьи могут быть перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion».