Систе́ма управле́ния ба́зами да́нных субд. Логическая независимость данных. Системы управления базами данных

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

Настоящая статья посвящена наиболее популярным системам управления базами данных и их основным особенностям. Критерием отбора СУБД для данного обзора является упоминание их в отчетах аналитических компаний, специализирующихся на анализе рынка соответствующих категорий программного обеспечения.

В настоящей статье мы не рассматриваем детальные технические особенности каждой СУБД - читатели, интересующиеся ими, могут обратиться к соответствующим интернет-ресурсам или специализированной литературе.

Требования к современным СУБД

Производительность

Задачи, стоящие перед современными компаниями, предъявляют к СУБД довольно высокие требования, немыслимые еще несколько лет назад. Одним из наиболее важных требований, с точки зрения пользователей и администраторов СУБД, является высокая производительность, то есть способность быстро обрабатывать запросы пользователей и выполнять транзакции. Немалую роль в этом вопросе играют средства оптимизации выполнения запросов и применения индексов, а также простота их использования. Одни СУБД содержат в своем составе соответствующие инструменты, другие СУБД - встроенные алгоритмы, применяемые автоматически.

Поддержка безопасности

Помимо производительности, одной из наиболее востребованных функций современных СУБД является встроенная поддержка безопасности, то есть способность обеспечить пользователю доступ к чтению и редактированию данных в соответствии с заранее заданными правилами, определяемыми в рамках решаемой задачи, а также надежная защита таблиц, хранящих эти правила. Способы реализации этого требования могут быть различными - от шифрования данных до аудита и анализа его результатов.

По данным ряда аналитических отчетов, наиболее высоко ценятся средства поддержки безопасности СУБД Oracle, DB2 и PostgreSQL.

Масштабируемость

Еще одним немаловажным требованием к СУБД может являться ее масштабируемость, то есть способность сохранять свою функциональность и производительность при возрастающей нагрузке и соответствующем ей обновлении аппаратного обеспечения, таком как расширение объема оперативной памяти, увеличение количества процессоров и аппаратных серверов. При добавлении ресурсов масштабируемая СУБД может их опознавать и использовать, тогда как немасштабируемая СУБД их игнорирует и их добавление не способствует ни росту ее производительности, ни возможности хранить и обрабатывать больший объем данных.

Масштабируемость и производительность СУБД взаимосвязаны - без масштабируемости рост производительности ограничен, и в тот момент, когда СУБД становится неспособна обеспечивать растущие потребности обслуживаемой ею задачи даже при добавлении дополнительных ресурсов, это становится серьезной проблемой.

Отметим, что те или иные ограничения подобного рода (такие как максимальный объем данных, число записей в таблице, количество пользователей) присущи в большей или меньшей степени всем СУБД и при столкновении с ними наблюдаются снижение производительности, возникновение ошибок, отказы в предоставлении доступа или в выполнении запросов. Именно поэтому важна способность преодолевать подобные ограничения за счет поддержки подключения новых ресурсов - вплоть до создания кластеров из нескольких компьютеров (данная функциональность сейчас поддерживается СУБД DB2 и Oracle).

Корректная обработка транзакций

Еще одним важным требованием является корректная обработка транзакций - групп последовательных операций, представляющих собой логические единицы работы с данными. Правила корректной обработки транзакций впервые были описаны автором реляционной модели данных Эдгаром Коддом в виде аббревиатуры ACID (Atomicity, Consistency, Isolation, Durability).

Свойство Atomicity (атомарность) означает, что транзакция является наименьшим, неделимым блоком алгоритма изменения данных. Другими словами, любые части (подоперации) транзакции либо выполняются все, либо не выполняется ни одна из них. Если транзакцию не удается полностью завершить, результаты всех до сих пор произведенных действий должны быть отменены, а система возвращается в исходное состояние (данное действие носит название отката транзакции).

Свойство Consistency (непротиворечивость) означает, что завершенная транзакция оставляет данные в непротиворечивом состоянии.

Свойство Isolation (изоляция) означает, что во время выполнения транзакции другие процессы не должны «видеть» данные в промежуточном состоянии. Например, если транзакция изменяет сразу несколько полей в базе данных, то другой запрос, произведенный во время выполнения транзакции, не должен вернуть одни из этих полей с новыми значениями, а другие - с исходными.

Свойство Durability (долговечность) означает, что независимо от наличия технических сбоев изменения, сделанные успешно завершенной транзакцией, останутся сохраненными после возвращения системы в работу.

По данным ряда аналитических отчетов, разработчики и администраторы наиболее высоко оценивают средства корректной обработки транзакций СУБД компаний Oracle и IBM. Впрочем, Microsoft SQL Server с этой точки зрения также оценивается очень высоко.

Другие требования

Для разработки структур баз данных и проектирования запросов принято использовать специализированные инструменты - средства моделирования данных. Такие инструменты могут выпускаться как производителями СУБД, так и независимыми поставщиками. Поддержка СУБД производителями подобных инструментов, как и наличие их в ассортименте программного обеспечения производителя СУБД, считается важным требованием к современным системам управления базами данных. Например, наличие в огромном ассортименте компании Oracle таких продуктов, как средство моделирования Oracle Designer и содержащее инструменты моделирования бесплатное средство разработки JDeveloper, высоко ценится разработчиками решений на основе СУБД Oracle, равно как и наличие поддержки моделирования данных в Visio - разработчиками решений на основе Microsoft SQL Server.

