AskTom in Moscow: отчет Алексея Яблонского

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

Организация

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

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

В розданных материалах были слайды кажется по двум докладам из пяти.

Слушал по-английски, поэтому о переводе ничего определенного сказать не могу. По отзывам в интернете основная претензия к синхронистам — незнание предметной области («Предположим у нас есть таблица из тысячи рекордов...»), но это традиционно.

Общие впечатления...

...от Кайта

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

Бонусом к этому получил следующее:

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

...от других выступавших

Вела мероприятие Елена Бочарова из Центра компетенций Peoplemind.

Вступительное слово давалось спонсорам: кому-то (не записал...) из NetApp и Сергею Данилову из Oracle. Оба выступили кратко и ненавязчиво. Том Кайт в это время скромно ждал в уголке.

Двойственное впечатление оставила заключительная «панельная дискуссия». Кроме Кайта участвовали: Андрей Криушин, Борис Финкельберг от Russian Oracle User Group, Валерий Юринский из ФОРС, Валерий Кравчук (автор перевода книг Кайта).

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

Волков что-то постоянно шутил в тему и не в тему, что конечно веселило аудиторию, но в итоге впечатление от дискуссии окончательно скомкало. Для меня немногими любопытными моментами в ней было то, как Кайт отвечал на практические вопросы.

...от аудитории

333 человека из 150 компаний.

География обширна: от наших бывш. братских республик до Сыктывкара и каких-то сибирских нефтяных городов. Многие оплачивали участие своими деньгами (например жена — ее компания участие ей не оплатила, но и отгул брать на день не заставила :)).

Был аншлаг, Кайта слушали увлеченно, в начале дня в перерывах к нему была очередь за автографами.

Доклады

Доклады How Do You Know What You Know, The Best Way и Why: Why Why is probably the right answer я воспринял как этакое объяснение жизненной и профессиональной философии Тома Кайта. Любопытно послушать.

Database Worst Practices — более конкретный, но без откровений: взгляд «от противного» на то, что можно прочитать в его же книгах.

Top 10, no 11, new features of Oracle database 11g Release 2 — единственный практически полезный доклад.

Содержание докладов, заданные вопросы и т.п. достаточно подробно привел Дмитрий Белобородов. Дополню своими впечатлениями.

How Do You Know What You Know...

Основные идеи:

  • Критически относиться к своим знаниям и к источникам их получения.
  • Остерегаться стереотипов и «общих мест».
  • Информация могла устареть, а мы до сих пор принимаем решения на ее основе (что было важно для Oracle 7 не имеет значения для 9i).
  • Решение может быть неприменимо в данном случае. Если предыдущие пять раз такие проблемы были вызваны чем-то одним, это совершенно не означает, что в шестой раз это автоматически то же самое, — всегда ожидать что-то другое.
  • One needs to understand how Oracle works in order to use it safely -> One needs to understand how anything works in order to use it safely.

The Best Way

Вполне воспринялся как продолжение предыдущего доклада.

Основные идеи:

  • Нет однозначно лучшего пути («„What is the best way..?“ — вопрос который не прекращается, и который может свести с ума»). Если бы он был, то он был бы давно реализован как единственно возможный.
  • Нельзя забывать про контекст, в котором практика описывалась как «лучшая», и применять ее вне этого контекста.
  • Важно знать в комплексе, «как оно работает» («Don’t tune a query — tune a process...»).
  • Алгоритм:
    • осознать факты;
    • вывести из них новые факты;
    • осознать ситуацию в целом;
    • устранить проблему.
  • Генерите идеи, постоянно переосмысливайте, постоянно изменяйтесь, постоянно пробуйте и т.п.

Запомнилось из лучших практик Брина Ллевеллина:

  • Выбрал хороших родителей :)
  • Требует excellence от себя и других.
  • Готов писать excellent код (хороший код писать и отлаживать дольше, чем плохой) — и убеждать менеджеров в необходимости этого.
  • Может писать excellent «техническую прозу».
  • Имеет простой доступ к excellent наставникам.

Database Worst Practices

