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

advertisement
Содержание



1 Регистрация и организация
2 Доклады
 2.1 How Do You Know What You Know...
 2.2 The Best Way
 2.3 Database Worst Practices
 2.4 Top 10, no 11, new features of Oracle database 11g Release 2
 2.5 Why: Why Why is probably the right answer
3 Общие выводы
Регистрация и организация
Мероприятие AskTom in Moscow представляло из себя серию мини-докладов Тома
Кайта, известного практика-популяризатора продуктов Oracle, пишущего книги и
отвечающего на вопросы на сайте AskTom. Семинар проходил 24 февраля 2010
года в гостинице «Ренессанс Москва», в зале «Волга».
Организаторами перед началом семинара была приведена статистика: приехало
333 человека из 150 компаний (количество городов не запомнил, но было много
иногородних: Киев, Минск, Сыктывкар, Калуга и т.д.). Девушка-организатор
попросила поднять руки людей, приехавших за собственные деньги — их оказалось
около трети (!).
Что понравилось:





содержание докладов: интересно изложены, не являлись агрессивно
рекламными, соблюден баланс полезных общих сведений и новой
информации;
при регистрации проблем не возникло;
качество показанных слайдов и выданных материалов весьма хорошее
(единственное, обложка оказалась перевернутой);
питание было организовано на высоком уровне, количество приборов (3
вилки и 2 ножа разных размеров) привело даже в некоторое замешательство;
синхронный перевод можно признать удовлетворительным (с поправкой, что
переводчики явно не сильны в предметной области).
Что не понравилось:


маленький размер зала (предполагаю, что с дальних рядов было все плохо
видно);
неудобная архитектура зала: две большие колонны заслоняли экраны.
Далее кратко изложено, что показалось интересным и оказалось записанным в
блокнот. Все документы семинара находятся здесь.
Доклады
How Do You Know What You Know...
Презентация
Рассказал, приведя примеры, что ошибочно полагаться на свою уверенность, что
что-то знаешь:


«знания» могут быть ошибочны;
знания могут быть не ошибочны, но устареть.
Привел примеры ошибочности знаний из повседневной жизни (большинство
ошибается в причине происхождения названия Канарских островов и Биг-Бена) и
применительно к базе данных 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
Презентация
В значительной степени философский доклад, хотя и, естественно, с технической
подоплекой.
Ценными показались мысли о том, что «best practices» и пути решения любой
задачи («best way») для каждого человека свои из-за разного личного опыта и
набора знаний. Даже для одного и того же человека решения могут существенно
отличаться в зависимости от контекста, т.е. конкретных условий, ситуации.
Перечислил набор лучших практик от Bryn Llewellyn, запомнившиеся:




наличие высокого класса образования (не формального, а истинных знаний);
способность механистической визуализации (насколько я понял, умение
визуализировать задачу как в своей голове, так и с помощью внешних
средств для общения с другими людьми);
возможность выразить что угодно на языке программирования (был
упомянут именно PL/SQL, мне кажется, что указание конкретного языка не
столь важно);
выбор родителей (видимо, это была шутка, хотя, конечно, фактор весьма
важный :).
Далее Кайт в качестве приземленного примера привел SQL-запрос (две таблицы,
соединенные идентификатором), показав разные пути более эффективного
выполнения запроса в разных условиях (HASH JOIN или индексы). Основной вывод
— не все однозначно, не выбирайте прямолинейное решение.
Еще озвучил банальную (но правильную мысль) — изучайте разные языки
программирования. Чем больше знаете, тем более удачное решение сможете
выбрать. Перечислил свой набор в порядке изучения: Tcl, Ada, C, PL/SQL, Java,
C++.
Database Worst Practices
Презентация
В презентации они выглядели именно в виде «вредных советов», добавляя
отрицание, звучат примерно так:
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
Презентация
Постараюсь уместить в одну строку каждую новую возможность (очень
заинтересовавшиеся могут посмотреть в презентации подробней, ссылка выше):









возможность параллелизма запросов (новый пакет DBMS_PARALLEL_EXECUTE);
новая аналитическая функция LISTAGG;
запуск в каталоге (результаты выполнения shell-скриптов можно
использовать в SELECT, забавно);
новый синтаксис иерархических запросов (ANSI-совместимый, мне
показался более элегантным, чем CONNECT BY...START WITH);
возможность выбрать предыдущие данные (исторически прошлые; типа,
машина времени);
наблюдение за появление файлов в каталоге (генерация события,
обработчик);
Deferred Segment Creation (честно говоря, не понял, что имелось ввиду);
расширенная поддержка кэширования (оптимальное использование
медленных SSD в составе кэша);
улучшение исполнения запросов в очереди запросов;

возможность одновременного существования в базе нескольких наборов
(пакетов, представлений и т.д.), которые названы версиями. После
тестирования нового набора одной командой он делается рабочим.
Why: Why Why is probably the right answer
Презентация
Смысл названия доклада в том, что при задании вам вопроса рекомендуется
задавать уточняющие вопросы (для того, чтобы самому дать ответ):



как реорганизовать таблицы — зачем именно, оно действительно нужно?
как создать таблицу в хранимой процедуре — зачем это вообще нужно (в
качестве повторяющегося действия это неестественно)?
как реорганизовать 50Гб базу данных — недостаточно данных, для чего
именно?
Далее к Кайту присоединились люди из российского представительства Oracle
(Дмитрий Волков и др.) и прочие лица. Наиболее интересным все же оказалось
наблюдать за реакцией на вопросы (не всегда технические) и слушать ответы
самого Томаса. Запомнились такие вопросы и ответы:
1. Будет ли переписано ядро базы данных на Java (с C/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».
Репликация: База Знаний «Заказных Информ Систем» → «AskTom in Moscow: отчет Дмитрия Белобородова»
Download