Многие современные СУБД содержат средства администрирования в комплекте поставки. Помимо этого нередко доступны и средства администрирования СУБД независимых производителей, таких как Embarcadero и Quest Software. Чем более популярна СУБД и чем более гибкой является политика работы с партнерами ее производителя, тем, как правило, больше средств администрирования этой СУБД доступно на рынке. С этой точки зрения лидерами являются Oracle и Microsoft - данные компании поставляют неплохие средства администрирования вместе со своими СУБД, да и средств администрирования этих СУБД от независимых производителей на рынке более чем достаточно. Неплохо обстоят дела с инструментами и у MySQL и PostgreSQL - будучи СУБД с открытым кодом, они поддерживаются сообществами разработчиков, производящими инструменты администрирования.

Требование поддержки XML в последнее время стало важным для пользователей современных СУБД и разработчиков решений на их основе, поскольку XML является стандартом де-факто для генерации документов и обмена данными между самыми разнообразными приложениями. Способность читать и генерировать XML-документы сейчас доступна в большинстве современных СУБД.

Поддержка различных платформ важна для разработчиков приложений, работающих в разнородной среде, и наиболее существенна для крупных компаний, имеющих, как правило, весьма разнообразную ИТ-инфраструктуру. Большинство современных СУБД поддердживают несколько платформ. Исключением являются СУБД производства Microsoft - список поддерживаемых ими платформ включает только различные версии Windows.

Все современные реляционные СУБД поддерживают язык запросов SQL. Что касается других языков, то их для написания серверного кода можно использовать в СУБД производства компаний Microsoft, Oracle, а также в СУБД PostgreSQL.

Корпоративные СУБД ведущих производителей

Informix Dynamic Server

Первая версия реляционной СУБД Informix (INFORMation on unIX) была выпущена в 1981 году. Современные версии этой СУБД (нынешнее название которой - Informix Dynamic Server) характеризуются высокой скоростью обработки транзакций, большой надежностью и простотой администрирования.

Наиболее часто Informix Dynamic Server используется на крупных предприятиях, в основном в крупных сетях розничной торговли и в телекоммуникационных компаниях - на основе этой СУБД создано несколько очень популярных биллинговых систем.

Сейчас Informix Dynamic Server принадлежит IBM. Последняя версия этой СУБД обладает высокими производительностью, масштабируемостью, доступностью, развитыми средствами поддержки репликаций, а также поддержкой кластеров, баланса загрузки, средствами обработки конкурирующих транзакций, средствами контроля доступа к данным на основе меток безопасности (вплоть до значений отдельных ячеек), средствами поддержки XML и создания SOA-решений. Сервер баз данных поставляется вместе с инструментом IBM Data Studio, включающим средства создания форм Informix 4GL, средства поддержки Blade-серверов, объектно-ориентированные средства создания клиентских приложений.

Дальнейшие планы развития Informix Dynamic Server включают совершенствование средств поддержки репликаций, повышения производительности, автоматизации различных задач, связанных с администрированием базы данных, инструментов для упрощения конфигурирования.

IBM DB2

Первая версия DB2 была создана компанией IBM в 1983 году для мэйнфреймов MVS и стала первой СУБД, поддерживающей язык SQL, который был разработан автором реляционной модели данных Э.Ф. Коддом.

Современная версия DB2 является объектно-реляционной СУБД и поддерживает операционные системы Linux, UNIX и Windows на различных аппаратных платформах, а также разные операционные системы IBM. Она поддерживает средства сжатия данных, предсказания возможных проблем и поддержки XML.

Несмотря на то что и Informix Dynamic Server и DB2 предназначены для крупных предприятий и принадлежат одной и той же компании IBM, они отлично сосуществуют за счет того, что созданы для решения разных задач. Если Informix Dynamic Server предназначен в первую очередь для создания решений, требующих высокопроизводительной обработки транзакций, то основные задачи, которые решаются с помощью DB2, - это создание и эксплуатация хранилищ данных и обработка сложных запросов.

Средства обеспечения безопасности DB2 высоко оцениваются ее пользователями наряду с производительностью и масштабируемостью.

Microsoft SQL Server

СУБД Microsoft SQL Server была создана в результате совместного проекта компаний Microsoft и Sybase в 1990 году. Через несколько лет эти компании на основе совместно созданного кода начали разрабатывать собственные СУБД, и версия 7.0 этого продукта была создана уже без участия Sybase. Версии этой СУБД существуют только для операционных систем производства Microsoft.

Основными особенностями последних версий SQL Server являются средства OLAP и аналитической обработки данных, средства хранения геопространственных данных, а также удобные в применении средства администрирования, организации репликаций и поддержки кластеров.

Основные потребители Microsoft SQL Server - это средние и крупные предприятия, хотя редакции этой СУБД для небольших компаний также успешно используются.

MySQL

Первая версия СУБД MySQL была выпущена в 1995 году разработчиками, считающими коммерческие СУБД слишком дорогостоящими. Будучи СУБД с открытым кодом, MySQL стала невероятно популярной - число загрузок ее дистрибутива составляет до 50 тыс. в день. Сервер MySQL можно применять свободно. Исключение составляет случай, когда эта СУБД является частью коммерческого продукта - тогда MySQL следует лицензировать. Платной также является техническая поддержка продукта.

MySQL используется в большом количестве интернет-решений, в качестве встроенной СУБД, в приложениях для телекомуникационных компаний, а также в некоторых других бизнес-приложениях.

Особенностями этой СУБД являются надежность, высокая производительность и простота применения. Ее архитектура позволяет отказаться от функций, не требующихся для решения конкретной задачи, и тем самым повысить производительность приложения - статистика опросов показывает, что 80% пользователей этой СУБД применяют только 30% ее возможностей.

Сейчас СУБД MySQL принадлежит компании Sun Microsystems, которая предоставляет для нее дополнительные услуги, позволяющие использовать эту СУБД на серверах производства Sun и совместно с программными решениями Sun.

Oracle Database 10g и 11g

