Как создать успешное приложение под базу данных Oracle? Приведу в данной заметке рассуждения гуру в данном вопросе - Тома Кайта. Очень много времени я провожу, работая с программным обеспечением системы управления базами данных (СУБД) Oracle и, что еще важнее, общаясь с теми, кто использует это программное обеспечение. В течение последних 25 лет или около того мне довелось работать над многим проектами - как успешными, так и совершенно неудачными - и мой опыт можно было бы обобщить следующим образом.
- На успех или провал приложения, построенного на основе базы данных - и зависящего от базы данных - оказывает влияние то, как оно использует базу данных. Как следствие этого, все приложения построены на основе баз данных; я не в состоянии назвать ни одного полезного приложения, которое где-то не хранило бы данные.
- Приложения приходят и уходят, однако данные существуют всегда. Речь идет не о построении приложений; на самом деле речь идет о данных, лежащих в основе этих приложений.
- Команда разработки нуждается в нескольких разработчиках, разбирающихся в базах данных, которые будут отвечать за соблюдение логики базы данных и обеспечение работоспособности построенной системы с первого дня ее введения в эксплуатацию. Необходимость в проведении подстройки сразу после развертывания свидетельствует о том, что система не создавалась в подобной манере.
Эти соображения могут казаться совершенно очевидными, но я убедился, что слишком многие относятся к базе данных как к черному ящику - чему-то такому, о чем знать не обязательно. Возможно, они располагают генератором SQL-кoдa, который, по их мнению, избавит от бремени изучения языка SQL. Или же они полагают, что будут пользоваться базой данных только как двумерным файлом и выполнять "чтение по ключам". Как бы там ни было, я могу утверждать, что в большинстве случаев такая точка зрения ошибочна: без понимания базы данных просто не обойтись. В этой главе будет показано, почему требуется знание базы данных, в частности, зачем необходимо разбираться в перечисленных ниже вопросах.
- Архитектура базы данных: как она работает и что собой представляет.
- Что такое средства управления параллельной обработкой, и каков в них смысл.
- Как выполнять повседневную настройку своего приложения.
- Каким образом в базе данных реализованы некоторые вещи - они не обязательно реализованы так, как вы могли подумать.
- Какие функциональные возможности база данных уже предлагает, и почему в общем случае лучше применять предоставленное средство, чем строить собственное.
- Почему может требоваться знание языка SQL, выходящее за рамки общего курса.
- Администраторы баз данных и разработчики находятся в одной команде, а не представляют два враждующих лагеря, которые постоянно пытаются перехитрить друг друга.
Поначалу может показаться, что перечень подлежащих изучению вопросов бесконечен, но примите во внимание следующую аналогию: что бы вы сделали в первую очередь, если бы пришлось разрабатывать в высшей степени масштабируемое производственное приложение для совершенно новой операционной системы (ОС)? Скорее всего, ваш ответ был бы следующим: "Сначала выяснили бы, как работает эта новая ОС, каким образом в ней будут выполняться приложения, и тому подобные вопросы". Если ваш ответ отличается, то с большой вероятностью вы потерпите поражение.
Например, сравним ОС Windows и UNIX/Linux. Если вы являетесь опытным программистом в Windows, которого попросили разработать новое приложение для платформы UNIX/Linux, то вам придется заново изучить ряд вопросов. Управление памятью реализовано совершенно по-другому. Построение процессов сервера существенно отличается: в среде Windows должен быть разработан единственный процесс - единственный исполняемый модуль с множеством потоков. В среде UNIX/ Linux разработка не сводится к построению одного автономного исполняемого модуля; вместо этого приходится иметь дело с множеством совместно работающих процессов. Это верно, что и Windows, и UNIX/Linux являются операционными системами. Обе они предлагают разработчикам множество одинаковых служб - управление файлами, управление памятью, управление процессами, обеспечение безопасности и т.п. Однако они серьезно отличаются по архитектуре, и большая часть того, что вы изучили в среде Windows, не применимо к UNIX/Linux (и, справедливости ради, наоборот). Чтобы добиться успеха на новой платформе, вы должны забыть все, что знали о старой платформе. То же самое касается и среды базы данных.
Все моменты, связанные с приложениями, которые выполняются непосредственно в среде ОС, относятся также и к приложениям, которые будут выполняться в среде базы данных: необходимо осознавать, что база данных является критически важной для успеха приложения. Если вы не понимаете, что делает конкретная база данных и как она это делает, то ваше приложение будет обречено на неудачу. Если вы считаете, что раз уж ваше приложение нормально работает в среде SQL Server, то оно обязательно будет успешно функционировать в среде Oracle, то это приложение, скорее всего, потерпит неудачу. Разумеется, корректно также и обратное утверждение: вовсе не обязательно, что масштабируемое, аккуратно разработанное приложение Oracle сможет работать в среде SQL Server без существенных архитектурных изменений. Подобно тому, как Windows и UNIX/Linux являются операционными системами, но фундаментально отличаются друг от друга, Oracle и SQL Server (здесь можно было бы упомянуть практически любую базу данных) представляют собой базы данных, существенно отличающиеся в архитектурном плане.