AskTom in Moscow: отчет Алексея Яблонского
Организация
Организация в целом оставила положительное впечатление. Мероприятие проводилось в весьма неплохой по московским меркам гостинице, что обеспечило высокий уровень всяких «бытовых» удобств: кофе-брейки, обед, туалеты и проч. При регистрации проблем не наблюдал. Очереди были (на обеде к шведскому столу, вечером забрать одежду из гардероба и т.п.), но в комфортных пределах.
Если уж придираться, зал не совсем подходил для формата мероприятия: с задних рядов многим было плоховато видно за головами впереди сидящих и за двумя массивными колоннами в центре. И была общая скученность в фойе непосредственно у входа в зал, где находились столы регистрации, стоячие барные столики для кофе-брейков, стенд основного спонсора 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). Объявив новую версию, в нее можно пронести какие-либо объекты: процедуры, вьюхи, изменить гранты, и т.п. — независимо от блокировок данных объектов пользователями, работающими с предыдущей версией, и не влияя на состояние объектов в ней. Пользователей можно неявно переключать между версиями.
- Пока неясно как с таблицами. Но тем не менее это открывает дополнительные и широкие возможности для патчинга, тестирования и т.п.
Why: Why Why is probably the right answer
Еще один общефилософский доклад.
Основная идея: перед тем, как ответить человеку, спроси, а зачем ему это нужно. Всегда проще дать очевидный ответ сразу, но переспросив «зачем?», ответ может измениться на: «не делай этого», «поступи иначе» — и такой ответ будет ценнее.
Немного мобилографии
Любые правки этой статьи будут перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion».
Репликация: База Знаний «Заказных Информ Систем» → «AskTom in Moscow: отчет Алексея Яблонского»