Самая первая версия СУБД Oracle была создана в 1979 году и стала единственной на тот момент коммерческой СУБД, позволившей разработчикам бизнес-приложений прекратить создание собственных решений для хранения данных и перейти к универсальным решениям, функционирующим на разных платформах. К середине 80-х годов корпорация Oracle стала лидером рынка и сохраняет лидирующие позиции до сих пор.

Последние версии этой СУБД отличаются высокой надежностью, доступностью, безопасностью и производительностью, удобными средствами администрирования. Эта СУБД в первую очередь предназначена для крупных предприятий, а также для компаний, для которых критичны обработка транзакций и построение хранилищ данных, в том числе для предприятий среднего и малого бизнеса. Отметим также активную поддержку компанией Oracle разработчиков, использующих технологии.NET и Java, а также наличие инструмента Application Express для создания веб-приложений на основе СУБД Oracle.

PostgreSQL

СУБД PostgreSQL, как и СУБД компании Oracle, можно отнести к ветеранам - первые версии продукта, ставшего впоследствии тем, что ныне известно как PostgreSQL, появились еще в 80-х годах. С 1996 года PostgreSQL является СУБД с открытым кодом.

Основное назначение PostgreSQL - выполнение задач для крупных предприятий, требующих высокой степени безопасности и надежности. Эта СУБД используется в государственных органах многих стран, а также в тех отраслях и областях, где требуется обработка больших объемов данных и надежное выполнение транзакций (таких как генетические исследования, геоинформационные технологии, приложения для финансового сектора).

СУБД PostgreSQL состоит из ядра и необязательных к применению модулей, созданных сообществом разработчиков и предоставляющих самую разнообразную функциональность. Впрочем, применение большого числа модулей одновременно может сделать данную СУБД сложной в конфигурации, а кроме того, среди таких модулей до сих пор нет средств анализа данных. Однако доступны встраиваемые модули для процедурных языков, что позволяет создавать серверный код и добавлять к СУБД дополнительную функциональность.

Среди СУБД с открытым кодом PostgreSQL является наиболее масштабируемой (она поддерживает до 32 процессоров, тогда как масштабируемость MySQL ограничивается 12). На данный момент в планах дальнейшего развития этой СУБД - повышение производительности, усовершенствование средств поддержки кластеров и восстановление после сбоев.

Sybase Adaptive Server Enterprise

СУБД компании Sybase первоначально была результатом совместного проекта компаний Microsoft и Sybase, начатого в 80-х годах. В последующем эти компании начали отдельные проекты по дальнейшему развитию этого совместного продукта, а в середине 90-х годов Sybase SQL Server был переименован в Adaptive Server Enterprise.

Особенностями Adaptive Server Enterprise являются надежность, оптимальная стоимость и высокая производительность. В последние годы особое внимание при развитии этого продукта уделялось средствам обеспечения безопасности и повышению производительности. Именно безопасность, производительность и масштабируемость наиболее высоко оцениваются сегодня пользователями и администраторами этой СУБД.

Итак, мы рассмотрели основные возможности наиболее популярных систем управления базами данных. О выходе их новых версий и особенностях последних вы сможете узнавать из наших новостных блоков, а наиболее интересные новшества в мире СУБД будут освещаться в отдельных публикациях.

Системы управлении базами данных (СУБД) в последнее время стали неотъемлемой частью ИТ-инфраструктуры практически любой компании. Сейчас достаточно сложно найти компанию, которая бы не пользовалась системой 1С:Предприятие или какой-либо мощной ERP системой, такой как SAP или Microsoft Dynamics (CRM), которые используют СУБД для хранения своих данных. Почти все WEB-приложения используют СУБД для хранения информации о клиентах, наименований товаров и т.п. Если раньше СУБД использовались в основном для хранения текстовых и числовых данных, то сейчас в СУБД хранятся такие данные, как изображения, видеозаписи и многие другие типы данных. Объёмы баз данных в некоторых отраслях выросли до нескольких терабайт. Поэтому сейчас, как никогда ранее, повысились требования к надёжности и производительности систем управления базами данных. Лидирующие позиции на рынке среди СУБД занимает Microsoft SQL Server. Доля рынка Microsoft SQL Server, по данным Gartner, составляет 46,8%, остальная часть рынка принадлежит Oracle и IBM DB2, относительно небольшую часть рынка занимают СУБД Open Source, такие как Postgre и Firebird.

Microsoft SQL Server 2012 является новейшей и мощнейшей системой управления базами данных. Помимо стандартных для СУБД функций, SQL Server 2012 содержит большой набор интегрированных служб по анализу данных. Доступ к данным, расположенным на SQL Server могут получить любые приложения, разработанные на.Net и VisualStudio, а также приложения пакета Microsoft Office 2007. SQL Server 2012 обеспечивает высочайшую в своём классе масштабируемость, производительность и безопасность.

Microsoft SQL Server 2012 поддерживают более 15000 поставщиков программного обеспечения, его используют более 74,7% крупнейших компаний мира. Microsoft SQL Server 2012 используют практически все ERP и CRMсистемы, как SAP, Microsoft Dynamics, 1C: Предприятие, Microsoft CRM.

Платформа данных SQL Server

SQL Server 2012 предоставляет средства по созданию и управлению реляционными базами данных. Также SQL Server 2012 поддерживает новые средства аналитической обработки данных (Analysis Services), средства отчётности (Reporting Services), а также множество средств, упрощающих разработку приложений.

Ввиду того, что на SQL Server работают критические бизнес-приложения, предприятия выдвигают очень жёсткие требования по производительности, отказоустойчивости и безопасности самой СУБД.