Перечисление базовых вещей, о которых тем не менее многие забывают. Bind-переменные в динамическом sql, перехват EXCEPTION WHEN OTHERS и проч., и проч...

Сколько таблиц в базе данных достаточно?

Из забавного. Коллеги из ЗИС сидели по разным местам в зале, так вот на этом слайде с какой-то стороны будто бы послышалось: «t_aggr, t_aggr...» :)

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

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

  • LISTAGG
Пишем
 SELECT deptno,
        listagg( ename, '; ' )
        WITHIN GROUP
        (ORDER BY ename) enames
   FROM emp
  GROUP BY deptno
  ORDER BY deptno
Получаем
    DEPTNO ENAMES
---------- -----------------------------------------
        10 CLARK; KING; MILLER
        20 ADAMS; FORD; JONES; SCOTT; SMITH
        30 ALLEN; BLAKE; JAMES; MARTIN; TURNER; WARD
  • Рекурсивные иерархические запросы
Пишем
with emp_data(ename,empno,mgr,l)
  as
  (select ename, empno, mgr, 1 lvl from emp where mgr is null
   union all
   select emp.ename, emp.empno, emp.mgr, ed.l+1
     from emp, emp_data ed
    where emp.mgr = ed.empno
  )
  SEARCH DEPTH FIRST BY ename SET order_by
  select l,
         lpad('*',2*l,'*')||ename nm
    from emp_data
   order by order_by
Получаем
         L NM
---------- --------------------
         1 **KING
         2 ****BLAKE
         3 ******ALLEN
         3 ******JAMES
         3 ******MARTIN
         3 ******TURNER
         3 ******WARD
         2 ****CLARK
         3 ******MILLER
         2 ****JONES
         3 ******FORD
         4 ********SMITH
         3 ******SCOTT
         4 ********ADAMS
С этим можно делать не только иерархические запросы, например
 WITH DATA(r)
   AS
  (SELECT 1 r FROM dual
   UNION ALL
   SELECT r+1 FROM DATA WHERE r < 5
  )
  SELECT sysdate+r
    FROM DATA;
  • Total Recall
Пишем
  CREATE flashback archive arc_of_T;
  ALTER TABLE T flashback archive arc_of_T; 
Получаем сохранение исторических данных с возможностью обращения к ним в любой момент примерно таким образом:
  SELECT * FROM T AS OF sysdate - 1 --Данные как они были в таблице на сутки назад
Подробно по-английски в Oracle Magazine: Managing History.
  • Deferred Segment Creation
Пишем
  ALTER SESSION SET deferred_segment_creation=TRUE
Получаем создание таблиц/индексов без автоматического выделения им первоначального extent'а. Он реально выделяется только при появлении данных.
  • Самое главное, «killer feature оf Oracle Database 11g Release 2. It is worth 2 features» (и действительно, пункты 10 и 10+ в презентации) :)
В БД может существовать несколько версий (edition). Объявив новую версию, в нее можно пронести какие-либо объекты: процедуры, вьюхи, изменить гранты, и т.п. — независимо от блокировок данных объектов пользователями, работающими с предыдущей версией, и не влияя на состояние объектов в ней. Пользователей можно неявно переключать между версиями.
Пока неясно как с таблицами. Но тем не менее это открывает дополнительные и широкие возможности для патчинга, тестирования и т.п.
Подробно по-английски в Oracle Magazine: I часть и II часть.

Why: Why Why is probably the right answer

Еще один общефилософский доклад.

Основная идея: перед тем, как ответить человеку, спроси, а зачем ему это нужно. Всегда проще дать очевидный ответ сразу, но переспросив «зачем?», ответ может измениться на: «не делай этого», «поступи иначе» — и такой ответ будет ценнее.

Немного мобилографии

Вступительное слово Елены Бочаровой
Кто-то из NetApp (идентифицируйте?)
Том скромно ждет своей очереди в углу
Том Кайт: Who am I
Том Кайт: Things Change
Панельная дискуссия
Розыгрыш футболок от Oracle
Автограф Тома :)



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

Репликация: База Знаний «Заказных Информ Систем» → «AskTom in Moscow: отчет Алексея Яблонского»