Преимущества СУБД OracleИсточник: oracle oracle
Oracle - лидер среди поставщиков встроенных СУБД Ведущая аналитическая фирма IDC в своем обзоре "Поставщики встроенных СУБД в 2007" назвала компанию Oracle ведущим поставщиком с долей рынка в 26.3%. IDC определяет встроенные СУБД как те, которые проданы независимым поставщикам программного или аппаратного обеспечения и затем используются как компоненты внутри более крупных программных или аппаратных продуктов, разрабатываемых компанией-партнером. Эти технологии являются уникальными, реализованными только в СУБД Oracle. RACТехнология Real Application Cluster, появившаяся в 9-й версии СУБД Oracle, позволяет объединять сервера, обслуживающие СУБД в одну <большую базу данных>, что позволяет достичь двух ключевых целей:
Похожие технологии реализованы в Microsoft SQL Server 2008, но имеется одно существенное отличие: Microsoft Application Cluster позволяет повысить отказоустойчивость системы в целом, но без влияния на производительность. Таким образом, использование RAC позволяет значительно повысить производительность системы, которая дошла до своего <физического потолка>, с сохранением средств, потраченных на это оборудование, и повысить отказоустойчивость системы. Как следствие - надежность и экономия. RATТехнология Real Application Testing позволяет значительно снизить затраты на проведение плановых изменений в конфигурации существующего программного или аппаратного обеспечения. Суть технологии RAT заключается в воспроизведении нагрузки на тестовой базе данных в точном соответствии с нагрузкой на рабочем сервере. Active Data GuardЭта технология позволяет создать резервный сервер основной базы данных с применением всех изменений, сделанных на основном сервере. Получается система, где работают как минимум два сервера: основной и резервный. В случае выхода из строя или плановой остановки основного сервера в работу автоматически вступает резервный сервер, и все пользователи автоматически переключаются и продолжают работу на резервном сервере. Технология проста в реализации и настройке и не требует больших затрат на развертывание и оборудование. Физически резервный сервер может находиться в другом помещении, здании или даже городе. Все, что требуется, - это обычное сетевое соединение между двумя серверами. Можно использовать несколько резервных серверов для одного рабочего сервера. Какие преимущества предоставляет использование этой технологии ?
Похожие технологии реализованы и в DB2 и в MS SQL Server, но Oracle Data Guard выгодно отличается простотой реализации и возможностью использовать резервный сервер в работе и резервном копировании, а также поддержкой различных режимов синхронизации основного и резервного сервера: синхронный, асинхронный, отложенный. Total RecallСутью технологии Total Recall является возможность разгрузки базы данных от информации устаревшей, но которую необходимо хранить по требованиям бизнеса или контролирующих органов с сохранением обычного доступа к этой информации. Использование Total Recall позволяет разгрузить таблицы базы данных от накопленной и редко использующейся информации. Но сохраняется возможность выполнить обычный SQL запрос и получить такую информацию на любой момент в прошлом, т.е. не требуется вносить какие-то изменения в существующее приложение, работающее с базой. Помимо этого, Total Recall обеспечивает неизменность исторической информации и защиту от ее подделки. Похожих или аналогичных технологий в других СУБД пока не реализовано. In Memory Database CacheУникальная технология In Memory Database Cache реализована на базе существующей базы данных Oracle TimesTen in memory database. Эта СУБД за счет ряда применяемых уникальных решений позволяет увеличить скорость обработки транзакций и выдачи запросов более чем на порядок (т.е. в 10 раз), чем обычная СУБД Oracle Database. Эта СУБД ориентирована на хранение и обработку данных только в оперативной памяти сервера. Начиная с 10-й версии Oracle Database, СУБД Oracle TimesTen может выступать в качестве промежуточного звена между клиентским приложением и Oracle Database. В этом случае TimesTen реализует функции сверхбыстрого кэша данных, принимая и обрабатывая транзакции и передавая обработанные данные на хранение в Oracle Database. Такая архитектура позволяет значительно повысить потенциал и расширить сферу применения Oracle Database. Фактически, в такой архитектуре Oracle Database способна справиться с любой транзакционной нагрузкой. Automatic Storage ManagementТехнология ASM приносит принципиально новые концепции в управление дисковой подсистемой сервера базы данных. Суть этой технологии заключается в абстрагировании дисковой подсистемы СУБД от файлов на жестком диске в файловой системе и абстрагировании собственно сервера базы данных от расположения файлов на дисках. В ASM управление осуществляется не файлами на дисках, а разделом диска, не форматированным в файловой системе. Причем, если используется не один жесткий диск, а набор дисков или RAID-массивов, эти диски объединяются в группу ASM и выглядят для СУБД как один жесткий диск. Решением задачи по распараллеливанию данных по жестким дискам для достижения оптимальной производительности занимается теперь не системный администратор, а экземпляр ASM в автоматическом режиме и эффективней, чем это мог бы сделать администратор БД. Также решается задача по обеспечению надежности за счет избыточности хранимых данных. Уровень избыточности задается системным администратором. Теперь возможно извлекать и добавлять жесткие диски для базы данных <налету>, путем выполнения простых команд ASM. Поскольку ASM - это отдельный экземпляр, т.е. отдельнаый программный комплекс, не связанный с СУБД, один экземпляр ASM может обслуживать несколько экземпляров СУБД. Аналогичных решений в других СУБД пока не предложено. Вместе с тем, трудно оспаривать выгоды по производительности и упрощению (а значит повышению надежности) администрирования СУБД, использующей ASM. На сегодняшний день существуют как проприетарные, так свободно используемые системы управления базами данных, например, такие как:
Каждая система имеет свои особенности, преимущества и недостатки и свою цену. СУБД Oracle является старейшей СУБД, первая версия появилась в 1979 году. С тех пор Oracle развивался, становился быстрее, надежней и удобней для разработчика и пользователя. Фактически, конкурирующие СУБД повторяют тот путь, который прошел в своем развитии Oracle, и реализуют у себя технологии, реализованные в Oracle Database с годичным и более отставанием и с различным успехом. Как уже было отмечено, на сегодняшний день Oracle обладает как минимум 4-мя уникальными технологиями, обеспечивающими конкурентное преимущество этой СУБД. О том, что Oracle Database является признанным лидером в этой отрасли производства ПО, свидетельствует тот факт, что по итогам 2007 года Oracle Database принадлежит 47% мирового рынка систем управления базами данных. Какими же именно преимуществами обеспечен этот факт? Некоторые из технологий, реализованных в Oracle Database, имеют аналоги в других СУБД, например, MS SQL Server, но практически во всех сравнениях аналогий, Oracle предоставляет более широкий и удобный функционал в рассматриваемой области. Сравнение Oracle Database 10g-11g и Microsoft SQL Server 2005-2008Версионный режим Суть этой технологии заключается в обеспечении согласованного чтения данных. Т.е., представим ситуацию: в 10:00 пользователь А начинает чтение данных из таблицы. В 10:05 он прочитает только половину данных, которые хранятся в таблице. В 10:03 пользователь В изменяет данные этой таблицы от середины и до конца. Какие данные должен получить пользователь А, когда он дойдет до конца таблицы ? Очевидно, что он должен получить ту картину, которая была на момент начала работы его запроса, т.е. без учета изменений, которые внес пользователь В. Это необходимо для защиты транзакций от несогласованных изменений данных, которые могли быть вызваны другой, конкурентной, транзакцией, и обеспечивает изоляцию транзакций. Версионный режим появился впервые в версии SQL Server 2005 и практически полностью копирует реализацию в Oracle, которая появилась 83-м году в 3-й версии. Но есть одно существенное отличие: в MS SQL Server версии строк хранятся в tempdb, в то время как в Oracle Database - в отдельной структуре сегментов отката (в Oracle для отдельных транзакций можно создавать отдельные сегменты отката ). Tempdb часто становится головной болью администратора MS SQL Server и без версионности, проблеме i/o в tempdb на msdn посвящена не одна нота, т.к. там помимо временных таблиц и табличных переменных хранятся сортировки и курсоры. Добавление в tempdb еще и версий строк делает и без того перегруженный tempdb узким местом в системе. Следующее важное различие в том, что сегменты отката Oracle Database защищены от безразмерного роста и место пространства отката используется циклически (размер и их количество может задаваться администратором). При неправильном размере сегментов очень длинная транзакция может получить ошибку ORA-01555 snapshot too old, в результате чего откатится лишь одна транзакция, в то время как в MS SQL Server рост tempdb не ограничен, в результате одна <неудачная> транзакция может просто переполнить tempdb и остановить работу всех пользователей (есть job, которым можно как-то попробовать среагировать). В Oracle Database, в отличие от MS SQL Server, хранятся не версии строк, а блоки данных, что позволяет накладывать версионность универсально на любые объекты, плюс оптимизировать операции ввода-вывода. Например, при необходимости делать клон блока в памяти, который уже помечен на сброс (на жесткий диск), и не ждать, пока блок дождется своей очереди и окажется на диске. Версионный механизм позволяет в Oracle Database делать ретроспективные (flashback) запросы и видеть состояние таблиц в прошлом, чего нет в SQL Server. Размер блока Блок базы данных - это наименьшая единица информации, которую СУБД читает или записывает на жесткий диск или в оперативную память. Например, чтобы прочитать одну строку из таблицы, которая занимает 200 байт, требуется прочитать из памяти или жесткого диска блок целиком, размер которого составляет, например, 8000 байт и затем извлечь из прочитанного блока нужную строку. Очевидно, что в этом случае 7800 байт были прочитаны зря. Обратная ситуация, когда требуется прочитать все строки таблицы, СУБД будет вынуждена прочитать тем больше блоков, чем больше строк и больше размер одной строки. Выгодно было бы прочитать 1 блок размером, например 32 килобайта, чем читать 4 блока размером по 8 килобайт. Одной из приоритетных задач по настройке производительности является минимизация количества логических чтений (прочитанных блоков), и в Oracle Database администратор имеет множество механизмов для решения этой задачи. Кроме того, в Oracle Database реализован механизм управления заполнением пространства блока (pct_free, pct_used), что позволяет эффективно настраивать СУБД для решения той или иной задачи. В SQL Server размер блока (page size) равен 8 килобайт и не может быть изменен, что сильно ограничивает возможность настройки системы, особенно DSS систем (хранилища данных). В Oracle Database размер блока задается во время создания базы данных, и, более того, для каждого табличного пространства может быть задан свой размер блока, например, для табличных пространств с маленькими, часто меняющимися таблицами - меньший размер, для табличных пространств с большими, редко изменяющимися таблицами, содержащими большой объем данных - больший размер, что существенно может повлиять на производительность системы в целом. Индексы В Oracle Database поддерживаются различные типы индексов, которые не реализованы в MS SQL Server, например: B-tree cluster indexes, Hash cluster indexes, Reverse key indexes, Bitmap indexes, Bitmap join indexes. Каждый из типов индексов может обеспечить существенный прирост производительности в той или иной ситуации.
Использование Bitmap index позволяет значительно ускорить выбор по полям с низкой селективностью, т.е. небольшим количеством различающихся значений в поле. Использование такого типа индекса - один из путей решения проблемы производительности в системах хранилищ данных. Использование Reverse index позволяет уменьшить конкуренцию за блоки БД при вставке в поле монотонно нарастающих значений: например, номеров документов или уникального ключа. Это еще один инструмент администратора базы данных по повышению производительности системы без увеличения мощности оборудования. Indexed views и Оracle materialized views В Oracle Database, начиная с 9-й версии реализован механизм материализованных представлений, который является одним из ключевых моментов, обеспечивающих функционирование хранилищ данных, OLAP и DataMining. Суть этой технологии заключается в хранении результатов сложных и очень сложных SQL запросов, формирующих какой-либо отчет, либо часть отчета в виде особых таблиц - материализованных представлений. Это позволяет не тратить время каждый раз при исполнении таких запросов на выборку и анализ данных, а выбирать готовые результаты их материализованного представления, что очень существенно позволяет ускорить работу отчетных систем и систем поиска данных. В MS SQL Server аналогичная технология появилась только с версии 2005 и имеет длинный список ограничений на построение материализованных представлений, так, например представление не должно содержать следующего списка операторов: ANY, NOT ANY, OPENROWSET, OPENQUERY, arithmetic on imprecise (float, real) values, OPENXML, COMPUTE, COMPUTE BY, ORDER BY,CONVERT producing an imprecise result, OUTER join, COUNT(*) reference to a base table with a disabled clustered index, GROUP BY ALL reference to a table or function in a different database, Derived table (subquery in FROM list) reference to another view, DISTINCT, ROWSET function, EXISTS, NOT EXISTS, self-join expressions on aggregate results (e.g. SUM(x)+SUM(x)), STDEV, STDEVP, VAR, VARP, AVG, full-text predicates (CONTAINS, FREETEXT, CONTAINSTABLE, FREETEXTTABLE), Subquery, imprecise constants (e.g. 2.34e5), SUM on nullable expressions, inline or table-valued functions, table hints (e.g. NOLOCK), MIN, MAX, text, ntext, image, filestream, or XML columns, non-deterministic expressions, UNION. Как видите, список более чем представительный. В Oracle Database ограничений существенно меньше. Кроме того, традиционно, в Oracle имеются и расширения этой технологии: автоматическая перезапись SQL запросов, если существует подходящее материализованное представление, которых нет в других СУБД. Это расширение позволяет работать с материализованными представлениями без модификации исходного кода приложения, которое работает с этой базой данных. Трудно переоценить значимость этой возможности для администраторов базы данных и конечных пользователей. Также только в Oracle Database реализовано кластерное хранение данных, когда в одном блоке базы данных хранятся данные двух или более связанных таблиц. Таким образом, при чтении связанных данных из двух или более таблиц обеспечивается чтение одного блока данных, вместо того, чтобы читать два или более блока для каждой таблицы. Список существенных отличий на уровне функционирования базы данных можно продолжать еще долго, например возможность использования и хранения готовых планов выполнения SQL запросов и т.п. Конечно, эти различия востребованы не всегда, и для того, чтобы правильно воспользоваться преимуществами Oracle Database требуется определенная квалификация. Но в критических ситуациях и для повышения производительности базы данных в каждом конкретном случае эти преимущества могут стать и фактически становятся неоспоримым конкурентным преимуществом, обеспечивающим прирост производительности не решением <в лоб> - закупкой более мощного, а значит и более дорого оборудования, а путем тонкой настройки СУБД для каждого конкретного случая. Oracle оставляет своему заказчику выбор: либо интеллектуальная настройка и самонастройка базы данных, либо переход на более мощное оборудование или создание кластера серверов. Конкурирующие СУБД, несмотря на красивый и удобный интерфейс администратора базы данных, фактически не предоставляют адекватных средств настройки СУБД и оставляют единственный путь повышения производительности для всех случаев: повышение мощности оборудования. Зачем тратить деньги на новое оборудование, если есть возможность <выжать> максимум из существующего? Также Oracle Database остается одной из самых удобных для разработки СУБД. Например, в Oracle Database давно существует мощный внутренний процедурный язык: PL/SQL, который позволяет разрабатывать триггеры, хранимые процедуры и функции любой сложности. Ключевыми особенностями являются наличие блоков try/catch (безопасное выполнение коды), которое появилось только в 2005-й версии MS SQL Server, наличие пакетов (программных структур, которые объединяют типы, переменные, функции и процедуры в одну подпрограмму), наличие неограниченной рекурсии (MS SQL Server вложенность рекурсии ограничена 32 уровнями). Существенной особенностью Oracle Database, не реализованной в MS SQL Server, является наличие проверки взаимосвязи различных объектов базы данных. Так, например, при модификации таблицы в базе данных Oracle (изменение типа поля, удаление поля и т.п.), процедуры, триггеры и функции, в которых были обращения к этой таблице, будут помечены как инвалидные и не будут исполнятся без вмешательства администратора. Это позволяет исключить выполнение заведомо ошибочных действий в процедурах (например, обращение к несуществующему полю) и функциях. В MS SQL Server процедура будет выполняться, пока не будет выполнен вызов к уже не существующему полю в таблице, после чего процедура аварийно завершит свою работу. Также в Oracle PL/SQL есть поддержка объектно-ориентированных типов, поддержка массивов и вложенных таблиц. В Oracle Database, в отличие от MS SQL Server давно есть поддержка всех видов триггеров: <до>, <после>, <вместо> выполнения. В MS SQL Server 2005 нет типа <до> В MS SQL Server 2005 диалект обновился: появился оператор WITH и аналитические функции. В Oracle Database аналогичный функционал появился еще в 8-й версии, аналитические функции более разнообразны, кроме этого в Oracle Database поддерживаются операторы MERGE INTO, model и регулярные выражения в SQL. Использование регулярных выражений в различных частях SQL запроса появилось с 10-й версии Oracle Database и является существенным подспорьем разработчику при программировании аналитических SQL запросов. Процедуры и функции, написанные на PL/SQL, можно компилировать в нативную для операционной системы библиотеку, например, DLL. Это позволяет работать такой функции, как части СУБД Oracle Database, написанной на С++, без этапа интерпретации и разбора, что позволяет значительно ускорить работу такой процедуры. В Oracle Database поддерживаются автономные транзакции в PL/SQL блоках, а также выполнение SQL запросов <из текста>, так, как это делается в приложении на с++, например. На сайте www.oracle.com давно находятся в свободном доступе компоненты ODP.NET, которые позволяют удобно и эффективно работать с СУБД Oracle из среды MS Visual Studio. Для других средств разработки (Borland Delphi, C++ Builder и прочих) реализовано множество компонент и инструментов доступа и работы с Oracle Database, как бесплатных, так и коммерческих. Производительность Производительность, наряду с надежностью, - основной критерий выбора Oracle Database в качестве системы управления базами данных. Существуют синтетические тесты производительности, такие, например, как TPC (www.tpc.org). В тесте TPC-С, который проверят производительность СУБД в OLTP системе, Oracle Database занимает одну из лидирующих позиций. На синтетических тестах и в реальной работе очень часто любят показывать результаты тестирования MySQL или MS SQL Server, в которых при небольшом объеме данных и специализированной нагрузке производительность этих СУБД значительно превосходит производительность Oracle Database или, например, IBM DB2 UDB, т.е. продуктов, которые считаются СУБД <промышленного уровня>. Это означает, что эти СУБД способны обрабатывать фактически неограниченный объем данных и число работающих пользователей. Конечно, в самих в этих словах уже заложена <информационная мина>, поскольку невозможно объять необъятное. Под словами <неограниченный> следует понимать, что именно эти две СУБД являются лидерами по хранимому объему данных и работающим пользователям, при этом сохраняя весь свой разносторонний функционал. Кроме того, если внимательно посмотреть на синтетические тесты, то можно заметить тот факт, что производительность Oracle Database практически не меняется, а то и увеличивается при возрастании обрабатываемого объема данных. Именно это свойство отличает промышленную систему от настольной или системы рабочих групп. Проводя аналогии в автомобильной технике, можно сказать, что никому в голову не придет сравнивать скоростные характеристики легкового автомобиля и грузовика. Пустой легковой автомобиль способен ехать со скоростью 160 км/ч, а пустой грузовик - 80 км/ч. Если на легковой автомобиль нагрузить 200 кг груза, он будет ехать со скоростью 120 км/ч, а грузовой - 80. Если нагрузить 600 кг груза, то легковой будет ехать со скоростью 60 км/с, а грузовой 80 км/ч. И, если нагрузить тонну груза, то скорость движения легкового автомобиля будет равно 0 км/ч, а грузового - по-прежнему 80. В этом - суть промышленного сервера баз данных: устойчивость к нагрузке. Впрочем, это не мешает СУБД Oracle лидировать в тестах и ставить мировые рекорды производительности. Масштабируемость В отличие от MS SQL Server, Oracle Database работает на большинстве известных платформ и операционных систем: Windows (в том числе не серверные версии), Unix, Linux, MacOS. Это существенное преимущество Oracle Database. Преимущество заключается не только в том, что сейчас Oracle оставляет заказчику выбор операционной системы и аппаратной платформы, но и в том, что в корпорации существует опыт и культура разработки именно кроссплатформенных систем, следовательно, при появлении новой операционной системы, более мощной и эффективной, можно быть уверенным, что под эту операционную систему или платформу появится версия Oracle Database. В случае, если СУБД базируется только на одной операционной системе, то заказчик полностью зависит не только от производителя собственно СУБД, но и от производителя операционной системы. Зависимость эта тем более усугубляется, если производитель и СУБД и ОС - один и тот же. Стоимость обслуживания Существуют различные исследования на эту тему. Например, в исследованиях, опубликованных на сайте Microsoft, как дважды два доказывается, что обслуживание SQL Server стоит намного дешевле и требует меньше усилий со стороны администратора. На сайте Oracle опубликованы не менее солидные и содержательные исследования, в которых точно также неоспоримо доказывается факт более низкой стоимости обслуживания именно Oracle Database. Причем оба исследования проводятся независимыми компаниями. Исходя из нашего личного опыта, можно сказать, что администрирование SQL Server осуществляется из действительно удобной и логично-простой среды SQL Server Management Studio. В Oracle Database также существует удобная и простая среда выполнения всех административных действий: Enterprise manager. Начиная с 10-й версии, EM имеет web-интерфейс. Следует отметить, что из Oracle EM можно управлять не только единичным экземпляром базы данных, но и кластером и сетью GRID-серверов. В 10-й, и в 11-й версии Oracle Database улучшены и дополнены функции самоадминистрирования и самодиагностики сервера. В 10-й версии появилась функции автоматического сбора статистики, анализа и выдачи рекомендаций. Отслеживание различных показателей, с выдачей сообщения при достижении пороговых или критических величин. Анализатор SQL запросов позволяет выбрать и настраивать наиболее <тяжелые> SQL запросы, причем предусмотрен вариант, в котором администратор просто выбирает проблемный SQL запрос, просматривает и применяет рекомендации SQL Tuning Advisor, все это происходит в консоли EM. В MS SQL Server выполнение аналогичной задачи выполняется ручным способом, на порядок дольше, чем в Oracle Database, за исключением настройки индексов.
Использование появившейся в 10-й версии технологии Flashback table позволяет значительно упростить восстановление после пользовательских ошибок. Больше не требуется восстановление из резервной копии, достаточно выбрать удаленный объект и восстановить его из <корзины>. Следует отметить, что в MS SQL Server также возможно выполнение аналогичной операции, но требует значительно больше времени: требуется восстановление из резервной копии, выбор точки восстановления и накат потерянных транзакций вручную. Тоже самое касается и восстановления после ошибочной транзакции. В Oracle Database это делается как через консоль EM, так и вручную, SQL операторами, причем требуется просто выбрать момент в прошлом, на который требуется восстановление. В MS SQL Server восстановление также производится из резервной копии с последующим ручным накатом журналов. Таким образом, Oracle Database предоставляет пользователю три варианта:
Аналогичные средства других СУБД либо жестко ограничивают администратора ввиду полной автоматизации процессов настройки, например, оперативной памяти, либо предоставляют менее богатый функционал для выполнения стандартных операций. Сравнение Oracle Database 10g-11g и IBM DB2 UDB 8-9IBM DB2 UDB и Oracle Database имеют неофициальный статус баз данных "промышленного" уровня. Эти две СУБД во многом похожи, но имеются и отличия, влияющие на эффективность и стабильность СУБД. В таблице приведены некоторые отличия в работе внутренних механизмов этих СУБД.
В первой строке сравнивается механизм блокировок и обеспечения целостности чтения. Более подробно в таблице:
Во второй строке - работа в кластере, Oracle RAC и IBM EEE:
Более подробно по поддерживаемым типам индексов:
В Oracle Database больше поддерживаемых вариантов партиционирования:
Сравнение Oracle Database 10g-11g и MySQL 4-5Разумеется, и мы отдаем себе в этом отчет, сравнивать MySQL и Oracle Database - это все равно, что сравнивать велосипед и грузовик Камаз. По своему предназначению и функциональному наполнению эти СУБД несравнимы. Если коротко, основное отличие этих СУБД в том, что MySQL предназначен для решения узкого круга задач, ввиду своей функциональной неполноценности, в то время как Oracle Database не имеет ограничений в применении - от простой базы данных, обслуживающей сайт или небольшую компанию, до огромных и мощных хранилищ данных со встроенными решениями задач класса OLAP или DataMinig, хранящих любые данные: от простых таблиц до документов, видео-файлов, геоинформационных данных и т. п. Поэтому остановимся лишь на нескольких, наиболее часто обсуждаемых, моментах.
|