Преимущества и недостатки языка SQL. Сложность работы с иерархическими структурами

Независимость от конкретной СУБД

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

Наличие стандартов

Наличие стандартов и набора тестов для выявления совместимости и соответствия конкретной реализации SQL общепринятому стандарту только способствует «стабилизации» языка. Правда, стоит обратить внимание, что сам по себе стандарт местами чересчур формализован и раздут в размерах.

Декларативность

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

Недостатки

Несоответствие реляционной модели данных

Создатели реляционной модели данных Эдгар Кодд, Кристофер Дейт и их сторонники указывают на то, что SQL не является истинно реляционным языком. В частности, они указывают на следующие проблемы SQL:

  • Повторяющиеся строки
  • Неопределённые значения
  • Явное указание порядка колонок слева направо
  • Колонки без имени и дублирующиеся имена колонок
  • Отсутствие поддержки свойства «=»
  • Использование указателей
  • Высокая избыточность

Сложность

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

Отступления от стандартов

Несмотря на наличие международного стандарта ANSI SQL-92, многие компании, занимающиеся разработкой СУБД, вносят изменения в язык SQL, применяемый в разрабатываемой СУБД, тем самым отступая от стандарта. Таким образом, появляются специфичные для каждой конкретной СУБД диалекты языка SQL.

Сложность работы с иерархическими структурами

Ранее диалекты SQL большинства СУБД не предлагали способа манипуляции древовидными структурами. Некоторые поставщики СУБД предлагали свои решения. В настоящее время в ANSI стандартизована рекурсивная конструкция WITH из диалекта SQL DB2. В MS SQL Server рекурсивные запросы появились лишь в версии MS SQL Server 2005.

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

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

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

Поддержка разработчиков. Хранимые процедуры всегда были очень полезны для пользователей SQL Server, а благодаря поддержке ODBC и OLEDB они доступны на самых разнообразных платформах. Кроме того, успех и широкое распространение во многом обусловлено превосходным взаимодействием между SQL Server и. NET.

Бизнес-аналитика. Еще одним достоинством, содействующим распространению SQL Server, стали усилия компании, направленные на расширение доступности бизнес-аналитики (BI). Многие разработчики не придают значения этому вопросу, но нет сомнений, что преимущества доступа, предоставляемого единственной лицензией SQL Server к мощному механизму OLTP, функциям OLAP и хранения данных, и даже инструментарию ETL (SSIS) и подготовки отчетов (SSRS) - ключевой элемент успеха SQL Server.

Новое лицо SQL Server

Недавно выпущенные версии SQL Server - наглядное подтверждение тому, что Microsoft не ослабляет усилий, добавляя новые функции бизнес-аналитики (хотя приходится слышать жалобы на недостатки инструментария и подготовки отчетов). Точно так же, я уверен, что удобство и доступность SQL Server еще никогда не были на таком уровне благодаря SQLSaturday, хэш-тегу #SQLHelp Twitter, изобилию блогов SQL Server, бесплатным учебным курсам и множеству других достоинств.

Последней важной новацией, ориентированной на разработчиков, было появление CLR в SQL Server 2005. Остальные улучшения были менее крупными и постепенными, ничего радикального. Я не учитываю такие нововведения, как RCSI и даже поддержка Hekaton, запланированная в SQL Server 2014. Это хорошие функции, полезные для разработчиков, но лишь в отношении повышения пропускной способности и масштабируемости.

Наконец, важным пунктом стали цены. О переходе SQL Server 2012 от лицензирования процессоров к лицензированию ядер речь не идет. На мой взгляд, это решение совершенно справедливо и приемлемо, так как в настоящее время процессоры стали гораздо более мощными, чем раньше, а лицензии SQL Server всегда предоставлялись по принципу «вы платите за то, чем пользуетесь». Меня больше беспокоит другая проблема: в условиях лицензирования SQL Server 2008 R2 и более новых выпусков заметно стремление привязать потребителей к продукту и заставить его обновлять версии. Такой подход идет вразрез со справедливым лицензированием, способствовавшим выходу SQL Server на ведущие позиции на рынке. В частности, я имею в виду то обстоятельство, что в SQL Server 2008 R2 и более новых версиях рабочие нагрузки Standard Edition искусственно ограничены до 64 Гбайт оперативной памяти. Учитывая, что в перспективе ожидается появление DDR4, смехотворность этого ограничения станет очевидной, когда через несколько лет, к концу жизненного цикла SQL Server 2014, в продаже начнут появляться модули DIMM емкостью 64 Гбайт.

