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».
