среда, 18 июня 2008 г.

Total Recall или Вспомнить всё! (Часть 1)

Вы удивитесь, но речь пойдет не о фильме Пола Верховина с Арнольдом Шварценеггером в главной роли. Она пойдет о новой опции в версии Oracle Database 11g - Oracle Total Recall. Хотя, безусловно, какое-то отношение к триллерам и фантастике это решение имеет. Все мы помним, как хакеры в этих фильмах легко проникают в базу данных полиции и изменяют данные добропорядочного гражданина, делая его в один момент преступником - рецидивистом. Последнее время, когда все больше и больше персональных данных граждан находится в электронном доступе, вопрос отслеживания таких изменений встал очень остро. В мире были приняты ряд законов и актов требующих длительного (более 5 лет) хранения и аудита подобных данных и всех их изменений. Причем это касается не только больших корпораций аля страховые или медицинские, но и малый, и средний бизнес.

Я сразу вспоминаю случай из собственной практики, когда изучив логику бизнес-приложения, нерадивые сотрудники одной фирмы легко перебрасывали продажи (уже после их завершения) с одного покупателя на другого, изменяя, таким образом, задолженности этих клиентов перед фирмой. Этот "переброс" ничему в принципе не противоречил и допускался системой - ну решил клиент оформить все на другое юр.лицо, но никак не отслеживался. Когда мы предложили разработчикам системы начать отслеживать подобные операции, они разумно ответили, что "на каждый роток не накинешь платок" - и что нельзя программировать исходя из предположения, что люди начнут воровать. Самым логичным в той ситуации казалось просто поставить триггер на изменения нужных полей одной таблицы. Это один из вариантов в данном случае, но он лишен возможности централизованного управления - вы должны помнить, где у вас стоят триггера, чего и куда пишут. Да и наличие большого их количества сказывается на производительности. Другой вариант решения проблем с отслеживанием изменения данных - написание соответствующей функциональности со своим интерфейсом, своими таблицами и т.п. Но это сильно удорожает разработку любой системы - это раз. Доступ к таблицам изменения данных мы контролировать не можем - администратор системы может их легко изменить - это два. Да и если у вас в организации несколько баз и десятки приложений, то все это начнет рано или поздно вас утомлять - это три. Третий вариант, решения сторонних разработчиков для анализа REDO логов позволяет нам загрузить измененные данные в какую-нибудь отдельную базу данных, но мы лишаемся возможности работать с текущими данными, делать запросы, отслеживая изменения. Короче, ни один из способов в сумме не дает нам ни безопасности хранения данных, ни легкости их извлечения при этом существенно сказываясь на производительности системы.

Новая функция FLASHBACK DATA ARCHIVE входящая в опцию Oracle Total Recall позволяет преодолеть почти все эти ограничения.

Продолжение следует...

четверг, 13 марта 2008 г.

Не гонялся бы ты поп за дешевизною! (С)

Я иногда поигрываю в онлайн-игры. Ногами не бить!

И тут недавно у Sony Online Entertainment (SOE) и у представляемой фирмой Акелла русской версии игры Everquest2 начались проблемы. Невозможно играть, то персонажи пропадают, то зониться между локациями нельзя. Короче кошмар. Официальные представители ответили что-то невнятное.

«В общем, причину обнаружили - одна из основных баз данных при большом количестве игроков онлайн стала вставать "раком", при этом критичная загрузка от обычной отличается в 7-10 раз, т.е. создается ряд запросов, которые по каким-то причинам сразу не обрабатываются и пиковые моментальные нагрузки приводят к длительным лагам. В прайм-тайм это становится очевидно заметно. Сейчас инженеры SOE, которые занимаются поддержкой баз данных, пытаются решить этот вопрос. Сроки его решения я точно сказать не могу, но, надеюсь, что это произойдет в ближайшее время. Мы приносим свои извинения за временные неудобства и стараемся как можно быстрее решить этот вопрос.»
Источник: http://forums.akella-online.ru/showthread.php?t=20211

И тут на одном из компьютерных форумов, я наткнулся на чью-то реплику, мол SOE пожалело денег и мигрировало с Оракла на какую-то дешевку и теперь пожинает плоды этого. Я конечно же не поверил. Потому что, уж слишком безумным казалось мне портировать игру с одной базы данных на другую, когда она уже во всю в продакшене. Да и в менеджменте SOE тоже казалось сидят люди не глупые. Но оказалось, что это правда. Я нашел этот документ, крайне забавный. Они решили перейти на EnterpriseDB и сэкономить порядка 80% денежек. Причем так как эта база «Oracle compatible», то мол особо переписывать ничего не придется.