PostgreSQL: перспективы для разработчика

Благодаря SQL Server я выплачивал ипотеку в течение десяти лет. Мне даже не приходило в голову, что когда-нибудь я помыслю об измене. Но недавние странности с лицензированием Standard Edition и недостаток внимания со стороны разработчиков к недавним версиям SQL Server поколебали мою уверенность.

С одной стороны, не проходит недели, чтобы я с недоумением не вспомнил о несовместимости SQL Server с JSON. SQL Server? XML? Язык XML кружил головы в 1999 году, но сегодня его былое значение безнадежно утеряно. С другой стороны, совершенно бесплатный продукт PostgreSQL не просто совместим с JSON, но и обеспечивает индексацию данных JSON. И это лишь вершина айсберга - у PostgreSQL множество очень мощных функций, которые понравятся разработчикам. Пройдет немного времени, и я обязательно познакомлюсь с PostgreSQL поближе, особенно учитывая, что развернуть продукт не составит труда.

Нет, пока я не готов сменить продукт, но похоже, разработчики SQL Server собрались почить на лаврах. PostgreSQL не лишен недостатков, но в последние несколько лет он стал намного лучше. Это продукт с широкими возможностями, чрезвычайно удобный для разработчиков, и определенно нацеленный на увеличение принадлежащей ему доли рынка. Могу лишь надеяться, что SQL Server получит новый импульс развития и восстановит признание и поддержку разработчиков. Недопустимо забывать, какая работа проделана создателями продукта на пути к успеху.

В настоящее время существует достаточно много различных серверных СУБД – это MS SQL Server, Oracle, IBM DB2, Interbase, MySQL т.д. Но широкое распространение и применение на практике для крупных систем получили 3 системы – MS SQL, Oracle и IBM DB2.

Для выбора СУБД сравним их по следующим параметрам: производительность, цена, доступность, удобство использования, возможности. При выборе СУБД использовались данные приведенные на сайтах www.tpc.org и www.sql.ru .

На сайте www.tpc.org опубликованы данные TPC тестов и сравнение цен серверов. По данным этого сайта, первое место по производительности, которое определяется как количеству произведенных бизнес транзакций в минуту, занимает MS SQL Server 2000 с показателем tpmC=505302, далее следует IBM DB2 UDB 7.1 с tpmC=440879. СУБД Oracle 8i Enterprise Edition v. 8.1.7 занимает только пятую позицию (tpmC=220807). Кроме того MS SQL Server 2000 лидирует и по показателю стоимости системы на одну транзакцию. Стоимость системы в пересчете на одну транзакцию для систмеы MS SQL Server 2000 составляет около $20, что в 1.5 ниже, чем для системы DB2, и в 2 раза ниже, чем для Oracle.

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

Сайт www.sql.ru приводит результаты опроса (см. рис 3.3) пользователей по вопросу о том, какие СУБД используются наиболее часто. Результаты этого опроса опять в пользу MS SQL Server – более 30% всех участников голосования предпочли эту СУБД всем остальным. Более широкое использования MS SQL Server обеспечит меньшую стоимость внедрения и поддержки, т.к. есть большая вероятность, что MS SQL Server уже используется в данной компании.

Рис. Процент использования СУБД

Таблица. Сравнительные характеристики СУБД.

В таблице приведены основные достоинства и недостатки рассматриваемых СУБД. Для разрабатываемой системы будет использоваться СУБД MS SQL 2000. Данный выбор обосновывается широким распространением данной системы, высокой производительностью при низкой стоимости сервера и простотой поддержки системы. Кроме того, серверный компьютер будет работать под управлением операционной системы из семейства Windows NT, что обеспечивает еще одно преимущество MS SQL Server 2000, т.к. именно данная СУБД наилучшим образом оптимизирована для операционной системы Windows.

Выбор и обоснование использования MS Visual Studio и MS Visual C++, в качестве средств разработки.