Безопасноcть SQL Server 2012:

  • Интерактивное шифрование баз данных. SQL Server 2012 поддерживает прозрачное шифрование баз данных и журналов транзакций. Данная функция позволяет заказчику быть уверенным в том, что неправомочный доступ к данным компании невозможно будет получить, даже завладев сервером или системой хранения данных.
  • Поддержка PKI. SQL Server 2012 поддерживает инфраструктуру сертификатов. Доступ к данным можно ограничивать и шифровать при помощи сертификатов и аппаратных модулей защиты (TPM).
  • Интеграция с доменом ActiveDirectory. Доступ к данным можно разрешать по доменным пользователям и группам.
  • Аудит. SQL Server 2012 поддерживает аудит доступа к данным и контроль за осуществляемыми с базой данных действиями.

Отказоустойчивость SQL Server 2012:

  • Зеркалирование БД (Database Mirroring). Технология зеркалирования предполагает наличие одного активного сервера, с которым работают все клиенты, и одного зеркального сервера, на который происходит передача всех журналов транзакций и их применение к зеркальной БД. При отказе активного сервера, происходит переключение на зеркальный сервер. Это делается либо вручную, либо автоматически, при использовании сервера-наблюдателя (Witness). Таким образом обеспечивается отказоустойчивость БД, и в случае сбоя максимум, что теряется - это одна транзакция. При этом не требуется никакого специализированного кластерного оборудования или SAN-устройств. Но нужно учитывать, что данный метод не обеспечивает непрерывность функционирования, ввиду того, что переключение длится несколько секунд и обращения происходят к другому серверу с другим именем, а также не обеспечивается распределение нагрузки и снижается производительность. В SQL Server 2012 появилась функция автоматического восстановления повреждённых страниц с зеркального сервера, а также добавлена функция прозрачного перенаправления клиентов на зеркальный сервер.

Database Mirroring в SQL Server 2012

  • Кластеры высокой доступности (High Availability Cluster). Крупные компании, которым требуется непрерывность функционирования, постоянная доступность БД и распределение нагрузки, используют SQL Server 2012 в режиме кластера. SQL Server 2012 поддерживает 16-ти узловую кластеризацию, причём кроме кластеризации ядра СУБД, поддерживается также кластеризация Analysis Services, Notification Services и Replication Services. Кластер SQL Server 2012 позволяет обеспечить режим функционирования 24/7 для критических бизнес-приложений.

Двух узловой кластер на базе SQL Server 2012

Масштабируемость SQL Server 2012:

  • Горячее добавление памяти и процессоров. SQL Server 2012 позволяет не выключая и не перезагружая сервер добавлять в него оперативную память и процессоры (эта функция должна также поддерживаться и оборудованием).
  • Репликация БД. SQL Server 2012 позволяет создавать копии БД в удалённых филиалах. Поддерживаются различные механизмы репликации с использованием транзакций, слияния и моментальных снимков. Репликация может быть как односторонней, когда например, изменения из центрального офиса реплицируются в филиалы, так и двусторонней. SQL Server 2012 поддерживает распределённые приложения и гео-распределённую кластеризацию.
  • Распределение ресурсов (Resource Governor). SQL Server 2012 позволяет распределять ресурсы и назначать приоритет для различных задач. Эта функция позволяет избежать случаев резкого падения производительности всего сервера, и прерывания работы всех пользователей при выполнении одной какой-либо сложной задачи.
  • Поддержка архитектуры Intel Itanium. Для сверхвысоких нагрузок выпущена версия SQL Server 2012, работающая на RISC-серверах, построенных на платформе Intel Itanium (IA-64). Данная редакция SQL Server 2012 применяется в крупных ЦОД для обработки больших объёмов информации. SQL Server 2012 в редакции Itanium поддерживает 64 процессорных ядер и 2 терабайта оперативной памяти. Поддерживаются технологии горячего добавления/отключения процессора и памяти, также поддерживается технология отказоустойчивого зеркалирования памяти и 8-ми узловая кластеризация.

Построение кластера является достаточно сложной задачей. При построении кластера проводится сложный анализ бизнес-приложения, использующего СУБД, рассчитывается нагрузочная способность и требуемые ресурсы, прогнозируется рост БД и рост нагрузочной способности, в соответствии с этим планируется инфраструктура кластеров и подбирается оборудование. Компания ЛанКей обладает опытом построения кластеров SQL Server в ряде крупных компаний. Планирование и развёртывание кластеров SQL Server производят сертифицированные инженеры MCSE, MCDBA, MCTS: SQL Server.

Важнейшие характеристики данной СУБД - это:

В комплект средств административного управления данной СУБД входит целый набор специальных мастеров и средств автоматической настройки параметров конфигурации. Также данная БД оснащена замечательными средствами тиражирования, позволяющими синхронизировать данные ПК с информацией БД и наоборот. Входящий в комплект поставки сервер OLAP дает возможность сохранять и анализировать все имеющиеся у пользователя данные. В принципе данная СУБД представляет собой современную полнофункциональную база данных, которая идеально подходит для малых и средних организаций. Необходимо заметить, что SQL Server уступает другим рассматриваемым СУБД по двум важным показателям: программируемость и средства работы. При разработке клиентских БД приложений на основе языков Java, HTML часто возникает проблема недостаточности программных средств SQL Server и пользоваться этой СУБД будет труднее, чем системами DB2, Informix, Oracle или Sybase. Общемировой тенденцией в XXI веке стал практически повсеместный переход на платформу LINUX, а SQLServer функционирует только в среде Windows. Поэтому использование SQL Server целесообразно, по нашему мнению, только если для доступа к содержимому БД используется исключительно стандарт ODBC, в противном случае лучше использовать другие СУБД.

Сравнительные результаты быстродействия

Ниже приведены сравнительные таблицы перфоманса ряда СУБД для больших объемов данных, основанные на данных независимого изданияTransaction Processing Performance Council (www.tpc.org)

Объем данных порядка 100 GB