Ознакомиться с этим чудесными Case Study можно тут:
http://www.ameritas.co.uk/Documents/EnterpriseDB_Sony_Casestudy.pdf

В общем, не гонялся бы ты поп за дешевизною…

пятница, 9 ноября 2007 г.

Про понимание основ

Недавно бродил по сайту Тома Кайта http://asktom.oracle.com и в разделе Hot нашел относительно свежий (сентябрьский) и довольно интересный вопрос. Вопрос звучал примерно так:

«Том, однажды ко мне подошел парень и задал очень простой вопрос о базах данных и это меня очень разозлило. На этом сайте, на протяжении уже почти трех лет, я регулярно видел, как вам задавали простые и даже порой глупые вопросы. Я помечал их, чтобы затем посмотреть, как вы не них ответите. И был уверен, что вы просто разорвете человека. Но был поражен вашими ответами, во всех подробностях объясняющим человеку его вопрос, причем с большим количеством примеров. Разве вы не раздражаетесь, получая такие вопросы? И что вас заставляет отвечать на них?»

Вопрос задел, что называется, меня за живое, потому что я тоже ужасно раздражаюсь, читая порой совсем простые вопросы. Казалось бы, чего проще – набрал вопрос в Google или открыл Оракловскую библиотеку по твоей версии базы и читай мануал – там есть все. Вот же что ответил Том:

«Я люблю учить.
Понимание основ баз данных, понимание правильно этих основ (Concepts) – очень важно! Если кто-то расстроен, что не может найти ответа на простой вопрос – он уходит или решает свой вопрос по-другому. Так он, например, становится программистом, который думает, что база данных не умеет ничего делать, кроме как обрабатывать простой предикат по индексу. Транзакции – да кому они нужны, будем делать часто commit и дело с концом.
Каждый, кто знает, как это работает, будет значительно успешнее, сможет по достоинству оценить базу данных все больше и больше с течением времени, и будет использовать ее более правильно.
В конце концов, это делает мою жизнь проще.
К тому же, если я не отвечу ему, то это сделает кто-то другой, и я не знаю, какую информацию они ему дадут.
One programmer at a time...
А также в интернете никто не может увидеть, как я откидываю свое кресло назад, вскидываю мои руки вверх и кричу»

Хороший ответ. И конечно же правильный маркетинговый ход компании Oracle и наше счастье, что у нас есть Том. Мне всегда было интересно, кто помогает ему в его работе. Я искренне считал, что как минимум десяток мальчиков и девочек на побегушках работают на этот сайт, а Том поглядывает на него время от времени – слишком уж обширными кажутся его познания. В этой теме он ответил и на этот вопрос:

«бОльшую часть времени я просто отвечаю – здесь очень много повторений. Я люблю шутку, что относительно Oracle есть всего пять вопросов и ответ на первые три – «Используйте связываемые переменные».
Меньше – я ищу ответ в документации
Еще меньше – я просто звоню кому-то. Тогда мой ответ начинается словами – «Я спросил то-то и то-то и мне ответили…»

Так что, вот такой он Том Кайт, человек и пароход, вице-президент Oracle’s public sector division, читающий Айзека Азимова и «Автостопом по Галактике».

вторник, 6 ноября 2007 г.

Проапгрейдился...

В пятницу проагрейдил один из своих рабочих компьютеров до нового релиза Ubuntu 7.10
Теперь сижу и размышляю, какой из двух смыслов вложили создатели в название релиза Gutsy - бесстрашный или простоватый? ха-ха

gutsy gutsy adj.
1. marked by courage and determination in the face of
difficulties or danger.

2. rough or plain; not sophisticated or refined; earthy.
Opposite of sophisticated, or refined.

На самом деле все прошлой совсем не страшно, но довольно долго. Дабы не качать много из интернета, я подсунул своему 7.04 - диск ubuntu desktop alternate 7.10 и он предложил мне проапгрейдиться до последней версии. Потом изучил пакетики, которых нет на этом диске и придется скачать из сети дополнительно. Затем я почти полтора часа сидел читал прессу, литературу, общался с коллегами - пока все эти пакеты устанавливались. Отмечу, что я ожидал худшего, но ничего страшного не случилось - все заработало сразу и на ура. Особенно порадовал Pidgin как основной IM клиент :)

Если честно, я давно не апгрейдил операционные системы производства Microsoft и допускаю, что сейчас процесс апгрейда очень прост и главное не разрушителен для пользователя. Но, насколько я помню, раньше это была почти катастрофа - проще было поставить систему заново, чем апгрейдить ее.

Короче Ubuntu 7.10 Gutsy уже стоит у меня на машине и руки чешутся поставить на нее что-нибудь типа Oracle 11g, благо how-to уже довольно много.