В связи с тем, что сегодня уровень сложности программного обеспечения очень высок, разработка приложений Windows с использованием только какого-либо языка программирования (например, языка C) значительно затрудняется. Программист должен затратить массу времени на решение стандартных задач по созданию многооконного интерфейса. Реализация технологии связывания и встраивания объектов - OLE - потребует от программиста еще более сложной работы.

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

На сегодняшний день существует большое разнообразие и изобилие средств разработки. Рассмотрим основные достоинства и недостатки трех из них, как наи – Delphi, С++ Builder и MS Visual C++/Visual Studio.

Delphi является мощным и универсальным средством разработки приложений. Его RAD-оболочка считается одной из лучших. Ее вместе с библиотекой VCL, на которой оболочка основана и написана, можно назвать действительно революционной. Delphi предоставляет программисту широкие возможности по разработке графического интерфейса приложений (GUI). Он оптимально подходит для небольших проектов, тогда, когда на первое место ставится скорость разработки. Delphi очень популярен в нашей стране, однако за рубежом его популярность гораздо ниже, и при реализации крупных проектов предпочтения отдаются С++.

Достоинства:

………………………

Недостатки

………………………

C++ Builder

Некий "гибрид" Delphi и C++, о чем говорит хотя бы то, что C++ Builder использует ту же библиотеку VCL, что и Delphi, причем написанную на Delphi. В свете этого логичной выглядит совместимость C++ Builder с Delphi на уровне компонентов и исходного кода.

Достоинства:

…………………..

Недостатки:

……………………

MS Visual C++

Продукт Microsoft Visual C++ .NET – мощное средство разработки, позволяющее создавать программы на базе Microsoft Windows, с поддержкой технологии Microsoft .NET, динамические web-приложения и web-службы XML с использованием языка программирования C++. Библиотека классов MFC, входящая в состав Visual C++ позволяет существенно облегчить создание графического интерфейса приложений. Однако от программистов VC++ требуется гораздо большая квалификация, нежели от программистов Delphi, т.к. MFC, несмотря на всю свою «мощность», является всего лишь тонкой «оберткой» над WinApi, и поэтому при написании приложений многое приходится делать вручную. С одной стороны это является минусом, т.к. сильно снижается скорость разработки. С другой стороны это дает более широкие возможности и гибкость при реализации крупных проектов и позволяет добиться их максимальной производительности.

Преимущества:

…………………………

Недостатки:

Access

База в Access формате представляет собой файл для всех пользователей системы. Этот файл сохраняет все данные одной фирмы и доступен всем рабочим местам. Через общую папку и мапнутый диск каждое рабочее место открывает один и тот же файл, расположенный на центральном компьютере.

Подходит для: Небольших объектов с невысокой загруженностью, при наличии 1 или 2 рабочих мест.
Быстродействие: Microinvest Склад Pro прекрасно работает с до 200 000 записями базы данных. Это представляет собой 40 000 документов с 5 позициями каждый.
Безопасность: Т.к. база сохраняется в одном файле, который доступен всем рабочим местам, то безопасность данных не очень высока. Практически каждое рабочее место имеет прямой доступ к базе данных и может ее повредить.
Простота установки: Этот вид базы данных не требует центрального сервера. Достаточно иметь один компьютер, который сохраняет файл с базой и чтобы все другие компьютеры имели доступ к этому файлу через сеть.
Связь в сети: Для работы в сети достаточно определить одну папку, которая доступна всем компьютерам, и в ней определить место для файла. Этот файл отдельно открывается с каждого компьютера.
Другие особенности: Microinvest Склад Pro работает с базой Access без необходимости приобретения и установки Access на компьютер. В саму программу встроены все необходимые модули управления базой данных в формате Access. База данных бесплатная.

MSDE (Microsoft Desktop Engine)

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