Rank Company System QphH Price/QphH Database Operating System Cluster
HP AlphaServer ES45 Model 68/100 5,578 358 US $ Oracle 9iR2 w/Real Application Cluste HP Tru64 Unix V5.1A/IPK Y
HP Proliant DL760 G2 8P 3,346 65 US $ Microsoft Windows Server 2003Enterprise Server N
IBM eServer xSeries 440 3,342 131 US $ IBM DB2 UDB 8.1 Microsoft Windows Server 2003Enterprise Edition N
SunFire V480 1,760 60 US $ Sybase IQ 12.5 Sun Solaris 9 N
HP Proliant DL580 G2 1,695 66 US $ Microsoft SQL Server 2000Enterprise Edition N

Объем данных порядка 1000 GB

Rank Company System QphH Price/QphH Database Operating System Cluster
HP 9000 Superdome Enterprise Server 25,805 203 US $ Oracle 9i Database Enterprise Edition v9.2.0.2.0 HP UX 11.i 64-bit N
HPProLiant DL760 X900-128P 22,361 253 US $ IBM DB2 UDB 7.2 Microsoft Windows 2000 Advanced Server Y

Выводы.

В сводной таблице представлены сравнительные характеристики этих двух СУБД. Клиентские места при этом могут функционировать практически на любой платформе, средством доступа клиентов к СУБД является либо CGI (Perl) либо JAVA приложения.

Сравнительные характеристики Microsoft SQL Server Oracle
Административное управление Хорошо Отлично
Графические инструменты Отлично Хорошо
Простота обслуживания Отлично Отлично
Механизм данных Хорошо Отлично
Работа с несколькими ЦП Приемлемо Отлично
Функция соединения и выбор индексов Отлично Отлично
Одновременный доступ нескольких пользователей Хорошо Отлично
Обработка мультимедиа-даных Плохо Отлично
Подключение к Web Приемлемо Отлично
Обработка аудио, видео, изображений Плохо Отлично
Поиск по всему тексту Хорошо Отлично
Функциональная совместимость Хорошо Хорошо
Сопряжение с другими БД Хорошо Хорошо
Единая регистрация Хорошо Хорошо
Работа под управлением различных ОС Приемлемо Хорошо
Возможности программирования Приемлемо Отлично
Хранимые процедуры и триггеры Хорошо Отлично
Внутренний язык программирования Приемлемо Отлично
Построение баз данных Хорошо Отлично
Язык SQL Отлично Отлично
Объектно-ориентированные системы Приемлемо Отлично
Работа с филиалами Отлично Отлично
Тиражирование Отлично Отлично
Распределенная обработка транзакций Отлично Отлично
Дистанционное администрирование Хорошо Отлично
Организация хранилищ данных и подготовка отчетов Отлично Отлично
Средства загрузки Отлично Отлично
Средства анализа Отлично Отлично

Требования заказчика (см. таблицу ниже)

Необходимые требования MS SQLServer 2000 Oracle 9i
локализация интерфейса пользователя, возможность построения и сортировки полей баз данных, содержащих символы кириллицы + +
поддержка структуры относительных данных + +
поддержка технологий пользователя/сервера + +
поддержка многопроцессорной архитектуры + +
поддержка кластерной архитектуры + +
наличие средств для создания индексов и кластеров данных для повышения скорости обработки + +
восстановление баз данных с использованием журнала транзакций + +
механизм блокировки транзакций при записи или на уровне страницы + +
поддержка ANSI SQL + +
поддержка стандарта SQL-3 (новое название – SQL99) + - +
поддержка ODBC + +
контроль целостности базы данных + +
включение/выключение утилит резервирования баз данных + +
импорт и экспорт таблиц баз данных + +
совместимость с предлагаемой операционной системоймодулей как пользователя, так и сервера + +
поддержка сетевых протоколов, используемых предлагаемыми операционными системами + +
наличие графического интерфейса пользователя для управления базой данных + +
контроль доступа к данным. Опознавание с использованием средств СУБД + +
централизованное управление пользователями + +
наличие оптимизатора запросов для оптимизации пути прохождения данных + +
поддержка больших двоичных объектов (BLOB) + +
поддержка OLAP-технологий в т.ч. специализированных средств OLAP-анализа + +
поддержка протокола VI SAN (Virtual Interface System Area Network) + +
отлаженный механизм репликации данных + +
поддержка службы единого каталога + +

Microsoft SQL Server и Oracle относятся к классу многпользовательских систем. Они развиваются и совершенствуются уже в течение многих лет и реализуются как коммерческие программные продукты. Эти СУБД можно характеризовать как основу для промышленных решений в области обработки данных. На российском рынке представлены практически все производители и поставщики промышленных СУБД, в том числеAdabas (Software AG), DB2 (IBM), Informix (Informix Software), Microsoft (Microsoft SQL Server), Oracle (Oracle Corporation), Sybase (Sybase).

Для сравнительного анализа этих систем удобна модель (магические квадраты), предложенная аналитической компанией Gartner Group(приведена выше). Из нее следует, что лидерами на рынке СУБД в настоящий момент являются компании IBM, Microsoft и Oracle. Остальные компании характеризуются Gartner Group как “нишевые игроки”.

Наиболее существенным критерием для сравнения СУБД являются эксплуатационные

характеристики, такие как надежность, высокая готовность, производительность,

масштабируемость. В таблице приводится сравнительный анализ основных СУБД по этим показателям (см.табл.1), выполненный на основе экспертных оценок. Каждому показателю была дана оценка по 10-бальной шкале, макимальная оценка 10 баллов.

Табл.1. Экспертная оценка многопользовательских СУБД


©2015-2019 сайт
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16

Последнее обновление: 24.06.2017

SQL Server является одной из наиболее популярных систем управления базами данных (СУБД) в мире. Данная СУБД подходит для самых различных проектов: от небольших приложений до больших высоконагруженных проектов.

