(Возврат на основную страницу)
Битва
СУБД: SQL Server 2000
против Oracle 9i
Роб Хоусорн (Rob Hawthorne)
Хотя наш журнал посвящен исключительно использованию Microsoft SQL Server, нам показалось полезным опубликовать эту статью хотя бы потому, что она содержит немало интересных фактов о развитии реляционных баз данных.
Как один из авторов SQL Server 2000 компании Microsoft, я испытывал невероятное волнение от использования этого стабильного, безотказного, устойчивого и дружественного к пользователю приложения. Однако сейчас я отложу мои пристрастия в сторону и, с чувством маленького ребенка в лавке игрушек, представлю на ваш суд сравнение двух фантастических систем управления реляционными базами данных (СУБД).
Воистину - это состязание века! Внимание толпы в зрительном зале полностью приковано к рингу в его центре. Колокол бьет три раза и вперед выступает ведущий. «В синем углу ринга наиболее серьезный соперник на рынке, весящий 1 миллиард долларов США в год - SQL Server 2000 компании Microsoft! В красном – титулованный чемпион, владеющий 37% рынка систем NT - Oracle 9i! Итак, начинаем!».
Как бы странно это не звучало, но главным победителем в ожесточенном сражении между Microsoft и Oracle (достигшем кульминации) оказывается бизнес, поскольку продолжается жестокое соревнование за рыночное пространство и соперники добавляют все больше и больше новых функциональных возможностей к своим системам. На протяжении многих лет (некоторые говорят, слишком долго) Oracle была доминирующей компанией на рынке средних и больших СУБД, но сегодня Microsoft бросила ей вызов и захватила свою долю этого рынка. Однако Oracle не сдается без боя и в последние годы вторглась в традиционную сферу влияния Microsoft – пространство NT.
Это беспощадное соревнование дало бизнесу новые СУБД, работающие быстрее и эффективнее и с более низкой, чем прежде, совокупной стоимостью владения (TCO, total cost of ownership). Мы видим функционально богатые продукты, предлагающие разработчикам простые способы создания приложений, успешно решающих насущные задачи бизнеса. Новое поколение баз данных предоставляет фантастические возможности для системных администраторов. Они проще в управлении и снабжены механизмами запросов, настраивающими и улучшающими производительность. От системных администраторов больше не требуется в обязательном порядке быть высококвалифицированными администраторами баз данных, а также экспертами по средам.
Не только ИТ компании, но и обычные коммерческие предприятия пожинают выгоду от этого перетягивания каната. СУБД стали работать быстрее, чем их предшественники, на том же самом оборудовании и, вследствие жесткой конкуренции, стоимость лицензий на их использование постоянно снижается. При новых условиях оплаты клиентская лицензия (CAL, client access license) может стать наследием прошлого. При таком выборе, как лицензирование «на процессор», например, вы можете развертывать ваше приложение для такого числа пользователей, какое необходимо для вашего конкретного бизнеса. Это означает настоящую революцию, позволяющую компаниям подключаться к Интернету быстро и просто и, что самое замечательное, с минимальными затратами.
Microsoft затратила огромное количество времени и денег на исследование, разработку и реализацию SQL Server. Каждая новая версия (6.0 была первой из них, самостоятельно разработанной компанией Microsoft) предоставляла больше функциональных возможностей, обеспечивала лучшую производительность и более простые методы выполнения повседневных задач, что так необходимо приложениям подобного уровня.
Oracle также старалась не отставать в этих вопросах, уделяя особое внимание безопасности и простоте использования. Специалисты компании утверждают, что сегодня администраторы БД 9i могут работать на 35% эффективнее, чем администраторы, управляющие и контролирующие работу систем DB2 компании IBM.
Поверите ли, но СУБД компании Oracle более 20 лет! Сама Oracle Corporation отметила свой 25-летний юбилей в 2002 году. На момент написания этой статьи, Oracle Corporation - вторая по величине компания в мире, занимающаяся программным обеспечением. Взяв начало с небольшого бизнеса, компания прошла за эти годы тернистый путь, успешно решая множество проблем на своем пути. Ее руководство и стратегическое направление развития не раз менялось, подтверждая простую истину, что на свете нет успеха, которого можно было бы добиться раз и навсегда.
В этом разделе мы коротко познакомимся с историей Oracle Corporation, уделяя особое внимание Oracle 9i.
Коротко об Oracle
Штаб-квартира компании: 500 Oracle Parkway, Redwood Shores, CA 94065
Основана: в 1977 году
Количество служащих: более 42,000
Обозначение на фондовой бирже Nasdaq: ORCL
Сайт компании: http://www.oracle.com
Компания Oracle началась в 1977 году с сотрудничества между Ларри Эллисоном (Larry Ellison) (чья собственная история, кстати сказать, тоже заслуживает внимания), Боба Майнера (Bob Miner) и Эда Оутса (Ed Oates). Они образовали кампанию (Software Development Laboratories (SDL)), принимавшую участие в конкурсах на получение правительственных контрактов. SDL умудрилась успешно выиграть совершенно секретный контракт для ЦРУ, под кодовым названием Oracle. Работа над этим контрактом продолжалась до тех пор, пока правительство не прекратило субсидирование, но эти три провидца уже почувствовали рыночное значение системы, способной хранить и извлекать огромные количества данных в согласованном и надежном формате.
В 1978 году компания SDL разработала Oracle Version 1 (v1), но никогда открыто не распространяла ее. Эта система использовала максимальный объем памяти 128 Кб (попробуйте-ка сделать это сегодня). В этом году SDL стала называться Relational Software Incorporated (RSI) и продолжила работу над Oracle Version 2 (v2).
И вот в 1979 году компанией RSI была выпущена Oracle v2, первая широко доступная версия СУБД. Это был удар по компании IBM, что в то время являлось до некоторой степени подвигом, особенно если учесть, что IBM контролировала около 80% рынка. В версии v2 RSI реализовала самую первую реляционную базу данных. Это ранняя версия была запущена на системе PDP-11 компании Digital Equipment Corporation (DEC) и на самом деле являлась значительным достижением, позволяющим выполнять разработку настоящих реляционных приложений. До выпуска Oracle v2 все реализованные ранее системы баз данных имели иерархическую или файловую (сетевую) основу. Физическая (на самом деле – программная) реализация реляционной теории доктора Эдгара Ф. Содда (Dr. Edgar F. Codd) означала, что реляционные базы данных появились на свет.
Однако реализация СУБД Oracle на системе DEC не являлась пределом мечтаний Ларри и его команды. Поэтому в 1980 году был подготовлен другой выпуск СУБД (написанный на ассемблере) для работы на системе VMS/VAX компании Digital. Своевременный интерес к миникомпьютерным системам оказался выигрышным решением. Год 1980 стал знаковой вехой в истории Oracle –это год официального рождения Oracle Systems Corporation, позднее ставшей просто Oracle Corporation. Компания RSI сменила свое название на Oracle, возможно, вследствие частой путаницы, возникавшей из-за конкурирующей организации с созвучным названием – RTI. Теперь компания могла заниматься «раскруткой» своей торговой марки продуктов. Именно Oracle теперь определяла стратегическое направление развития СУБД и стала одной из первых компаний, использовавших язык программирования С.
В 1983 году Oracle переписала базовый код (первоначально написанный на ассемблере) на языке С, что позволило устанавливать и запускать СУБД не только на системах Digital, но также и на других операционных системах. Это означало, что Oracle добилась того, чего прежде не добивался еще никто – теперь база данных могла работать как на большой вычислительной машине, так и на миникомпьютере. Oracle стремился установить СУБД на системы различных производителей, в том числе на версию UNIX от компании Sun (Solaris), а также HP/UX, IBM MVS, IBM AIX, и DEC Ultrix.
В 1984 году Oracle достигла нового успеха – обеспечения целостности чтения базы данных (чего не могли добиться другие производители). Это гарантировало, что после выполнения операции чтения данных, они оставались в точности такими же, какими были на момент, когда чтение осуществлялось. Продукты других производителей продолжали выполнять «грязное» чтение. Для получения точных данных в определенный момент времени необходимо было заморозить транзакции – блокировать каждую из них вне базы данных – что, как правило, неприемлемо для больших организаций.
В 1985 Oracle утверждала, что создано более 1000 инсталляций реляционных баз данных и что объем продаж составил более 23 миллионов долларов США. К тому времени СУБД Oracle поддерживала более 30 различных операционных систем. Однако ключевой вехой для Oracle в этом году стал приход в команду в качестве главного финансового администратора Джеффа Уолкера (Jeff Walker). Джефф владел компанией Walker Interactive Products, производившей финансовое программное обеспечение. С приходом Джеффа Oracle принимает решение выйти на рынок финансового программного обеспечения с продуктом Oracle Financials, в то время как остальные компании продолжали заниматься чистыми базами данных. И Oracle не промахнулась с этим выбором: ее товарооборот в короткие сроки становится больше, чем годовой объем сбыта ее конкурентов.
В 1986 году Oracle разработала базу данных с распределенными возможностями (Oracle v5). Это означало, что больше не имело значения, где расположен ваш офис, теперь вы можете соединяться с данными и получать верное представление об информации, содержащейся на ваших системах из любой точки сети. Эта версия Oracle, известная как SQL*Star, революционизировала ИТ индустрию.
Интересно, что в 1986 году Oracle Corporation стала открытой акционерной компанией всего на день раньше, чем Microsoft. Даже в то время между ними была конкуренция! С начальной стоимостью акций в 15 долларов, Oracle достигла рыночной стоимости в 270 миллионов долларов.
К 1987 году Oracle была уже совершенно другим продуктом (и компанией), в отличие от той, какой она начинала 10 лет назад. И хотя оборот компании вырос до 131 миллиона долларов в год, Ларри продолжал лично беседовать с каждым, прежде чем компания нанимала его. Вот и говорите потом, что руководство должно знать своих служащих…
На следующий год (1988) компания Oracle представила реализацию набора инструментов для автоматизированного проектирования и создания программ (CASE, computer-aided software engineering), а также более полную поддержку больших транзакционных объемов. Это было началом революции сред разработки, обеспечивающих разработчиков совместимым, и что лучше всего, стандартизованным набором основных инструментов для проектирования и производства приложений. Поддержка ANSI стандарта языка SQL, бесплатные инструменты для разработки и поддержка служили приманкой для тех, кто хотел перейти на платформу Oracle. По слухам, поэтому Ларри Еллисон так поддерживал группы новостей, используемые им для привлечения новых клиентов!
В 1989 году Oracle выпустила версию 6.2, работавшую на кластерной системе VMS/VAX компании Digital. Являясь революционным решением для ИТ индустрии, она обеспечивала действительную масштабируемую архитектуру, сопоставимую с системами, стоившими в десять раз больше, чем вместе взятые миникомпьютерные системные кластеры. Эта технология является поистине ключевой для современной электронной коммерции и бизнес-приложений.
Свою следующую версию СУБД, формально называемую Oracle7, компания выпустила в 1993 году. Она предназначалась для операционной системы UNIX, что являлось значимым отходом от систем Digital, используемых в прошлом. Вместе с Oracle7 появился стоимостной оптимизатор исполнения запросов (cost-based optimizer). Введение оптимизатора стоимости исполнения запросов позволяло осуществлять самоконтроль систем баз данных, облегчая тем самым жизнь администраторов БД. Наиболее важным свойством Oracle7, однако, являлось то, что она поддерживала очень большие базы данных (VLDB, very large database). Это означало, что Oracle теперь могла хранить и извлекать данные из баз данных, имеющих размеры более 5 терабайт, тем самым прокладывая путь к созданию хранилищ данных (data warehouse), что обеспечило ключевое превосходство Oracle над другими конкурентами.
В 1994 году широкой публике стала доступна Oracle версии 7.1, обеспечивающая поддержку выполнения параллельных операций, таких как запросы, загрузка и создание индексов. В этом же году произошло и печальное событие – скончался от рака Боб Майнер (один из основателей компании). Тремя годами позднее (1997), была выпущена Oracle8, включающая в себя поддержку объектно-реляционных возможностей, а также поддержку VLDB. Тогда же компания приняла стратегическое решение обеспечить поддержку языка программирования Java, сознавая значение Интернета в будущем.
В 1998 году Oracle добавила поддержку операционной системы Linux, уже открыто выступая против Microsoft. Компания продолжала тратить время и деньги на решения, не принадлежащие Microsoft, такие как концепция «сетевого компьютера (network computer)», описанная Ларри Еллисоном в 1996 году.
В 1999 году для широкой публики стала доступна Oracle8i, включающая в себя поддержку Java Virtual Machine (JVM) и, по сути, совместимая с Интернетом (отсюда буква i в названии). В настоящее время объемы продаж компании выросли до более 8 миллиардов долларов США.
И вот наступил печально известный 2000 год (и его проблема). Однако компьютерные системы по всему миру не рухнули, все мы остались живы и Армагеддон не наступил (сейчас, по крайней мере). И появилась Oracle9i! Ларри Эллисон стал одним из богатейших людей на планете, поскольку уровень продаж Oracle достиг более 10,1 миллиарда долларов США, а господству Microsoft был нанесен серьезный удар. Сегодня СУБД Oracle являются основным выбором для реляционных баз данных в электронной коммерции и для решений по планированию ресурсов предприятий.
Как видите, Oracle на самом деле внес значимый вклад в развитие ИТ индустрии за эти годы. Из скромной компании, имевшей всего один контракт, она выросла в гиганта, чей объем продаж составляет более 10 миллиардов долларов США в год, что не может не впечатлять. Oracle является агрессивной компанией, ведомой агрессивным главным администратором, благодаря чему компания преодолевает препятствия и совершает новые технологические прорывы.
Введение в Data Mining (глубинный анализ данных) средствами SQL Server
Эрик Чарран (Eric Charran)
Определение Data Mining
Чтобы представить себе полную картину и получить необходимую информацию, нужно понимать основные принципы, стоящие за требованиями, методологиями и тенденциями развития бизнеса. Это не менее важно, чем реализация усовершенствованных систем поддержки принятия решений (Decision Support System). Информация об организации, собранная из различных источников может быть объединена в формат, с помощью которого управленческий персонал и бизнес-аналитики смогут проникнуть в суть деловой практики, а также извлекать информацию, помогающую планировать дальнейшее направление развития бизнеса. Вот те задачи, решение которых data mining делает возможным.
Data mining представляет собой следующий существенных шаг за созданием хранилищ данных, сделавших доступным для пользователей исторический и основанный на агрегировании информационный мир. Data mining позволяет организациям собирать жизненную информацию относительно своей деятельности, заказчиков, продаж и маркетинга и систематизировать ее так, чтобы позволить участникам бизнеса принимать упреждающие решения о том, на каких направлениях нужно сосредотачивать свои ресурсы. Это дает возможность «капитанам бизнеса» управлять курсом организации и способствовать дальнейшим успехам своего предприятия. При обработке в среде data mining информации, собранной организацией в ходе своей деятельности, могут быть получены результаты, позволяющие выявить тенденции бизнеса и рынка, например, информацию о заказчиках и то, как нацелить свою деятельность для получения максимального дохода от основных заказчиков.
Data mining не является «интеллектуальным» инструментом или каркасом приложения. Приложения класса Business intelligence, обычно работающие с хранилищами данных организации, используется для анализа и обнаружения информации относительно прошлой производительности на уровне агрегированных данных. Хранилища данных и приложения business intelligence предоставляют пользователям метод предсказывать будущие тенденции из анализа найденных ранее в данных организации закономерностей. Data mining является более интуитивным инструментом, позволяющим осуществить более глубокое проникновение в суть вещей, за пределы хранилища данных. Реализация data mining в организации будет служить руководством по обнаружению неотъемлемых закономерностей и тенденций в исторической информации, а также для статистических прогнозов, группировок и классификации данных.
Обычные реализации хранилищ данных организаций позволяют пользователям получать ответы на вопросы типа: «Как много продаж (с разбиением по территориям и продавцам) было сделано за период с мая по июнь 1999 года?». Data mining позволяет лицам, принимающим бизнес-решения, получать ответы на вопросы типа: «Кто является основным заказчиком, приобретающим определенный продукт, продаваемый нами?» или «Географически, насколько хорошо будет продаваться некоторая линия продуктов в определенном регионе и кто, исходя из результатов продаж подобных продуктов в этом регионе, будет покупать их?».
Через использование инструментов, подобных SQL Server 2000 Analysis Services и таких методологий, как реализация хранилищ данных в Microsoft Data Warehousing Framework, data mining может быть успешно реализован и задействован как следующий шаг в обнаружении и раскрытии необходимых для принятия бизнес-решений данных.
Методологии Data Mining
Глубинный анализ данных достигается через использование модели data mining. Эта модель служит в качестве «фильтра», захватывающего и обнаруживающего важную информацию, используемую управленческим персоналом для получения прогнозов относительно будущих тенденций. Модель data mining является необходимым ключевым компонентом для начала осмысления и предсказания тенденций, основываясь на собранных бизнес-данных. Зачастую в организациях data mining может использоваться в некоторых бизнес-функциях либо оперативно, либо для поддержки принятия решений о направлениях деловой активности. Обе эти методологии требуют использования модели data mining для обеспечения подобной деятельности.
Заставьте SQL Server отвечать на конструкцию ORDER BY
Представления в SQL Server не поддерживают конструкцию ORDER BY, но это не должно останавливать вас от наведения порядка в ваших данных. Эта статья научит вас, как сортировать результаты, получаемые из представления, несмотря на это небольшое ограничение.
Сьюзен Наркинс (Susan Harkins), Мартин В.Р. Рейд (Martin W. P. Reid)
Случается, что иногда то, как вы представляете ваши данные, оказывается важнее самих данных. Одной из простейших техник представления данных является их сортировка некоторым значимым способом, но представления в SQL Server не поддерживают конструкцию ORDER BY. В этой статье вы узнаете, как сортировать результаты, получаемые из представлений, несмотря на это небольшое ограничение.
О представлениях
В SQL Server представления являются одной из простейших структур для
отображения данных. Представление обычно извлекает ограниченный набор записей.
Вы можете получить все данные, но в этом, как правило, нет нужды. Представления
также являются одними из наиболее гибких инструментов SQL Server, потому что:
Они позволяют пользователям видеть ограниченное количество данных и, в то же время, предотвращают доступ к самим таблицам, обеспечивая псевдо уровень безопасности.
Они дают возможность представить упрощенную версию ваших данных, а это означает, что пользователям нет нужды хорошо знать структуру вашей базы данных, чтобы использовать ваше приложение.
Они могут увеличить производительность, при передаче данных по сети.
Представление, однако, имеет некоторые ограничения:
Вы не можете использовать конструкцию ORDER BY.
Вы не можете использовать параметры для передачи критерия.
Вы не можете использовать представление с временными таблицами.
Performance
Маниш Рават (Manish Rawat)
Индексирование является одним из наиболее значимым элементов в увеличении производительности SQL Server. Правильно написанный запрос не проявит своей эффективности, до тех пор пока не будет подкреплен соответствующим индексом или индексами на таблице(цах), используемой в запросе, особенно если эти таблицы велики.
Индексы предназначены для ускорения выборки данных, поэтому в центре внимания этой статьи находятся способы, которыми вы можете выбрать лучшие индексы для быстрейшего получения данных. Для этого необходимо выполнить два следующих шага:
Индексирование может оказаться достаточно сложной задачей, если вы слабо знакомы с вашими базами данных, связями между таблицами и тем, как запросы описаны в хранимых процедурах и встроенном SQL. Сколько компаний, для которых вы работаете, имеют надлежащую диаграмму связей ERD (Entity relationship diagram) своих баз данных и придерживаются стиля программирования, почерпнутого из учебников? В реальной жизни зачастую на все не хватает времени, а это приводит к снижению производительности базы данных SQL Server.
Если вы уже имели дело с оптимизацией производительности баз данных (по крайней мере на достаточном уровне) или хотите предотвратить потенциальные проблемы производительности ваших баз данных в будущем, следование этим шагам должно помочь вам в настройки таблиц, точно так же, как это помогло мне.