Подходит для: Небольших объектов с высокой загруженностью, при наличии до 5 рабочих мест.
Быстродействие: Microinvest Склад Pro прекрасно работает с базой данных до 2 GB. Это более 1 000 000 документов.
Безопасность: MSDE представляет собой полноценный SQL сервер, который заботится об управлении базой данных, ее безопасности и стабильности при работе. MSDE обеспечивает самый высокий уровень защиты данных и практически не создает никаких проблем.
Простота установки: Microinvest предоставляет один установочный файл MSDE, который устанавливает все необходимые компоненты, без каких либо дополнительных настроек. Из-за ограничений технологии в MSDE, этот сервер не может быть установлен на Windows Vista, Windows 7, Windows 8 или Windows 10.
Связь в сети: Для всех компьютеров в сети открывается порт 1433 в Firewall сети. Связь между отдельными компьютерами осуществляется посредством заполнения IP адреса сервера (компьютер, отведенный для этого, с установленным MSDE), имени пользователя (обычно sa), пароля для связи и имени базы данных.
Другие особенности: MSDE – это бесплатный сервер, имеющий низкие требования к параметрам компьютера, поддерживающий все необходимые системы защиты данных и работающий исключительно быстро. Полная инструкция по установке MSDE размещена на установочном диске Microinvest.

MySQL

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

Подходит для: Небольших объектов с высокой загруженностью, количество рабочих мест любое. При объектах, имеющих до 5 рабочих мест, рекомендуется использование MSDE, т.к. MSDE работает быстрее, чем MySQL. Если количество рабочих мест более 5, предпочтительнее установить MySQL.
Быстродействие: Сервер не имеет ограничений по размеру базы данных и может выдержать практически неограниченную нагрузку.
Безопасность: MySQL является полноценным SQL сервером, который заботится об управлении базой данных, ее безопасности и стабильной работе. MySQL обеспечивает самый высокий уровень защиты данных и работу с транзакциями. MySQL очень чувствителен к отключению питания, поэтому для машины, на которой установлен сервер, необходимо обеспечить ИБП (UPS).
Простота установки: Microinvest предоставляет два установочных файла MySQL (файл с сервером и файл с инструментами для управления сервером). MySQL работает со всеми версиями Windows. В установочном диске есть подробные инструкции по установке этого сервера. При установке важно выбрать кодировку UTF-8, чтобы не возникло проблем с кириллицей.
Связь в сети: Для всех компьютеров в сети открывается порт 3306 в Firewall. Связь между отдельными компьютерами осуществляется посредством заполнения IP адреса сервера (компьютер, отведенный для этого, с установленным MySQL), имени пользователя (обычно root), пароля связи и названия базы данных.
Другие особенности: MySQL – это бесплатный SQL сервер, который имеет огромные возможности для работы с высокой степенью загрузки. Полная инструкция по установке MySQL размещена на установочном диске Microinvest.

MS SQL (Microsoft SQL Server)

MS SQL является обобщенным наименованием Microsoft SQL Server 2005/2008/2012/2014/2016 Express Edition. Это великолепный сервер с отличными возможностями, высокой скоростью и максимальной безопасностью. MS SQL устанавливается на центральный сервер, и все другие компьютеры подключаются к этому серверу.

Подходит для: Средние и большие объекты с высокой загрузкой.
Быстродействие: Microinvest Склад Pro работает отлично при любой нагрузке. Практически не имеет ограничений в объеме данных и быстродействии системы.
Безопасность: MS SQL это SQL сервер высокого класса, который заботится об управлении базой данных, ее безопасности и стабильности работы. MS SQL гарантирует самый высокий уровень защиты данных и практически не создает никаких проблем. Эта система корпоративного значения и может использоваться у каждого клиента.
Простота установки: Microinvest предоставляет два инсталляционных файла MS SQL (x86 и x64). MS SQL работает со всеми версиями Windows. В установочном диске есть подробные инструкции для установки этого сервера.
Связь в сети: Для всех компьютеров в сети открывается порт 1433 в Firewall сети. Связь между отдельными компьютерами осуществляется посредством заполнения IP адреса сервера (компьютер, отведенный для этого, с установленным SQL Server), имени пользователя (обычно sa), пароля связи и названия базы данных.
Другие особенности: Microsoft SQL Server 2005/2008/2012/20014 Express Edition - это бесплатный сервер, который имеет высокие эксплуатационные характеристики. Полная инструкция по установке SQL Server размещена на установочном диске Microinvest. Важно отметить, что предоставленный на диске сервер является бесплатным для использования клиентами.

Некоторые полезные ресурсы

  • Документация по всем продуктам;
  • Форум технической поддержки Microinvest , где Вы сможете быстро получить ответ на интересующий вопрос;
  • Примеры автоматизации ресторанов и торговли на базе Microinvest в России и странах СНГ;
  • График предстоящих обучений в России и странах СНГ;