SQL Server был создан компанией Microsoft. Первая версия вышла в 1987 году. А текущей версией является версия 16, которая вышла в 2016 году и которая будет использоваться в текущем руководстве.

SQL Server долгое время был исключительно системой управления базами данных для Windows, однако начиная с версии 16 эта система доступна и на Linux.

SQL Server характеризуется такими особенностями как:

    Производительность. SQL Server работает очень быстро.

    Надежность и безопасность. SQL Server предоставляет шифрование данных.

    Простота. С данной СУБД относительно легко работать и вести администрирование.

Центральным аспектом в MS SQL Server, как и в любой СУБД, является база данных. База данных представляет хранилище данных, организованных определенным способом. Нередко физически база данных представляет файл на жестком диске, хотя такое соответствие необязательно. Для хранения и администрирования баз данных применяются системы управления базами данных (database management system) или СУБД (DBMS). И как раз MS SQL Server является одной из такой СУБД.

Для организации баз данных MS SQL Server использует реляционную модель. Эта модель баз данных была разработана еще в 1970 году Эдгаром Коддом. А на сегодняшний день она фактически является стандартом для организации баз данных.

Реляционная модель предполагает хранение данных в виде таблиц, каждая из которых состоит из строк и столбцов. Каждая строка хранит отдельный объект, а в столбцах размещаются атрибуты этого объекта.

Для идентификации каждой строки в рамках таблицы применяется первичный ключ (primary key). В качестве первичного ключа может выступать один или несколько столбцов. Используя первичный ключ, мы можем ссылаться на определенную строку в таблице. Соответственно две строки не могут иметь один и тот же первичный ключ.

Через ключи одна таблица может быть связана с другой, то есть между двумя таблицами могут быть организованы связи. А сама таблица может быть представлена в виде отношения ("relation").

Для взаимодействия с базой данных применяется язык SQL (Structured Query Language). Клиент (например, внешняя программа) отправляет запрос на языке SQL посредством специального API. СУБД должным образом интерпретирует и выполняет запрос, а затем посылает клиенту результат выполнения.

Изначально язык SQL был разработан в компании IBM для системы баз данных, которая называлась System/R. При этом сам язык назывался SEQUEL (Structured English Query Language). Хотя в итоге ни база данных, ни сам язык не были впоследствии официально опубликованы, по традиции сам термин SQL нередко произносят как "сиквел".

В 1979 году компания Relational Software Inc. разработала первую систему управления баз данных, которая называлась Oracle и которая использовала язык SQL. В связи с успехом данного продукта компания была переименована в Oracle.

Впоследствии стали появляться другие системы баз данных, которые использовали SQL. В итоге в 1989 году Американский Национальный Институт Стандартов (ANSI) кодифицировал язык и опубликовал его первый стандарт. После этого стандарт периодически обновлялся и дополнялся. Последнее его обновление состоялось в 2011 году. Но несмотря на наличие стандарта нередко производители СУБД используют свои собственные реализации языка SQL, которые немного отличаются друг от друга.

Выделяются две разновидности языка SQL: PL-SQL и T-SQL. PL-SQL используется в таких СУБД как Oracle и MySQL. T-SQL (Transact-SQL) применяется в SQL Server. Собственно поэтому в рамках текущего руководства будет рассматриваться именно T-SQL.

В зависимости от задачи, которую выполняет команда T-SQL, он может принадлежать к одному из следующих типов:

    DDL (Data Definition Language / Язык определения данных). К этому типу относятся различные команды, которые создают базу данных, таблицы, индексы, хранимые процедуры и т.д. В общем определяют данные.

    В частности, к этому типу мы можем отнести следующие команды:

    • CREATE : создает объекты базы данных (саму базу даных, таблицы, индексы и т.д.)

      ALTER : изменяет объекты базы данных

      DROP : удаляет объекты базы данных

      TRUNCATE : удаляет все данные из таблиц

    DML (Data Manipulation Language / Язык манипуляции данными). К этому типу относят команды на выбору данных, их обновление, добавление, удаление - в общем все те команды, с помощью которыми мы можем управлять данными.

    К этому типу относятся следующие команды:

    • SELECT : извлекает данные из БД

      UPDATE : обновляет данные

      INSERT : добавляет новые данные

      DELETE : удаляет данные

    DCL (Data Control Language / Язык управления доступа к данным). К этому типу относят команды, которые управляют правами по доступу к данным. В частности, это следующие команды:

    • GRANT : предоставляет права для доступа к данным

      REVOKE : отзывает права на доступ к данным

Система управления базами данных (СУБД) - это общий набор различных программных компонентов баз данных и собственно баз данных, содержащий следующие составляющие:

    прикладные программы баз данных;

    клиентские компоненты;

    серверы баз данных;

    собственно базы данных.

Прикладная программа баз данных представляет собой программное обеспечение специального назначения, разработанное и реализованное пользователями или сторонними компаниями-разработчиками ПО. В противоположность, клиентские компоненты - это программное обеспечение баз данных общего назначения, разработанное и реализованное компанией-разработчиком базы данных. С помощью клиентских компонентов пользователи могут получить доступ к данным, хранящимся на локальном или удаленном компьютере.

Сервер баз данных выполняет задачу управления данными, хранящимися в базе данных. Клиенты взаимодействуют с сервером баз данных, отправляя ему запросы. Сервер обрабатывает каждый полученный запрос и отправляет результаты соответствующему клиенту.

Возможности СУБД

В общих чертах, базу данных можно рассматривать с двух точек зрения - пользователя и системы базы данных. Пользователи видят базу данных как набор логически связанных данных, а для системы баз данных это просто последовательность байтов, которые обычно хранятся на диске. Хотя это два полностью разных взгляда, между ними есть что-то общее: система баз данных должна предоставлять не только интерфейс, позволяющий пользователям создавать базы данных и извлекать или модифицировать данные, но также системные компоненты для управления хранимыми данными. Поэтому система баз данных должна предоставлять следующие возможности:

    разнообразные пользовательские интерфейсы;

    физическую независимость данных;

    логическую независимость данных;

    оптимизацию запросов;

    целостность данных;

    управление параллелизмом;

    резервное копирование и восстановление;

    безопасность баз данных.

Все эти возможности вкратце описываются в следующих далее разделах.

Разнообразные пользовательские интерфейсы

Большинство баз данных проектируются и реализовываются для работы с ними разных типов пользователей, имеющих разные уровни знаний. По этой причине система баз данных должна предоставлять несколько отдельных пользовательских интерфейсов. Пользовательский интерфейс может быть графическим или текстовым.

В графических интерфейсах ввод осуществляется посредством клавиатуры или мыши, а вывод реализуется в графическом виде на монитор. Разновидностью текстового интерфейса, часто используемого в системах баз данных, является интерфейс командной строки, с помощью которого пользователь осуществляет ввод посредством набора команд на клавиатуре, а система отображает вывод в текстовом формате на мониторе.

Физическая независимость данных

Физическая независимость данных означает, что прикладные программы базы данных не зависят от физической структуры данных, хранимых в базе данных. Эта важная особенность позволяет изменять хранимые данные без необходимости вносить какие-либо изменения в прикладные программы баз данных.

Например, если данные были сначала упорядочены по одному критерию, а потом этот порядок был изменен по другому критерию, изменение физических данных не должно влиять на существующие приложения баз данных или ее схему (описание базы данных, созданное языком определения данных системы базы данных).

Логическая независимость данных

При обработке файлов, используя традиционные языки программирования, файлы объявляются прикладными программами, поэтому любые изменения в структуре файла обычно требуют внесения соответствующих изменений во все использующие его программы.

Системы баз данных предоставляют логическую независимость файлов, т.е., иными словами, логическую структуру базы данных можно изменять без необходимости внесения каких-либо изменений в прикладные программы базы данных. Например, добавление атрибута к уже существующей в системе баз данных структуре объекта с именем Person (например, адрес) вызывает необходимость модифицировать только логическую структуру базы данных, а не существующие прикладные программы. (Однако приложения потребуют модифицирования для использования нового столбца.)

Оптимизация запросов

Большинство систем баз данных содержат подкомпонент, называющийся оптимизатором , который рассматривает несколько возможных стратегий исполнения запроса данных и выбирает из них наиболее эффективную. Выбранная стратегия называется планом исполнения запроса . Оптимизатор принимает решение, принимая во внимание такие факторы, как размер таблиц, к которым направлен запрос, существующие индексы и логические операторы (AND, OR или NOT), используемые в предложении WHERE.

Целостность данных

Одной из стоящих перед системой баз данных задач является идентифицировать логически противоречивые данные и не допустить их помещения в базу данных. (Примером таких данных будет дата "30 февраля" или время "5:77:00".) Кроме этого, для большинства реальных задач, которые реализовываются с помощью систем баз данных, существуют ограничения для обеспечения целостности (integrity constraints) , которые должны выполняться для данных. (В качестве примера ограничения для обеспечения целостности можно назвать требование, чтобы табельный номер сотрудника был пятизначным целым числом.)

Обеспечение целостности данных может осуществляться пользователем в прикладной программе или же системой управления базами данных. До максимально возможной степени эта задача должна осуществляться посредством СУБД.

Управление параллелизмом

Система баз данных представляет собой многопользовательскую систему программного обеспечения, что означает одновременное обращение к базе данных множественных пользовательских приложений. Поэтому каждая система баз данных должна обладать каким-либо типом механизма, обеспечивающим управление попытками модифицировать данные несколькими приложениями одновременно. Далее приводится пример проблемы, которая может возникнуть, если система баз данных не оснащена таким механизмом управления:

    На общем банковском счете № 3811 в банке X имеется $1500.

    Владельцы этого счета, госпожа А и господин Б, идут в разные отделения банка и одновременно снимают со счета по $750 каждый.

    Сумма, оставшаяся на счету № 3811 после этих транзакций, должна быть $0, и ни в коем случае не $750.

Все системы баз данных должны иметь необходимые механизмы для обработки подобных ситуаций, обеспечивая управление параллелизмом.

Резервное копирование и восстановление

Система баз данных должна быть оснащена подсистемой для восстановления после ошибок в программном и аппаратном обеспечении. Например, если в процессе обновления 100 строк таблицы базы данных происходит сбой, то подсистема восстановления должна выполнить откат всех выполненных обновлений, чтобы обеспечить непротиворечивость данных.

Безопасность баз данных

Наиболее важными понятиями безопасности баз данных являются аутентификация и авторизация. Аутентификация - это процесс проверки подлинности учетных данных пользователя, чтобы не допустить использования системы несанкционированными пользователями. Аутентификация наиболее часто реализуется, требуя, чтобы пользователь вводил свое имя пользователя и пароль. Система проверяет достоверность этой информации, чтобы решить, имеет ли данный пользователь право входа в систему или нет. Этот процесс можно усилить применением шифрования.

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

Системы реляционных баз данных

Компонент Database Engine сервера Microsoft SQL Server является системой реляционных баз данных. Понятие систем реляционных баз данных было впервые введено в 1970 г. Эдгаром Ф. Коддом в статье "A Relational Model of Data for Large Shared Data Banks". В отличие от предшествующих систем баз данных (сетевых и иерархических), реляционные системы баз данных основаны на реляционной модели данных, обладающей мощной математической теорией.

Модель данных - это набор концепций, взаимосвязей между ними и их ограничений, которые используются для представления данных в реальной задаче. Центральным понятием реляционной модели данных является таблица. Поэтому, с точки зрения пользователя, реляционная база данных содержит только таблицы и ничего больше. Таблицы состоят из столбцов (одного или нескольких) и строк (ни одной или нескольких). Каждое пресечение строки и столбца таблицы всегда содержит ровно одно значение данных.

Работа с демонстрационной базой данных в последующих статьях

Используемая в наших статьях база данных SampleDb представляет некую компанию, состоящую из отделов (department) и сотрудников (employee). Каждый сотрудник принадлежит только одному отделу, а отдел может содержать одного или нескольких сотрудников. Сотрудники работают над проектами (project): в любое время каждый сотрудник занят одновременно в одном или нескольких проектах, а над каждым проектом может работать один или несколько сотрудников.

Эта информация представлена в базе данных SampleDb (находится в исходниках) посредством четырех таблиц:

Department Employee Project Works_on

Организация этих таблиц показана на рисунках ниже. Таблица Department представляет все отделы компании. Каждый отдел обладает следующими атрибутами (столбцами):

Department (Number, DepartmentName, Location)

Атрибут Number представляет однозначный номер каждого отдела, атрибут DepartmentName - его название, а атрибут Location - расположение. Таблица Employee представляет всех работающих в компании сотрудников. Каждый сотрудник обладает следующими атрибутами (столбцами):

Employee (Id, FirstName, LastName, DepartmentNumber)

Атрибут Id представляет однозначный табельный номер каждого сотрудника, атрибуты FirstName и LastName - имя и фамилию сотрудника соответственно, а атрибут DepartmentNumber - номер отдела, в котором работает сотрудник.

Все проекты компании представлены в таблице проектов Project, состоящей из следующих столбцов (атрибутов):

Project (ProjectNumber, ProjectName, Budget)

В столбце ProjectNumber указывается однозначный номер проекта, а в столбцах ProjectName и Budget - название и бюджет проекта соответственно.

В таблице Works_on указывается связь между сотрудниками и проектами:

Works_on (EmpId, ProjectNumber, Job, EnterDate)

В столбце EmpId указывается табельный номер сотрудника, а в столбце ProjectNumber - номер проекта, в котором он принимает участие. Комбинация значений этих двух столбцов всегда однозначна. В столбцах Job и EnterDate указывается должность и начало работы сотрудника в данном проекте соответственно.

На примере базы данных SampleDb можно описать некоторые основные свойства реляционных систем баз данных:

    Строки таблицы не организованы в каком-либо определенном порядке.

    Также не организованы в каком-либо определенном порядке столбцы таблицы.

    Каждый столбец таблицы должен иметь однозначное имя в любой данной таблице. Но разные таблицы могут содержать столбцы с одним и тем же именем. Например, таблица Department содержит столбец Number и столбец с таким же именем имеется в таблице Project.

    Каждый элемент данных таблицы должен содержать одно значение. Это означает, что любая ячейка на пересечении строк и столбцов таблицы никогда не содержит какого-либо набора значений.

    Каждая таблица содержит, по крайней мере, один столбец, значения которого определяют такое свойство, что никакие две строки не содержат одинаковой комбинации значений для всех столбцов таблицы. В реляционной модели данных такой столбец называться потенциальным ключом (candidate key) . Если таблица содержит несколько потенциальных ключей, разработчик указывает один из них, как первичный ключ (primary key) данной таблицы. Например, первичным ключом таблицы Department будет столбец Number, а первичными ключами таблиц Employee будет Id. Наконец, первичным ключом таблицы Works_on будет комбинация столбцов EmpId и ProjectNumber.

    Таблица никогда не содержит одинаковых строк. Но это свойство существует только в теории, т.к. компонент Database Engine и все другие реляционные системы баз данных допускают существование в таблице одинаковых строк.

SQL - язык реляционной базы данных

Язык реляционной базы данных в системе SQL Server называется Transact-SQL . Это разновидность самого значимого на сегодняшний день языка базы данных - языка SQL (Structured Query Language - язык структурированных запросов) . Происхождение языка SQL тесно связано с проектом, называемым System R, разработанным и реализованным компанией IBM еще в начале 80-х годов прошлого столетия. Посредством этого проекта было продемонстрировано, что, используя теоретические основы работы Эдгара Ф. Кодда, возможно создание системы реляционных баз данных.

В отличие от традиционных языков программирования, таких как C#, C++ и Java, язык SQL является множество-ориентированным (set-oriented) . Разработчики языка также называют его запись-ориентированным (record-oriented) . Это означает, что в языке SQL можно запрашивать данные из нескольких строк одной или нескольких таблиц, используя всего лишь одну инструкцию. Это одно из наиболее важных преимуществ языка SQL, позволяющее использовать этот язык на логически более высоком уровне, чем традиционные языки программирования.

Другим важным свойством языка SQL является его непроцедурность. Любая программа, написанная на процедурном языке (C#, C++, Java), пошагово описывает, как выполнять определенную задачу. В противоположность этому, язык SQL, как и любой другой непроцедурный язык, описывает, что хочет пользователь. Таким образом, ответственность за нахождение подходящего способа для удовлетворения запроса пользователя лежит на системе.

Язык SQL содержит два подъязыка: язык описания данных DDL (Data Definition Language) и язык обработки данных DML (Data Manipulation Language) . Инструкции языка DDL также применяются для описания схем таблиц баз данных. Язык DDL содержит три общие инструкции SQL: CREATE, ALTER и DROP. Эти инструкции используются для создания, изменения и удаления, соответственно, объектов баз данных, таких как базы данных, таблицы, столбцы и индексы.

В отличие от языка DDL, язык DML охватывает все операции по манипулированию данными. Для манипулирования базами данных всегда применяются четыре общие операции: извлечение, вставка, удаление и модифицирование данных (SELECT, INSERT, DELETE, UPDATE).