Обзор sql


Содержание

Основные команды SQL, которые должен знать каждый программист

Язык SQL или S tructured Query Language (язык структурированных запросов) предназначен для управления данными в системе реляционных баз данных (RDBMS). В этой статье будет рассказано о часто используемых командах SQL, с которыми должен быть знаком каждый программист. Этот материал идеально подойдёт для тех, кто хочет освежить свои знания об SQL перед собеседованием на работу. Для этого разберите приведённые в статье примеры и вспомните, что проходили на парах по базам данных.

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

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

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

Затем введите пароль.

Выполните следующую команду. Назовём базу данных «university»:

Команды для работы с базами данных

1. Просмотр доступных баз данных

2. Создание новой базы данных

3. Выбор базы данных для использования

4. Импорт SQL-команд из файла .sql

5. Удаление базы данных

Работа с таблицами

6. Просмотр таблиц, доступных в базе данных

7. Создание новой таблицы

Ограничения целостности при использовании CREATE TABLE

Может понадобиться создать ограничения для определённых столбцов в таблице. При создании таблицы можно задать следующие ограничения:

  • ячейка таблицы не может иметь значение NULL;
  • первичный ключ — PRIMARY KEY (col_name1, col_name2, …) ;
  • внешний ключ — FOREIGN KEY (col_namex1, …, col_namexn) REFERENCES table_name(col_namex1, …, col_namexn) .

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

Пример

Создайте таблицу «instructor»:

8. Сведения о таблице

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

9. Добавление данных в таблицу

При добавлении данных в каждый столбец таблицы не требуется указывать названия столбцов.

10. Обновление данных таблицы

11. Удаление всех данных из таблицы

12. Удаление таблицы

Команды для создания запросов

13. SELECT

SELECT используется для получения данных из определённой таблицы:

Следующей командой можно вывести все данные из таблицы:

14. SELECT DISTINCT

В столбцах таблицы могут содержаться повторяющиеся данные. Используйте SELECT DISTINCT для получения только неповторяющихся данных.

15. WHERE

Можно использовать ключевое слово WHERE в SELECT для указания условий в запросе:

В запросе можно задавать следующие условия:

  • сравнение текста;
  • сравнение численных значений;
  • логические операции AND (и), OR (или) и NOT (отрицание).

Пример

Попробуйте выполнить следующие команды. Обратите внимание на условия, заданные в WHERE :

16. GROUP BY

Оператор GROUP BY часто используется с агрегатными функциями, такими как COUNT , MAX , MIN , SUM и AVG , для группировки выходных значений.

Пример

Выведем количество курсов для каждого факультета:

17. HAVING

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

Пример

Выведем список факультетов, у которых более одного курса:

18. ORDER BY

ORDER BY используется для сортировки результатов запроса по убыванию или возрастанию. ORDER BY отсортирует по возрастанию, если не будет указан способ сортировки ASC или DESC .

Пример

Выведем список курсов по возрастанию и убыванию количества кредитов:

19. BETWEEN

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

Пример

Выведем список инструкторов, чья зарплата больше 50 000, но меньше 100 000:

20. LIKE

Оператор LIKE используется в WHERE , чтобы задать шаблон поиска похожего значения.

«КРОК», Москва, Санкт-Петербург, Троицк, Челябинск, Воронеж, Иркутск, Краснодар, Нижний Новгород, Самара, Пермь, от 120 000 до 240 000 ₽

Есть два свободных оператора, которые используются в LIKE :

  • % (ни одного, один или несколько символов);
  • _ (один символ).

Пример

Выведем список курсов, в имени которых содержится «to» , и список курсов, название которых начинается с «CS-» :

21. IN

С помощью IN можно указать несколько значений для оператора WHERE :

Пример

Выведем список студентов с направлений Comp. Sci., Physics и Elec. Eng.:

22. JOIN

JOIN используется для связи двух или более таблиц с помощью общих атрибутов внутри них. На изображении ниже показаны различные способы объединения в SQL. Обратите внимание на разницу между левым внешним объединением и правым внешним объединением:

Пример 1

Выведем список всех курсов и соответствующую информацию о факультетах:

Пример 2

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

Пример 3


Выведем список всех курсов вне зависимости от того, обязательны они или нет:

23. View

View — это виртуальная таблица SQL, созданная в результате выполнения выражения. Она содержит строки и столбцы и очень похожа на обычную SQL-таблицу. View всегда показывает самую свежую информацию из базы данных.

Создание

Удаление

Пример

Создадим view , состоящую из курсов с 3 кредитами:

24. Агрегатные функции

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

  • COUNT (col_name) — возвращает количество строк;
  • SUM (col_name) — возвращает сумму значений в данном столбце;
  • AVG (col_name) — возвращает среднее значение данного столбца;
  • MIN (col_name) — возвращает наименьшее значение данного столбца;
  • MAX (col_name) — возвращает наибольшее значение данного столбца.

25. Вложенные подзапросы

Вложенные подзапросы — это SQL-запросы, которые включают выражения SELECT , FROM и WHERE , вложенные в другой запрос.

Пример

Найдём курсы, которые преподавались осенью 2009 и весной 2010 годов:

Краткий сравнительный обзор решений для SQL-доступа к Hadoop

Потребности в SQL-доступе к Hadoop

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

Решение с отрытым исходным кодом Hadoop имеет множество областей применения в науке и отрасли. IBM®, Oracle, Microsoft и некоторые успешные новые компании, такие как Cloudera, MapR, Platfora и Trifecta, разработали решения на базе Hadoop. Теперь термины Hadoop и большие данные стали использоваться как взаимозаменяемые. По оценке Gartner, в настоящее время рынок экосистемы Hadoop оценивается примерно в 77 миллионов долларов, и прогнозируется его рост до 813 миллионов долларов к 2020 году.

IBM InfoSphere BigInsights Quick Start Edition

InfoSphere BigInsights Quick Start Edition — это доступная для загрузки бесплатная версия Hadoop-платформы IBM InfoSphere BigInsights. Она позволяет ознакомиться с возможностями, разработанными IBM для расширения функциональности платформы с открытым исходным кодом Hadoop, такими как Big SQL, текстовый анализ и BigSheets. Обучающие материалы, в том числе пошаговые руководства и видеоролики, помогут вам приступить к эффективному использованию Hadoop. Вы сможете экспериментировать с большими данными без каких-либо ограничений по времени или объему. Посмотрите видеоматериалы, изучите руководства (в формате PDF), загрузите BigInsights Quick Start Edition.

С недавнего времени специалисты в ИТ-отрасли и научной сфере начали осознавать ограничения среды Hadoop в ряде областей применения. (Некоторые из таких ограничений описываются в этой статье. Дополнительную информацию об ограничениях среды Hadoop можно получить в отраслевом отчете. В разделе Ресурсы приведены ссылки на другие отчеты.) Например, при обработке масштабных графов среда Hadoop оказывается неэффективной. Недавно компания Google представила систему Pregel на базе проектов с открытым исходным кодом Apache Giraph и Apache Hama, которая использует модель параллельных вычислений Bulk Synchronous Parallel (BSP) для эффективной и масштабируемой обработки масштабных графов на распределенных кластерах из серийно выпускаемых вычислительных систем. Были представлены и некоторые другие проекты для решения проблемы обработки масштабных графов (например, GraphLab и GraphChi) .

Hadoop оказалась неподходящей платформой для масштабной обработки потоковых данных. Компания Twitter анонсировала выпуск системы Storm, которая заполняет этот пробел, предоставляя распределенную и отказоустойчивую платформу для непрерывной обработки потоковых данных в реальном времени. Другими системами в этой области применения являются IBM InfoSphere Streams и Apache S4.

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

Еще одним препятствием является то, что программисты в этой области обычно не знакомы с инфраструктурой MapReduce. Фактически среда Hadoop требует от разработчика прохождения серьезного обучения и применения значительных навыков программирования. Многие программисты предпочитают использовать язык SQL (в котором они более искусны). Этот язык предоставляет им возможность формулировать задачи на декларативном языке высокого уровня и оставлять детали оптимизации внутреннему механизму. Абстракции языка высокого уровня позволяют базовой системе выполнять автоматическую оптимизацию. Эта статья посвящена системам работы с большими данными нового поколения, призванным предоставить эффективные и масштабируемые механизмы для обработки значительных объемов структурированных данных. Сначала представлен обзор SQL-механизма массовой параллельной обработки Big SQL. Затем он сравнивается с похожими системами — Apache HIVE, Cloudera Impala и Pivotal HAWQ.

Обзор Big SQL

Big SQL — это SQL-интерфейс для платформы IBM InfoSphere BigInsights на базе Apache Hadoop, предназначенной для обработки больших данных. Он предоставляет SQL-доступ к данным, которые хранятся в InfoSphere BigInsights, используя среду Hadoop для сложных наборов данных и прямой доступ для выполнения небольших запросов. В первоначальной реализации Big SQL запрос разбивается на серию заданий Hadoop. Для выполнения интерактивных запросов Big SQL использует встроенный оптимизатор запросов, который переписывает входящий запрос как локальное задание для сведения к минимуму задержек, используя механизмы динамического планирования Hadoop. Оптимизатор запросов также обеспечивает традиционную оптимизацию запросов, такую как оптимальный порядок обращения к таблицам и наиболее эффективная стратегия выполнения операторов join .

В последней версии механизма Big SQL концепция другая. Используется архитектура параллельной обработки без разделения ресурсов, в которой базовая инфраструктура Hadoop заменяется SQL-механизмом массовой параллельной обработки, развертываемым непосредственно в физической файловой системе Hadoop Distributed File System (HDFS). Таким образом, Big SQL остается гармоничным участником экосистемы Hadoop, поскольку все данные хранятся в исходном HDFS-формате, а не в специальном формате системы хранения. Данные доступны для всех других инструментов экосистемы Hadoop, таких как Pig и Hive. Системная инфраструктура обеспечивает логическое представление данных для хранения и управления информацией о метаданных. В частности, таблица — это просто представление, которое определено для хранимых данных в HDFS. Кроме того, механизм Big SQL использует каталог базы данных Apache Hive для хранения информации об определениях, местоположении и формате хранения таблиц.

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

Рисунок 1. Архитектура механизма Big SQL

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

Фактически Big SQL не работает в изоляции. Обычно узлы используются совместно другими инструментами и заданиями в экосистеме Hadoop, например, заданиями MapReduce, узлами HBase и заданиями Pig. Поэтому Big SQL можно сконфигурировать для ограниченного потребления ресурсов кластера (например, задать процентную долю использования процессоров или оперативной памяти). Конфигурационные настройки могут указывать, чтобы ресурсы автоматически настраивались исходя из рабочей нагрузки.

Используя Big SQL, можно также выполнять запросы к гетерогенным системам, например, если необходимо соединить данные, хранящиеся в HDFS, с данными, которые хранятся в других реляционных базах данных, таких как IBM® DB2®, Oracle и Teradata. Big SQL поддерживает открытую интеграцию с инструментами бизнес-анализа, такими как IBM® Cognos® и Microstrategy.

Посетите HadoopDev — прямой канал связи с группой разработчиков InfoSphere BigInsights

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

Big SQL поддерживает мощный SQL-диалект, расширяющий язык SQL:2011 , обширный спектр типов реляционных данных, а также использование хранимых процедур и пользовательских функций. Big SQL также предоставляет полную поддержку следующих операций:

  • Механизмы подзапросов SQL:
    • EXISTS
    • NOT
    • EXISTS
    • IN
    • ANY
    • SOME
    • HAVING
  • Стандартные операции join :
    • inner
    • outer
    • equality
    • non-equality
  • Операции манипулирования с наборами:
    • union
    • intersect
    • except
  • Обширные аналитические возможности:
    • Группировка наборов с использованием оператора CUBE
    • Группировка наборов с использованием оператора ROLLUP
    • Стандартные аналитические функции:
      • CORRELATION
      • COVARIANCE
      • STDDEV
      • VARIANCE

Сравнение с другими системами SQL-on-Hadoop

Некоторые другие системы также предоставляют поддержку SQL для Hadoop. В этой статье предлагается краткий обзор некоторых из ключевых систем и их сравнение с IBM Big SQL.

Apache Hive считается первым решением с поддержкой SQL-on-Hadoop. Это продукт с открытым исходным кодом для организации хранилищ данных на базе платформы Hadoop. Он поддерживает знакомые концепции реляционных баз данных, такие как таблицы, столбцы и разделы, и предлагает некоторую поддержку SQL для неструктурированных данных. Hive сохраняет расширяемость и гибкость платформы Hadoop. Hive поддерживает все основные типы примитивов (например, integers , floats и strings ) и сложные типы (например, maps , lists и structs ). Это решение также поддерживает запросы на SQL-подобном декларативном языке Hive Query Language (HiveQL), который является подмножеством SQL92, и поэтому понятен всем, кто знаком с SQL. Запросы автоматически компилируются в задания MapReduce, выполняемые в среде Hadoop. HiveQL позволяет включать в запросы пользовательские сценарии MapReduce.

В целом Hive — это хороший интерфейс для специалистов по реляционным базам данных, хотя детали базовой реализации не скрыты. HiveQL отличается от стандартного SQL по некоторым аспектам, таким как наилучший способ определения операций join для максимальной производительности. В HiveQL нет некоторых функций языка SQL. Он предоставляет возможность вставлять пользовательский код для ситуаций, которые не вписываются в SQL, и он включает инструменты для обработки входа и выхода. Hive не поддерживает:

  • Операторы UPDATE и DELETE statements
  • Операции INSERT для отдельных строк
  • Типы данных даты и времени, поскольку они рассматриваются как строки

Big SQL использует каталог Hive. К существующим таблицам Hive могут напрямую обращаться Big SQL и другие инструменты InfoSphere BigInsights. Однако Big SQL поддерживает более обширный набор функций SQL, чем Hive. Например, Big SQL поддерживает подзапросы с использованием в операторах In и Not in , операторы Having , операторы With , расширенные функции агрегации и обобщенные табличные выражения. Big SQL обеспечивает более высокую производительность выполнения простых запросов, исключая 15-секундную задержку, необходимую при выполнении запроса Hive для запуска задания Hadoop.

Cloudera Impala

Решение с открытым исходным кодом Impala предлагает механизм выполнения SQL-запросов с массовой параллельной обработкой, работающий в среде Apache Hadoop. Этот продукт компании Cloudera не использует Hadoop для выполнения запросов. Он использует свой собственный набор демонов, которые устанавливаются в дополнение к узлам данных и настраиваются для оптимизации локальной обработки с целью исключения узких мест. Impala является компонентом экосистемы Hadoop и совместно использует инфраструктуру (например, метаданные, Apache Hive и Apache Pig). Поэтому пользователь может выполнять запросы к данным независимо от того, где они хранятся, в HDFS или в Apache HBase. Impala использует те же метаданные и синтаксис SQL (Hive SQL), что и Apache Hive. В сравнении с Impala, механизм Big SQL поддерживает значительно более обширный диалект SQL и больше функций. Одним из основных ограничений решения Impala является то, что оно использует реализацию join в оперативной памяти. Поэтому запросы могут не выполняться, если соединенные таблицы не помещаются в оперативной памяти.

Pivotal HAWQ

HAWQ (HAdoop With Query) — это проект с закрытым исходным кодом компании EMC Pivotal, предлагающий базу данных с массовой параллельной обработкой. HAWQ — это в сущности база данных Greenplum, расширенная для хранения данных в файловой системе HDFS. HAWQ использует СУБД Postgres и систему хранения HDFS как внутренний механизм хранения. Поскольку решение HAWQ использует Postgres, оно может поддерживать весь синтаксис SQL. SQL-доступ к данным HDFS обеспечивается с использованием внешних таблиц.

Ключевая архитектура механизма HAWQ включает следующие компоненты:

  • HAWQ Master — обеспечивает прием соединений от клиентов и управление системными таблицами, которые содержат информацию о метаданных. HAWQ имеет свой собственный каталог, не используя каталог HIVE. Кроме того, основной узел обеспечивает синтаксический разбор и оптимизацию запросов, а также генерирование планов их выполнения.
  • HAWQ Segment — блок обработки, обеспечивающий выполнение локальных операций базы данных над своими собственными наборами данных.
  • Узлы HAWQ Storage — хранят все пользовательские данные. HAWQ использует собственный формат файлов для хранения данных HDFS.
  • HAWQ Interconnect — обеспечивает управление межпроцессными взаимодействиями между сегментами в ходе выполнения запросов.

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

Заключение

В последнее десятилетие платформа Hadoop стала популярным механизмом для эффективного использования возможностей больших компьютерных кластеров. Она позволяет программистам сосредоточиваться на данных и применении преобразований к наборам записей, поскольку распределенное выполнение и отказоустойчивость прозрачно обеспечиваются инфраструктурой MapReduce. Недавно появились новые системы, ориентированные на конкретные области применения. Эти системы формируют новое поколение решений для работы с большими данными. Такие системы вряд ли полностью заменят инфраструктуру MapReduce. Вероятнее всего, они будут сосуществовать и дополнять друг друга в различных сценариях.

SQL — это наиболее широко используемый язык для обеспечения доступа к структурированным данным, их анализа и использования. Потребность в поддержке SQL в среде Hadoop для обработки больших структурированных данных стремительно растет. Эта статья посвящена новым системам SQL-on-Hadoop, разработка которых набирает обороты в связи с ростом потребностей в выполнении интерактивных запросов в среде Hadoop для обработки масштабных наборов данных. Представлен обзор IBM Big SQL и трех других ключевых систем — Hive, Impala и HAWQ. Однако на рынке появились и другие системы, включая Microsoft Polybase, Google BigQuery, Teradata (SQL-H), Hadapt, Apache Drill, Facebook Presto и SAP HANA. Изучите ресурсы, ссылки на которые приведены в этой статье, чтобы провести собственное исследование систем SQL-on-Hadoop.

Обзор SQL Server Express

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

Описание SQL Server Express

Корпоративная версия SQL Server конкурирует с такими ресурсами, как Oracle Database (DB) и MySQL. SQL Server Enterprise поставляется с расширенным набором функций и может быть слишком дорогим для компаний среднего звена. Однако Microsoft предлагает SQL Server в нескольких разных выпусках, включая:

SQL Server Enterprise.

SQL Server Management Studio Express.

Стандарт SQL Server.

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

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

Некоторые преимущества данного программного решения:

Бесплатность: огромное преимущество SQL Server Express заключается в том, что оно бесплатное. Единственными расходами являются затраты времени на загрузку и настройку системы. Если вам требуется SQL Server, то версия Express подойдет наилучшим образом.


Масштабируемость: версия SE является идеальной отправной точкой для небольших независимых поставщиков программного обеспечения (ISV), поскольку он может использоваться с любым приложением. Лицензирование позволяет Express быть включенным как часть приложения или продукта. Хотя существуют ограничения по использованию памяти и сокета, они не настолько критичны. Экспресс не ограничивается одним пользователем — это распространенный миф. Существует ограничение базы данных на 10 ГБ, но это максимальный размер для каждого хранилища, что означает, что вы можете иметь несколько баз, в которых хранится до 10 ГБ данных. Если вы являетесь независимым поставщиком программного обеспечения, и ваша компания испытывает высокие темпы роста, что приводит к увеличению потребностей в базе данных, вы можете перейти только на платную версию SQL Server.

Безопасность: в данном приложении есть возможность бесплатного онлайн-резервного копирования, которое поможет защитить ваши бизнес-данные, если что-то пойдет не так. Администраторы должны следовать правилам безопасности, таким как ограничение доступа к папкам резервного копирования и политике паролей Windows.

Особенности: несмотря на то что Express — это «облегченная» версия SQL Server, по-прежнему существует впечатляющий набор функций, который будет платным в других системах и является бесплатным в этом решении. Express поддерживает полнотекстовый поиск, собственный XML и время выполнения Common Language Runtime. Другие ключевые функции включают конструктор отчетов, позволяющий создавать настраиваемые выгрузки.

Ограничения

Перед развертыванием SQL Server Express вы должны узнать о своих ограничениях:

Максимальная память, используемая SQL Server Database Engine — 1 ГБ.

Максимальный размер каждой реляционной базы данных — 10 ГБ.

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

Предел в буферном кеше для каждого экземпляра составляет 1 МБ ОЗУ.

Механизм реляционной базы данных ограничен меньшим количеством сокета.

Версии

Версия 2020 была выпущена в трех модификациях:

SP1 Express — это основное предложение для экспресс-доставки, поставляется с базовыми функциями. Кроме того, такие возможности, как динамическая маскировка данных и безопасность на уровне строк, теперь доступны в Express.

Express с расширенными службами — эта версия содержит большее количество функций. Включены механизм реляционной базы данных, Management Studio, отчетность и полнотекстовый поиск. Идеально подходит для разработчиков, работающих с меньшими приложениями, которым необходимо внедрить отчетность в своих субъектах.

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

Илон Маск рекомендует:  Что такое код installuserdriver

Предназначение

Ограниченная клиентская версия SQL Server Express предназначена для разработчиков, любителей и независимых авторов программного обеспечения, которым нужна база данных с низким уровнем доступа без поддержки предприятия. Общий сценарий, прменяемый для использования этого бесплатного продукта, предназначен для проекта веб-разработки с Visual Studio или для использования в качестве настраиваемой базы данных, которую разработчик может распространять среди клиентов. Версия Express основан на Yukon и содержит те же возможности программирования, как T-SQL, собственный клиент и API ADO.NET.

Технические особенности

Данная версия поставляется с Express Manager и диспетчером компьютеров, двумя инструментами GUI для настройки и установки. Версия ограничивается использованием общей памяти в локальной системе. Подключение к базе данных может осуществляться через TCP/IP или именованные каналы. Тем не менее веб-доступ через HTTP или высокопроизводительный доступ с использованием VIA не поддерживается. Вы должны специально включить сетевое взаимодействие с Express, и подключенный пользователь должен включить службу браузера SQL Server, чтобы выполнить сетевое подключение. Общая память не использует службу Browser.

Установка

Для запуска Microsoft SQL Server Express вам понадобится система, работающая под управлением Windows 2000 SP4, XP Pro SP1 или Server 2003. Рекомендуемая оперативная память — 512 МБ, но продукт будет работать с 256 МБ ОЗУ. Программное обеспечение также требует 170 МБ пространства на жестком диске, MSIE 6.0 SP1 и Microsoft .NET Framework 2.0 или более поздних версий.

Сравнение версий и бесплатные загрузки

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

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

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

работа с облегченными веб-приложениями;

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

Характеристики

Существует множество выпусков полной версии SQL Server с Enterprise, Standard и Web. Вот некоторые из основных отличий версии 2020 по сравнению с версией Express:

Вычислительная емкость OS Max — 4 ядра.

Максимальная оперативная память — 1 ГБ.

Интеллектуальные и зашифрованные резервные копии.

SQL Server Express не может быть установлен на сжатом диске. Он поддерживает только стандартные диски.

Обновления

На протяжении многих лет было выпущено множество версий MS SQL Server Express и пакетов обновлений. Ниже приводится сводка по основной версии:

Пакеты обновления основной версии:

2008 R2 RTM, R2 SP1 и R2 SP2.

Выбор правильного варианта

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

Если вы начинаете с нуля, выберите самую новую версию, поддерживающую все ориентированные на вас операционные системы.

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

Более старые варианты ПО обычно работают на новых операционных системах, но официально не указаны на веб-страницах Microsoft. В версиях 2005 года есть предупреждение о возможности возникновения проблем, если они будут установлены в ОС Windows 8.x и новее.

SQL – Обзор

SQL является ANSI (Американский национальный институт стандартов) стандарт, но есть много различных версий языка SQL.

Что такое SQL?

SQL является Structured Query Language, который представляет собой компьютерный язык для хранения, обработки и извлечения данных, хранящихся в реляционной базе данных.

SQL является стандартным языком для системы базы данных. Все реляционные системы управления базами данных, такие как MySQL, MS Access, Oracle, Sybase, Informix, Postgres и SQL Server используют SQL в качестве стандартного языка базы данных.

Кроме того, они используют различные диалекты, такие как:

  • MS SQL Server с помощью T-SQL,
  • Oracle с помощью PL / SQL,
  • версия MS Access из SQL называется JET SQL (родной формат) и т.д.

Почему SQL?

  • Позволяет пользователям получать доступ к данным в реляционных систем управления базами данных.
  • Позволяет пользователям описывать данные.
  • Позволяет пользователям определять данные в базе данных и управлять этими данными.
  • Позволяет вставлять в другие языки, используя модули SQL, библиотеки & предварительные компиляторы.
  • Позволяет пользователям создавать и удалять базы данных и таблицы.
  • Позволяет пользователям создавать представление, хранимые процедуры, функции в базе данных.
  • Позволяет пользователям устанавливать разрешения на таблицы, хранимые процедуры и представления

История:

  • 1970 – доктор Эдгар Ф. “Ted” Кодд из IBM известен как отец реляционных баз данных. Он описал модель реляционной базы данных.
  • 1974 – появился Structured Query Language.
  • 1978 – IBM занималась разработкой идей Кодда и выпустила продукт под названием System / R.
  • 1986 – IBM разработала первый прототип реляционной базы данных и стандартизирована ANSI. Первая реляционная база данных была выпущена Relational Software и позже становится Oracle.

Процесса SQL:

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

Существуют различные компоненты, включенные в процесс. Эти компоненты запросов Query Dispatcher, Optimization Engines, Classic Query Engine и SQL Query Engine, и т.д. Классический двигатель запросов обрабатывает все запросы SQL, но движок SQL-запрос не обрабатывает логические файлы.

Ниже приводится простая диаграмма, показывающая SQL Architecture:

SQL команды:

Стандарт SQL-команд для взаимодействия с реляционными базами данных являются CREATE, SELECT, INSERT, UPDATE, DELETE и DROP. Эти команды могут быть разделены на группы в зависимости от их природы:

DDL – Data Definition Language:

команда Описание
CREATE Создает новую таблицу, представление таблицы или другого объекта в базе данных
ALTER Изменяет существующий объект базы данных, такие как таблицы.
DROP Удаляет всю таблицу, представление таблицы или другой объект в базе данных.

DML – Data Manipulation Language:

команда Описание
SELECT Получает определенные записи из одной или нескольких таблиц
INSERT Создает запись
UPDATE Модифицирует записи
DELETE Удаление записей


DCL – Data Language управления:

команда Описание
GRANT Дает привилегии пользователя
REVOKE Возвращает себе привилегии, предоставленные от пользователя

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

SQL или NoSQL — вот в чём вопрос

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

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

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

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

Какую технологию выбрать? Ответ на этот вопрос зависит от особенностей проекта, о котором идёт речь.

О выборе SQL-баз данных

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

    Необходимость соответствия базы данных требованиям ACID (Atomicity, Consistency, Isolation, Durability — атомарность, непротиворечивость, изолированность, долговечность). Это позволяет уменьшить вероятность неожиданного поведения системы и обеспечить целостность базы данных. Достигается подобное путём жёсткого определения того, как именно транзакции взаимодействуют с базой данных. Это отличается от подхода, используемого в NoSQL-базах, которые ставят во главу угла гибкость и скорость, а не 100% целостность данных.

  • Данные, с которыми вы работаете, структурированы, при этом структура не подвержена частым изменением. Если ваша организация не находится в стадии экспоненциального роста, вероятно, не найдётся убедительных причин использовать БД, которая позволяет достаточно вольно обращаться с типами данных и нацелена на обработку огромных объёмов информации.
  • О выборе NoSQL-баз данных

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

    Вот возможности, которые стали причиной популярности таких NoSQL баз данных, как MongoDB, CouchDB, Cassandra, HBase:

      Хранение больших объёмов неструктурированной информации. База данных NoSQL не накладывает ограничений на типы хранимых данных. Более того, при необходимости в процессе работы можно добавлять новые типы данных.

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

  • Быстрая разработка. Если вы разрабатываете систему, используя agile-методы, применение реляционной БД способно замедлить работу. NoSQL базы данных не нуждаются в том же объёме подготовительных действий, которые обычно нужны для реляционных баз.
  • В следующем разделе рассмотрим некоторые различия между технологиями SQL и NoSQL. А именно, сначала взглянем на простой пример, показывающий фундаментальное различие двух подходов к организации баз данных, потом поговорим о масштабируемости и индексации данных. А в итоге остановимся на примере большой CRM-системы, нуждающейся в высокой производительности хранилища данных.

    SQL и NoSQL

    Начнём с некоторых ключевых концепций реляционных и нереляционных баз данных. Ниже показана база данных, содержащая сведения о взаимоотношениях людей. Вариант a — это бессхемная структура, построенная в виде графа, характерная для NoSQL-решений. Вариант b показывает, как те же данные можно представить в структурированном виде, типичном для SQL.

    Два варианта представления данных

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

    При реляционном подходе данные надо хранить в заранее спроектированной структуре, из которой эти данные потом можно извлекать. Например, используя оператор JOIN при выборке из двух таблиц:

    Как более продвинутый пример, для демонстрации того, когда SQL предпочтительнее NoSQL, рассмотрим особенности применения в NoSQL-базах алгоритмов уплотнения. Проблема заключается в том, что в некоторых NoSQL-базах (например, в CouchDB и HBase) постоянно приходится формировать так называемые sstables — строковые таблицы в формате ключ-значение, отсортированные по ключу. В такие таблицы, которые сохраняются на диск, данные попадают из таблиц, хранящихся в памяти, при их переполнении и в других ситуациях. При интенсивной работе с базой создание таблиц, со временем, приводит к тому, что подсистема ввода-вывода устройства хранения данных становится узким местом для операций чтения данных. Как результат, чтение в NoSQL-базе происходит медленнее, чем запись, что сводит на нет одно из главных преимуществ нереляционных баз данных. Именно для того, чтобы уменьшить этот эффект, системы NoSQL используют, в фоновом режиме, алгоритмы уплотнения данных, пытаясь объединить множество таблиц в одну. Но и сама по себе эта операция весьма ресурсоёмка, система работает под повышенной нагрузкой.

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

    Одно из основных различий рассматриваемых технологий заключается в том, что NoSQL-базы лучше поддаются масштабированию. Например, в MongoDB имеется встроенная поддержка репликации и шардинга (горизонтального разделения данных) для обеспечения масштабируемости. Хотя масштабирование поддерживается и в SQL-базах, это требует гораздо больших затрат человеческих и аппаратных ресурсов.

    Тип хранилища данных Сценарий использования Пример Рекомендации
    Хранилище типа ключ-значение Подходит для простых приложений, с одним типом объектов, в ситуациях, когда поиск объектов выполняют лишь по одному атрибуту. Интерактивное обновление домашней страницы пользователя в Facebook. Рекомендовано знакомство с технологией memcached.
    Если приходится искать объекты по нескольким атрибутам, рассмотрите вариант перехода к хранилищу, ориентированному на документы.
    Хранилище, ориентированное на документы Подходит для хранения объектов различных типов. Транспортное приложение, оперирующее данными о водителях и автомобилях, работая с которым надо искать объекты по разным полям, например — имя или дата рождения водителя, номер прав, транспортное средство, которым он владеет. Подходит для приложений, в ходе работы с которыми допускается реализация принципа «согласованность в конечном счёте» с ограниченными атомарностью и изоляцией. Рекомендуется применять механизм кворумного чтения для обеспечения своевременной атомарной непротиворечивости.
    Система хранения данных с расширяемыми записями Более высокая пропускная способность и лучшие возможности параллельной обработки данных ценой слегка более высокой сложности, нежели у хранилищ, ориентированных на документы. Приложения, похожие на eBay. Вертикальное и горизонтальное разделение данных для хранения информации клиентов. Для упрощения разделения данных используются HBase или Hypertable.
    Масштабируемая RDBMS Использование семантики ACID освобождает программистов от необходимости работать на достаточно низком уровне, а именно, отвечать за блокировки и непротиворечивость данных, обрабатывать устаревшие данные, коллизии. Приложения, которым не требуются обновления или слияния данных, охватывающие множество узлов. Стоит обратить внимание на такие системы, как MySQL Cluster, VoltDB, Clustrix, ориентированные на улучшенное масштабирование.

    Более подробное сравнение SQL и NoSQL можно найти в этом материале. Вот его основные положения. А именно, были проведены испытания трёх основных характеристик систем: параллельная обработка данных, работа с хранилищами информации, репликация данных. Возможности параллельной обработки оценивались путём анализа механизмов блокировки, управления параллельным доступом на основе многоверсионности, и ACID. Тестирование хранилищ охватывало и физические носители, и хранилища использующие оперативную память. Репликацию испытывали в синхронном и асинхронном режимах.

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

    Индексация

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

    И в SQL, и в NoSQL-базах индексы служат одной и той же цели — ускорить и оптимизировать извлечение данных. Но то, как именно они работают — различается из-за разных архитектур баз данных и особенностей хранения информации в базе. В то время, как SQL-индексы представлены в виде B-деревьев, которые отражают иерархическую структуру реляционных данных, в NoSQL базах данных они указывают на документы, или на части документов, между которыми, в основном, нет никаких отношений. Вот подробный материал на эту тему.

    CRM-системы

    CRM-приложения — это один из лучших примеров систем, для которых характерны огромные объёмы ежедневно обрабатываемых данных и очень большое количество транзакций. Все разработчики таких приложений используют и SQL, и NoSQL базы данных. И, хотя большая часть данных транзакций всё ещё хранится в SQL-базах, применение находят общедоступные системы класса DBaaS (data-base-as-a-service, база данных как сервис), наподобие AWS DynamoDB и Azure DocumentDB, в результате, серьёзная нагрузка по обработке данных может быть перенесена в облачные NoSQL-базы.

    В то время, как использование подобных служб освобождает разработчика от решения задач по обслуживанию хранилищ, это, кроме того, область, где NoSQL базы применяются для того, для чего они, в основном, и были созданы, например, для глубинного анализа данных. Объёмы информации, хранимой в огромных CRM-системах финансовых и телекоммуникационных компаний, было бы практически невозможно проанализировать, используя инструменты вроде SAS или R. Это потребовало бы огромных аппаратных ресурсов.

    Главное преимущество таких систем — использование неструктурированных данных, похожих на документы. Такие данные могут подаваться на вход статистических моделей, которые дают компаниям возможность выполнять различные виды анализа. CRM-приложения, кроме того, являются весьма удачным примером, в котором две системы баз данных выступают не конкурентами, а существуют в гармонии, играя каждая свою роль в большой архитектуре управления данными.

    Итоги

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

    Вот признаки проектов, для которых идеально подойдут SQL-базы:

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

    А вот свойства проектов, для которых подойдёт что-то из сферы NoSQL:

    • Требования к данным нечёткие, неопределённые, или развивающиеся с развитием проекта.
    • Цель проекта может корректироваться со временем, при этом важна возможность немедленного начала разработки.
    • Одни из основных требований к базе данных — скорость обработки данных и масштабируемость.

    В итоге хочется сказать, что в современном мире нет противостояния между реляционными и нереляционными базами данных. Вместо этого стоит говорить об их совместном использовании для решения задач, на которых та или иная технология показывает себя лучше всего. Кроме того, всё сильнее наблюдается интеграция этих технологий друг в друга. Например, Microsoft, Oracle и Teradata сейчас предлагают некоторые формы интеграции с Hadoop для подключения аналитических инструментов, основанных на SQL, к миру неструктурированных больших данных.

    Уважаемые читатели, а вам приходилось выбирать системы управления базами данных для собственных проектов? Если да — поделитесь пожалуйста опытом, расскажите, что и почему вы в итоге выбрали.

    SQL Server в Linux SQL Server on Linux

    ОБЛАСТЬ ПРИМЕНЕНИЯ: SQL Server (только в Linux) База данных SQL Azure Azure Synapse Analytics (хранилище данных SQL) Parallel Data Warehouse APPLIES TO: SQL Server (Linux only) Azure SQL Database Azure Synapse Analytics (SQL DW) Parallel Data Warehouse

    Начиная с версии SQL Server 2020 возможна работа SQL Server на Linux. Starting with SQL Server 2020, SQL Server runs on Linux. Несмотря на другую операционную систему, это то же ядро СУБД SQL Server с множеством схожих функций и служб. It’s the same SQL Server database engine, with many similar features and services regardless of your operating system.

    SQL Server 2020 работает в Linux. SQL Server 2020 runs on Linux. Несмотря на другую операционную систему, это то же ядро СУБД SQL Server с множеством схожих функций и служб. It’s the same SQL Server database engine, with many similar features and services regardless of your operating system. Дополнительные сведения об этом выпуске см. в статье Новые возможности SQL Server 2020 для Linux. To find out more about this release, see What’s new in SQL Server 2020 for Linux.

    SQL Server 2020 доступен! SQL Server 2020 is available! Сведения о новых возможностях см. в статье Новые возможности SQL Server 2020 для Linux. To find out what’s new for Linux in the latest release, see What’s new in SQL Server 2020 for Linux.

    SQL Server 2020 доступен! SQL Server 2020 is available! Сведения о новых возможностях см. в статье Новые возможности SQL Server 2020 для Linux. To find out what’s new for Linux in the latest release, see What’s new in SQL Server 2020 for Linux.

    SQL Server 2020 доступен! SQL Server 2020 is available! Сведения о новых возможностях см. в статье Новые возможности SQL Server 2020 для Linux. To find out what’s new for Linux in the latest release, see What’s new in SQL Server 2020 for Linux.

    Установка Install

    Чтобы начать работу, установите SQL Server на Linux, используя любое из следующих кратких руководств: To get started, install SQL Server on Linux using one of the following quickstarts:

    Docker поддерживает множество платформ, то есть вы можете запускать образ Docker в Linux, Mac и Windows. Docker itself runs on multiple platforms, which means that you can run the Docker image on Linux, Mac, and Windows.

    Подключение Connect

    После установки подключитесь к экземпляру SQL Server на компьютере с Linux. After installation, connect to the SQL Server instance on your Linux machine. Вы можете устанавливать подключение как локально, так и удаленно, используя самые разные средства и драйверы. You can connect locally or remotely and with a variety of tools and drivers. В кратком руководстве показано, как использовать программу командной строки sqlcmd. The quickstarts demonstrate how to use the sqlcmd command-line tool. Также можно использовать следующие средства: Other tools include the following:

    Инструмент Tool Учебник Tutorial
    Visual Studio Code (VS Code) Visual Studio Code (VS Code) Использование VS Code с SQL Server на Linux Use VS Code with SQL Server on Linux
    SQL Server Management Studio (SSMS) SQL Server Management Studio (SSMS) Использование SSMS в Windows для подключения к SQL Server на Linux Use SSMS on Windows to connect to SQL Server on Linux
    SQL Server Data Tools (SSDT) SQL Server Data Tools (SSDT) Использование SSDT с SQL Server на Linux Use SSDT with SQL Server on Linux

    Просмотр Explore

    SQL Server 2020 использует одинаковое базовое ядро СУБД на всех поддерживаемых платформах, включая Linux. SQL Server 2020 has the same underlying database engine on all supported platforms, including Linux. Благодаря этому многие существующие функции и возможности работают в Linux так же, как и на других платформах. Therefore, many existing features and capabilities operate the same way on Linux. В этой части документации некоторые из этих функций рассматриваются с точки зрения платформы Linux. This area of the documentation exposes some of these features from a Linux perspective. Кроме того, отмечаются области, в которых платформа Linux предъявляет уникальные требования. It also calls out areas that have unique requirements on Linux.

    Если вы уже знакомы с SQL Server, изучите общие рекомендации и известные проблемы в заметках об этом выпуске. If you are already familiar with SQL Server, review the Release notes for general guidelines and known issues for this release. Также ознакомьтесь с новыми возможностями в SQL Server на Linux и SQL Server 2020 в целом. Then look at what’s new for SQL Server on Linux as well as what’s new for SQL Server 2020 overall.

    SQL Server 2020 (15.x) SQL Server 2020 (15.x) использует одинаковое базовое ядро СУБД на всех поддерживаемых платформах, включая Linux. has the same underlying database engine on all supported platforms, including Linux. Благодаря этому многие существующие функции и возможности работают в Linux так же, как и на других платформах. Therefore, many existing features and capabilities operate the same way on Linux. В этой части документации некоторые из этих функций рассматриваются с точки зрения платформы Linux. This area of the documentation exposes some of these features from a Linux perspective. Кроме того, отмечаются области, в которых платформа Linux предъявляет уникальные требования. It also calls out areas that have unique requirements on Linux.

    Если вы уже знакомы с SQL Server на Linux, изучите общие рекомендации и известные проблемы в заметках об этом выпуске. If you are already familiar with SQL Server on Linux, review the Release notes for general guidelines and known issues for this release. Также ознакомьтесь с новыми возможностями SQL Server 2020 на Linux. Then look at what’s new for SQL Server 2020 on Linux.

    SQL Server 2020 и SQL Server 2020 (15.x) SQL Server 2020 (15.x) используют одинаковое базовое ядро СУБД на всех поддерживаемых платформах, включая Linux. SQL Server 2020 and SQL Server 2020 (15.x) SQL Server 2020 (15.x) have the same underlying database engine on all supported platforms, including Linux. Благодаря этому многие существующие функции и возможности работают в Linux так же, как и на других платформах. Therefore, many existing features and capabilities operate the same way on Linux. В этой части документации некоторые из этих функций рассматриваются с точки зрения платформы Linux. This area of the documentation exposes some of these features from a Linux perspective. Кроме того, отмечаются области, в которых платформа Linux предъявляет уникальные требования. It also calls out areas that have unique requirements on Linux.

    Если вы уже знакомы с SQL Server на Linux, ознакомьтесь с заметками о выпуске: If you are already familiar with SQL Server on Linux, review the release notes:

    Также ознакомьтесь с новыми возможностями: Then look at what’s new:

    Ответы на часто задаваемые вопросы об SQL Server на Linux см. в этой статье. For answers to frequently asked questions, see the SQL Server on Linux FAQ.

    Получить справку Get help

    Примите участие в разработке документации по SQL Contribute to SQL documentation

    Знаете ли вы, что это содержимое вы можете изменить самостоятельно? Did you know that you could edit the content yourself? Это не только улучшит нашу документацию, но и даст вам статус участника в создании этой страницы. If you do so, not only will our documentation improve, but you’ll also be credited as a contributor to the page.

    Обзор версий MySQL — какой релиз выбрать?

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

    • Версия 3.23 (2001). Этот релиз MySQL считается первым по-настоящему жизне­способным вариантом для широкого применения. В этом варианте MySQL еще не сильно превосходила язык запросов на основе неструктурированных файлов, но MyISAM была представлена в качестве замены ISAM — более старой и гораз­до более ограниченной подсистемы хранения. Также стала доступна подсистема InnoDB, но из-за своей новизны она не была включена в стандартный двоичный дистрибутив. Чтобы использовать InnoDB, нужно было скомпилировать сервер самостоятельно. В версии 3.23 были добавлены полнотекстовая индексация и ре­пликация. Последняя была призвана стать той самой отличительной особенно­стью, которая сделала бы MySQL известной в качестве базы данных, по большей части управляемой через Интернет.
    • Версия 4.0 (2003). Появилась новая синтаксическая функция поддержки работы команд UNION и DELETE с несколькими таблицами. Репликация была переписана для использования двух потоков на реплике вместо одного потока, который вы­полнял всю работу и нес убытки от переключения задачи. InnoDB была запущена как стандартная составляющая сервера с полным набором отличительных харак­теристик, таких как строковая блокировка, внешние ключи и т. д. Кэширование запросов было введено в версии 4.0 (и с тех пор не изменилось). Также была представлена поддержка SSL-соединений.
    • Версия 4.1 (2005). Были добавлены дополнительные функции синтаксиса за­просов, включая подзапросы и команду INSERT ON DUPLICATE KEY UPDATE . Начала поддерживаться кодировка UTF-8. Появились новый двоичный протокол и поддержка предварительно подготовленных операторов.
    • Версия 5.0 (2006). В этой версии появилось несколько «корпоративных» функ­ций: представления, триггеры, хранимые процедуры и хранимые функции. Подсистема хранения данных ISAM полностью удалена, введены новые подси­стемы хранения, например Federated.
    • Версия 5.1 (2008). Этот релиз стал первым после того, как Sun Microsystems погло­тила MySQL АВ; работа над ним продолжалась более пяти лет, В версии 5.1 были представлены сегментирование, построчная репликация и разнообразные API для плагинов, включая API подключаемой подсистемы хранения. Подсистема хране­ния BerkeleyDB, первая транзакционная подсистема хранения в MySQL, удалена, а некоторые другие, такие как Federated, устарели. Кроме того, компания Oracle, которая к этому моменту уже владела


    Давайте подведем итоги исторического обзора MySQL: на раннем этапе жизненного цикла она стала

    Говоря о производительности, неплохо было бы продемонстрировать базовый эталонный тест изменения производительности сервера с течением времени. Мы решили не тестировать версии старше 4.1, потому что сейчас редко можно встретить 4.0 и более старые. Кроме того, очень сложно сравнивать эталонные тесты разных версий по причинам, о которых вы подробнее прочтете в следующей главе. Мы получили массу удовольствия, создавая метод эталонного тестирования, который будет работать одинаково со всеми тестируемыми версиями сервера, и нам потребовалось предпринять множество попыток, прежде чем мы достигли успеха. В табл. 1. показано количество транзакций в секунду для нескольких уровней конкурентного доступа.

    Таблица 1. Эталонный тест блокировки «только для чтения» нескольких версий MySQL

    Потоки

    MySQL 4.1

    MySQL 5.0

    MySQL 5.1

    Обзор sql

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

    Здесь дан лишь краткий обзор; многие подробности даны, чтобы впоследствии обращаться к ним по мере овладения языком. Мы поместили всё это в начало книги, чтобы ориентировать вас на мир SQL без упрощенного подхода к его проблемам и, в тоже время, дать вам повторяющиеся в дальнейшем места для ссылки на них, когда у вас появятся вопросы. Этот материал может стать более понятным, когда мы перейдём к описанию конкретных команд SQL в Главе 3.

    КАК РАБОТАЕТ SQL?

    SQL это язык, ориентированный специально на реляционные базы данных (РБД). Он выполняет большую работу, которую вы должны были бы делать, если бы использовали универсальный язык программирования, например C. Чтобы сформировать РБД на C, вам необходимо было бы начать с нуля. Вы должны были бы определить объект, называемый таблицей, которая могла бы увеличиваться, чтобы иметь любое число строк, а затем создавать постепенно процедуры для вставки и извлечения значений.
    Если бы вы захотели найти некоторые конкретные строки, вам необходимо было бы выполнить по шагам процедуру, подобную следующей:

    1. Рассмотреть строку таблицы.
    2. Выполнить проверку: является ли эта строка одной из строк, которая вам нужна.
    3. Если это так, сохранить её где-нибудь, пока вся таблица не будет проверена.
    4. Проверить, имеются ли другие строки в таблице.
    5. Если имеются, возвратиться на шаг 1.
    6. Если строк больше нет, вывести все значения, сохранённые в шаге 3.

    (Конечно, это не фактический набор C-команд, а только логика шагов, которые должны были бы быть включены в реальную программу.) SQL сделает всё это за вас. Команды в SQL могут работать со всеми группами таблиц как с единым объектом и могут обрабатывать любое количество информации, извлечённой или полученной из них в виде единого модуля.

    ЧТО ДЕЛАЕТ ANSI?

    Как мы уже сказали во Введении, стандарт SQL определяется с помощью кода ANSI (Американский Национальный Институт Стандартов). SQL не изобретался ANSI. Это, по существу, изобретение IBM. Но другие компании подхватили SQL сразу же. По крайней мере одна компания (Oracle) отвоевала у IBM право на рыночную продажу SQL-продуктов.
    После того как появился ряд конкурирующих программ SQL на рынке, ANSI определил стандарт, к которому они должны быть приведены. (Определение таких стандартов и является функцией ANSI). Однако после этого появились некоторые проблемы. Возникли они, в результате стандартизации ANSI, в виде некоторых ограничений. Так как не всегда ANSI определяет то, что является наиболее полезным, то программы пытаются соответствовать стандарту ANSI, не позволяя ему ограничивать их слишком сильно. Это, в свою очередь, ведет к случайным несогласованностям. Программы Баз Данных обычно придают ANSI SQL дополнительные особенности и часто ослабляют многие ограничения. Поэтому распространённые разновидности ANSI будут также рассмотрены. Хотя мы, очевидно, не сможем рассмотреть каждое исключение или разновидность, удачные идеи имеют тенденцию к внедрению и использованию в различных программах, даже когда они не определены стандартом ANSI. ANSI это вид минимального стандарта, и вы можете делать больше, чем он позволяет, хотя и должны выполнять его указания при выполнении задач, которые он определяет.

    ИНТЕРАКТИВНЫЙ И ВЛОЖЕННЫЙ SQL

    Имеются два SQL: Интерактивный и Вложенный. Большей частью обе формы работают одинаково, но используются различно. Интерактивный SQL используется для функционирования непосредственно в базе данных, чтобы производить вывод для использования его заказчиком. В этом SQL — когда вы введёте команду, она сейчас же выполнится, и вы сможете сразу увидеть вывод (если он вообще получится).

    Вложенный SQL состоит из команд SQL, помещённых внутри программ, которые обычно написаны на другом языке (типа КОБОЛа или ПАСКАЛя). Это делает такие программы более мощными и эффективным.

    Однако, допуская эти языки, приходится иметь дело со структурой SQL и стилем управления данных, который требует некоторых расширений интерактивного SQL. Передача SQL-команд во вложенный SQL является пропускаемой («passed off») для переменных или параметров, используемых программой, в которую они были вложены.

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

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

    DDL (Язык Определения Данных) — так называемый Язык Описания Схемы в ANSI — состоит из команд, которые создают объекты (таблицы, индексы, просмотры и так далее) в базе данных.

    DML (Язык Манипулирования Данными) это набор команд, которые определяют, какие значения представлены в таблицах в любой момент времени.

    DCD (Язык Управления Данными) состоит из средств, которые определяют, разрешить ли пользователю выполнять определённые действия, или нет. Они являются составными частями DDL в ANSI.

    Не забывайте эти названия. Это не различные языки, а разделы команд SQL, сгруппированные по их функциям.

    РАЗЛИЧНЫЕ ТИПЫ ДАННЫХ

    Не все типы значений, которые могут находиться в полях таблицы, логически одинаковы. Наиболее очевидное различие — между числами и текстом. Вы не можете помещать числа в алфавитном порядке или вычитать одно имя из другого.
    Так как системы с РБД базируются на связях между фрагментами информации, различные типы данных должны отличаться друга от друга так, чтобы соответствующие процессы и сравнения могли быть в них выполнены. В SQL это делается с помощью назначения каждому полю типа данных, указывающего тип значения, которое это поле может содержать. Все значения в данном поле должны иметь одинаковый тип. В таблице Заказчиков, например, cname и city содержат строки текста для оценки, а snum и cnum это числа. По этой причине вы не можете ввести значение Highest (Наивысший) или значение None (Никакой) в поле rating, которое имеет числовой тип данных. Это ограничение удачно, так как оно налагает некоторую структурность на ваши данные. Вы часто будете сравнивать некоторые или все значения в данном поле, поэтому вы можете выполнять действие только на определенных строках, а не на всех. Вы не могли бы сделать этого, если бы значения полей имели смешанный тип данных.

    К сожалению, определение этих типов данных является основной областью, в которой большинство коммерческих программ БД и официальный стандарт SQL не всегда совпадают. ANSI SQL-стандарт распознаёт только text и number, в то время как большинство коммерческих программ используют другие специальные типы. Такие как DATA (ДАТА) и TIME (ВРЕМЯ) — фактически, почти стандартные типы (хотя точный формат их меняется). Некоторые пакеты также поддерживают такие типы как, например, MONEY (ДЕНЬГИ) и BINARY (ДВОИЧНЫЙ). (MONEY это специальная «валютная» система исчисления, используемая компьютерами.)

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

    ANSI определяет несколько числовых типов, различия между которыми довольно тонки, и иногда их путают. Разрешённые ANSI-типы данных перечислены в Приложении B. Сложность числовых типов ANSI можно, по крайней мере частично, объяснить усилием сделать вложенный SQL совместимым с рядом других языков. Два типа чисел ANSI — INTEGER (ЦЕЛОЕ ЧИСЛО) и DECIMAL (ДЕСЯТЕРИЧНОЕ ЧИСЛО) (которые можно сокращать как INT и DEC, соответственно), будут адекватны для наших целей, так же как и для целей большинства практических деловых прикладных программ. Естественно, что тип ЦЕЛОЕ можно представить как ДЕСЯТЕРИЧНОЕ ЧИСЛО, которое не содержит никаких цифр справа от десятичной точки.

    Тип для текста — CHAR (или СИМВОЛ), относящийся к строке текста. Поле типа CHAR имеет длину, определяемую максимальным числом символов, которые могут быть введены в это поле. Большая часть реализаций также имеют нестандартный тип, называемый VARCHAR (ПЕРЕМЕННОЕ ЧИСЛО СИМВОЛОВ), который является текстовой строкой и может иметь любую длину до определённого реализацией максимума (обычно 254 символа). Значения CHARACTER и VARCHAR включаются в одиночные кавычки как ‘текст’. Различие между CHAR и VARCHAR в том, что CHAR должен резервировать достаточное количество памяти для максимальной длины строки, а VARCHAR распределяет память по мере необходимости.
    Символьные типы состоят из всех печатных символов, включая числа. Однако число 1 это не то же, что символ «1». Символ «1» — только печатный фрагмент текста, не определяемый системой как числовое значение 1. Например 1 + 1 = 2, но «1» + «1» не равно «2». Символьные значения сохраняются в компьютере как двоичные значения, но показываются пользователю как печатный текст.

    Преобразование выполняется по формату, определяемому системой, которую вы используете. Этот формат преобразования будет одним из двух стандартных типов (возможно, с расширениями), используемых в компьютерных системах: ASCII-код (используемый во всех персональных и малых компьютерах) и EBCDIC-код (Расширенном Двоично-Десятеричном Код Обмена Информации) (используемый в больших компьютерах). Определенные операции, такие как упорядочивание в алфавитном порядке значений поля, будет изменяться вместе с форматом. Применение этих двух форматов будет обсуждаться в Главе 4.

    Мы должны следить за рынком, а не за ANSI, в использовании типа DATE (ДАТА). (В системе, которая не распознает тип ДАТА, вы, конечно, можете объявить дату как символьное или числовое поле, но это сделает большинство операций более трудоёмкими.)

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

    Вы можете понять из предшествующего обсуждения, что имеются самостоятельные отдельные несоответствия между продуктами мира SQL. SQL появился из коммерческого мира БД как инструмент и был позже превращён в стандарт ANSI. К сожалению, ANSI не всегда определяет наиболее полезное, поэтому программы пытаются соответствовать стандарту ANSI, не позволяя ему ограничивать их слишком сильно. ANSI — вид минимального стандарта — вы можете делать, больше чем он это позволяет, но вы должны быть способны получить те же самые результаты при выполнении той же самой задачи.

    ЧТО ТАКОЕ «ПОЛЬЗОВАТЕЛЬ»?

    SQL обычно находится в компьютерных системах, которые имеют больше чем одного пользователя и, следовательно, должен различать их (ваше семейство PC может иметь любое число пользователей, но оно обычно не имеет способов, чтобы отличать одного пользователя от другого).
    Обычно в такой системе каждый пользователь имеет некий вид кода проверки прав, который идентифицирует его или её (терминология изменяется). В начале сеанса с компьютером пользователь входит в систему (регистрируется), сообщая компьютеру, кто этот пользователь, идентифицируясь с помощью определенного ID (Идентификатора). Любое количество людей, использующих ID доступа, являются отдельными пользователями; и, аналогично, один человек может представлять большое количество пользователей (в разное время), используя различные идентификаторы доступа к SQL. Действия в большинстве сред SQL приведены к специальному Идентификатору доступа, который точно соответствует определённому пользователю. Таблица или другой объект принадлежит пользователю, который имеет над ним полную власть. Пользователь может или может не иметь привилегии на выполнение действия над объектом. Для наших целей мы договоримся, что любой пользователь имеет необходимые привилегии для выполнения любого действия, пока мы не возвратимся специально к обсуждению привилегий в Главе 22. Специальное значение USER (ПОЛЬЗОВАТЕЛЬ) может использоваться как аргумент в команде. Оно указывает на доступный Идентификатор пользователя, выдавшего команду.

    УСЛОВНЫЕ ОБОЗНАЧЕНИЯ И ТЕРМИНОЛОГИЯ

    Ключевые слова это слова, которые имеют специальное значение в SQL. Они могут быть командами, но не текстом и не именами объектов. Мы будем выделять ключевые слова, печатая их ЗАГЛАВНЫМИ БУКВАМИ. Вы должны быть внимательны, чтобы не путать ключевые слова с терминами.

    В SQL есть определённые специальные термины, которые используются для его описания. Среди них такие слова как «запрос», «предложение» и «предикат», которые являются важнейшими в описании и понимании языка, но не означают что-нибудь самостоятельное для SQL.

    Команды или предложения являются инструкциями, с помощью которых вы обращаетесь к БД SQL.

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

    Предложения начинаются ключевым словом и состоят из ключевых слов и аргументов. Например, предложения, с которыми вы можете сталкиваться, это «FROM Salespeope» и «WHERE city = «London»». Аргументы завершают или изменяют значение предложения. В примерах выше, Salespeople — аргумент, а FROM — ключевое слово предложения FROM. Аналогично «city = «London»» — аргумент предложения WHERE.

    Объекты это структуры БД, которым даны имена и которые сохраняются в памяти. Сюда относятся базовые таблицы, представления и индексы.

    Чтобы показать вам, как формируются команды, мы будем делать это на примерах. Имеется, однако, более формальный метод описания команд, использующий стандартизированные условные обозначения. Мы будем использовать его в последующих главах для удобства, чтобы понимать эти условные обозначения в случае, если вы столкнетесь с ними в других SQL-документах.
    Квадратные скобки ( [ ] ) будут указывать части, которые могут не использоваться, а многоточия ( . ) указывают, что всё, предшествующее им, может повторяться любое число раз. Слова в угловых скобках ( ) — специальные термины, которые объясняют, что они собой представляют. Мы значительно упростили стандартную терминологию SQL, но без ухудшения его понимания.

    Мы кратко рассмотрели в этой главе основы. Но нашим намерением и было — бегло рассмотреть основы SQL так, чтобы вы смогли охватить весь объём информации. Когда мы возвратимся к основам в следующей главе, некоторые вещи будут конкретизированы.

    Теперь вы знаете кое-что относительно SQL: какова его структура, как он используется, как он представляет данные и как они определяются (и некоторые несогласованности, появляющиеся при этом), некоторые условные обозначения и термины, используемые для их описания. Всё это — слишком большой объём информации для одной главы; мы не ожидаем, что вы запомнили все эти подробности, но вы сможете вернуться к ним позже, если понадобится.

    Главе 3 мы будем работать, показывая конкретно, как формируются команды и что они делают. Мы представим вам команду SQL, используемую для извлечения информации из таблиц, которая является наиболее часто используемой командой SQL. К концу главы вы будете способны извлекать конкретную информацию из вашей БД с высокой степенью точности.

    Обзор sql

    В отличие от настольных систем серверы баз данных требуют для своей работы могучей аппаратуры, сложны в использовании и крайне надежны, при должном использовании. Между ними и настольными системами расстояние которое можно сравнить с пропастью. Можно ли преодолеть эту пропасть? Вот в чем вопрос. Надо отметить, что этим вопросом задаемся не мы первые, не мы последние. Раньше нас с вами он пришел в голову большому числу поставщиков. И что вы думаете они сделали? Они попытались его решить, создав системы, занимающее промежуточное положение между настольными базами и серверами реляционных баз данных. Таких продуктов появилось множество и о некоторых из них, автору и хотелось бы рассказать в этой статье. Сразу необходимо отметить, что статья не претендует на полноту. Нельзя объять необъятное. Но хотелось бы дать общее сравнительное представление о продуктах.

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

    Участники

    Sybase SQL Anywhere – SYBASE Inc. Sybase SQL Anywhere так же не является собственной разработкой SYBASE. Продукт был приобретен вместе с фирмой WATCOM и до этого уже хорошо зарекомендовал себя как WATCOM SQL Server. Судя по последним анонсам фирмы, SYBASE действительно собирается увидеть SQL повсюду. Объявлено о разработке версии продукта, которая сможет выполняться на PDA. Дескать они уже достаточно мощные, что же мы будем упускать рынок.

    Personal ORACLE v. 7.2 – ORACLE Corporation. Personal ORACLE является одним из продуктов линии ORACLE. У автора даже язык не поварачивается назвать его персональным. Впрочем видимо это осознали и в ORACLE, поскольку уже появился Personal ORACLE Lite.

    SQLBase v. 6.1 – CENTURA Softvare Corporation. Этот сервер разрабатывался как альтернатива серверу DB2 на платформе Intel. Ранее фирма называлась GUPTA, однако продукт поставлялся под тем же наименованием. Учитывая, что рассматриваемая версия является шестой, можно с уверенностью сказать, что сервер является прекрасным, отлаженным и производительным решением для рабочих групп.

    Инсталляция и настройка

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

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

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

    Соответствие стандарту языка SQL

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

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

    Одним из первых в стандарте описывается набор типов данных, которые должны быть реализованы на сервере. Все рассматриваемые серверы соответствуют в этом отношении стандарту. Кроме того, все серверы поддерживают строковые данные переменной длины, описание реализации которых отсутствует в стандарте. Эта возможность описывается стандартом SQL92. Этот же стандарт описывает битовые данные фиксированной и переменной длины, и темпоральные типы данных (data, time, interval). Все рассматриваемые серверы позволяют реализовать хранимые процедуры, триггеры, курсоры и декларативную целостность, что соответствует стандарту SQL92. Однако не все реализации не отличаются полнотой. Например только SQL Anywhere и INTERBASE поддерживаетают каскадное обновление. INTERBASE также поддерживает каскадное обновление. А SQLBase выделилась реализацией сохраненных процедур – они пишутся на специальном языке – SAL. Это может свести на нет переносимость сервера, поскольку язык больше не кем не поддерживается. В стандарте SQL92 введено понятие схемы . Из всех серверов рассмотренных в обзоре только INTERBASE не поддерживает схемы.Все рассмотренные сервера поддерживают это понятие или его эквивалент. По мнению автора одной из наиболее важной особенностей описанной стандартом SQL92 является поддержка национальных языков. Все серверы позволяют указать при создании базы данных, какой национальный язык будет использоваться. Правда стоит отметить, что качество поддержки заметно отличается от продукта к продукту. Так например сервер SQL Anywhere поддерживает только кодировку 866.

    Поддержка стандартов ПО промежуточного слоя


    INTERBASE


    Sybase SQL Anywhere


    Personal ORACLE


    SQLBase


    Средства администрирования


    INTERBASE

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

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

    Но всетаки эти утилиты оставляют желать лучшего. Может быть это маркетинговый ход, ведь Вы всегда можете приобрести другой продукт этой же родительской фирмы, который послужит прекрасным клиентским приложением для INTERBASE — Paradox. Невероятная популярность DELPHI, тоже делает свое дело. Постоянно расширяется число продуктов поддерживающих INTERBASE. В их числе есть и приличные утилиты администрирования.Однако хотелось бы чтобы фирма BORLAND продолжала совершенствовать продукт, ведь он уже давно практически не изменялся. Кроме того с инструментальными средствами фирмы поставляется утилита SQL Explorer, которая позволяет выполнять операции над объектами баз данных. Ничего подобного в комплект поставки самого сервера не входит. Вместо этого вам предлагается старомодная утилита WSQL. В ней себя могут удобно чувствовать профессионалы, но не новички. Но может быть это маркетинговый ход BORLAND, ведь Вы всегда можете приобрести другой продукт этой же фирмы, который послужит прекрасным клиентским приложением для INTERBASE — Paradox. Невероятная популярность DELPHI, тоже делает свое дело. Постоянно расширяется число продуктов поддерживающих INTERBASE. В их числе есть и приличные утилиты администрирования.

    Sybase SQL Anywhere

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

    Personal ORACLE



    SQLBase


    Репликация


    INTERBASE


    Sybase SQL Anywhere

    Из полезных возможностей стоит отметить автоматическое разрешение конфликтов, реализованное посредством специальных триггеров. В документации к продукту указано, что потенциально возможна репликация на другие платформы, такие как ORACLE, DB2, MS SQL Server.

    Personal ORACLE


    SQLBase


    Поддержка INTERNET


    INTERBASE


    Sybase SQL Anywhere


    Personal ORACLE


    SQLBase


    Средства разработки

    BORLANDInprise предлагает полный спектр продуктов для разработчика. Сюда входят DELPHI, C++ Builder, Borland C++ 5.02, Visual dBASE, Report Smith. Не отстают и другие поставщики. SYBASE предлагает спектр полный продуктов, начиная от компонентов и серверами транзакций. От додного поставщика можено приобрести: Power Designer – средства моделирования баз данных, Power++ (бывшая OPTIMA++) – средство быстрой разработки на С++, Power Builder – средство разработки четвертого поколения. Вообще по мнению автора, позиция SYBASE в отношении развития своих продуктов сейчас одна из самых привлекательных и перспективных. ORACLE является лидером индустрии и поэтому в ее торговых рядах в можете подобрать себе средства разработки на любой вкус. Однако стоит отметить, что эти средства ориентированы на разработку крупных проектов, и поэтому требуют высокой квалификации разработчиков и финансовых затрат. Однако они обеспечивают недостижимо высокий уровень масштабируемости и переносимости приложений. Что касается фирмы CENTURA, то наверное многим известен ее флагманский продукт – SQLWindows. Весьма продвинутое средство разработки четвертого поколения. Кроме того совсем недавно между CENTURA и PROGRESS Software достигнута договоренность о взаимном лицензировании технологий. Это означает, что высокоуровневые возможности среды разработки PROGRESS, будут распространяться и на сервер SQLBase.

    Уникальные особенности


    INTERBASE

    INTERBASE разрабатывалась для работы в тяжелых условиях среды клиент-сервер и поэтому для достижения высокой производительности каждый производитель применял какие-либо хитрости.

    Наибольшей хитростью в INTERBASE по мнению автора является то, что он имеет активное ядро. Что это такое спросите вы. Представьте себе, что несколько пользователей работают с одиними и теми же данными. Один из них обновил запись. Увидят ли эти изменения другие пользователи. Да увидят! Но для этого обязательно необходимо проделать некоторую дополнительную рабату. При обычном подходе (используемом большинством других баз данных) пользователь должен заново перечитать данные с сервера. Это приводит к высокому траффику в сети и как следствие к низкой производительности. INTERBASE позволяет избежать этого с помощью механизма уведомлений. Каждый пользователь работающий с базой данных регистрирует свой интерес к определенным событиям. Когда одно из этих событий наступает, INTERBASE посылает клиентскому приложению уведомление, о том что сабытие наступило. При этом клиентское приложение может принять решение как обработать это событие. Не требуется постояннного опроса базы данных и излишнего их зачитывания. Просто и эффективно.

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

    Одной из особенностей INTERBASE, реализованной еще только в ORACLE, является многоверсионная архитектура. Это означает, что когда пользователь редактирует запись, он редактирует ее копию – так называемую версию. При этом транзакции на чтение не блокируют транзакции записи и обновления и наоборот. Ядро сервера отслеживает версии и приводит базу к актуальному виду. Это позволяет существенно повысить производительность. Кроме того это снижает требования к ресурсам, поскольку версии хранят только изменеия данных.

    В мире реляционной алгебры царит идеальный порядок. Идеальный потому, что все разработчик оперирует абстрактными наборами данных – идельными таблицами. Это и хорошо и плохо одновременно. Хорошо потому, что вы можете изменит десять записей так же лекго, как и одну. Плохо потому, что вы абстрагированы от физической структуры данных. Вы не всегда знаете сколько у вас записей, в каком порядке они следуют и т.п. Это сказывается на производительности. Вы должны явно указывать серверу как возвращать вам данные. Все настольные базы данных позволяют осуществлять передвижения от одной записи к другой. В реляционных базах для достижения этого необходимо использовать особые средства. Но из всякого правила существуют исключения. Таким исключением является INTERBASE. Ядро этого сервера позволяет осуществлять навигационный, позаписный доступ к данным.

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

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

    В INTERBASE имеется возможность расширять функции ядра для обработки подобных данных. Называется она – фильтры. Разработчик имеет возможность посредством API создать свой фильтр для обработки специализированных данных. Причем эта возможность существует уже давно.

    Sybase SQL Anywhere


    Personal ORACLE


    SQLBase


    Субъективные впечатления

    Выполняется запрос, производящий вставку записей в таблицу из которой они этим же запросом и выбираются. Таким образом проверяется целостность транзакции чтения. SQL Anywhere, SQLBase и Personal ORACLE прошли этот тест без проблем. А вот INTERBASE выполнял бесконечный цикл вставки. Возможно это связано с поддержкой многоверсионности, однако в документации по этому поводу нет никаких замечаний. Другой тест это – порождение версии изменяемой записи, посредством триггера. Здесь уже ORACLE сел в лужу. Однако в документации черным по белому написано, что это особенность называется – мутирующая таблица. Стоит отметить, что наличие таких задокументированных или нет особенностей может существенно осложнить жизнь разработчику.

    Требования к аппаратному обеспечению


    INTERBASE SQL Anywhere Personal Oracle SQLBase
    Процессор 386 (486 и выше) 386 (486 и выше) 386 (486 и выше) 386 (486 и выше)
    Оперативная память 168 8 8 (12) 4
    Место на диске (M) 30

    Сводная таблица возможностей


    INTERBASE SQL Anywhere Personal Oracle SQLBase
    Инсталляция
    Создание демонстрационной базы
    Установка драйверов
    Программы деинсталляции
    Перносимость
    DOS
    Windows 3.1
    Windows 95
    Windows NT
    UNIX
    OS/2
    NetWare
    Сетевые протоколы
    TCP/IP
    IPX/SPX
    NetBios
    Winsoket
    Nimed Pipes
    SQL
    Декларативная целостность
    Процедурная целостность
    Каскадное удаление
    Каскадное обновление
    Типы данных в соответствии со стандартом SQL 92
    Пользовательские типы данных (домены)
    Триггеры
    Процедуры
    Генераторы последовательностей
    Серверные курсоры
    Процедурные расширения
    IF ELSE
    CASE
    FOR
    WHILE
    Защита данных
    Группы пользователей (роли)
    Зеркалирование данных
    Архивирование данных
    Журналирование транзакций
    Особенности сервера
    Многоверсионность
    Активное ядро
    Уведомления
    Автоматические транзакции
    Двухфазная таранзакция
    Массивы
    Навигационный доступ
    Пользовательские функции
    Дополнительные возможности
    Планировщик задач
    Профайлер
    Сервис мониторинга

    Советы по выбору


    Простота использования


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


    Простота программирования


    Что дальше?

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

    Vladimir Drach. Official Web-Site. — Личный сайт Владимира Драча

    Сравнение современных СУБД

    Вторник, 30 Май 2020 15:13

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

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

    На что стоит обращать внимание

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

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

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

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

    1. Oracle 12c

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

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

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

    Достоинства

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

    Недостатки

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

    Идеально подходит для крупных организаций, которые работают с огромными базами данных и разнообразными функциями.

    2. MySQL

    MySQL — одна из самых популярных баз данных для веб-приложений. Фактически, является стандартом de facto для веб-серверов, которые работают под управлением операционной системы Linx. MySQL — это бесплатный пакет программ, однако новые версии выходят постоянно, расширяя функционал и улучшая безопасность. Существуют специальные платные версии, предназначенные для коммерческого использования. В бесплатной версии наибольший упор делается на скорость и надежность, а не на полноту функционала, который может стать и достоинством и недостатком — в зависимости от области внедрения.

    Разработку и поддержку MySQL осуществляет корпорация Oracle, получившая права на торговую марку вместе с поглощённой Sun Microsystems, которая ранее приобрела шведскую компанию MySQL AB. Продукт распространяется как под GNU General Public License, так и под собственной коммерческой лицензией. Помимо этого, разработчики создают функциональность по заказу лицензионных пользователей. Именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.

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

    Достоинства

    • Распространяется бесплатно
    • Прекрасно документирована
    • Предлагает много функций, даже в бесплатной версии
    • Пакет MySQL включен в стандартные репозитории наиболее распространённых дистрибутивов операционной системы Linux, что позволяет устанавливать её элементарно
    • Поддерживает набор пользовательских интерфейсов
    • Может работать с другими базами данных, включая DB2 и Oracle.

    Недостатки

    • Придётся потратить много времени и усилий, чтобы заставить MySQL выполнять несложные задачи, хотя другие системы делают это автоматически, например: создавать инкрементные резервные копии.
    • Отсутствует встроенная поддержка XML или OLAP.
    • Для бесплатной версии доступна только платная поддержка.

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

    3. Microsoft SQL сервер

    Ещё одной из популярных СУБД является программный продукт Microsoft SQL-сервер. Это система управления базами данных, движок которой работает на облачных серверах, а также локальных серверах, причем можно комбинировать типы применяемых серверов одновременно. Вскоре после выпуска Microsoft SQL сервер 2020, Microsoft адаптировала продукт для операционной системы Linux, а на Windows-платформе он работал изначально.

    Одной из уникальных особенностей версии 2020 года является temporal data support (временная поддержка данных), которая позволяет отслеживать изменения данных с течением времени. Последняя версия Microsoft SQL-сервер поддерживает dynamic data masking (динамическую маскировку данных), которая гарантирует, что только авторизованные пользователи будут видеть конфиденциальные данные.

    Достоинства

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


    Недостатки

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

    Идеально подходит для: крупных организаций, которые уже используют ряд продуктов Microsoft.

    4. PostgreSQL

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

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

    Достоинства

    • Является масштабируемым и способен обрабатывать терабайты данных.
    • Поддерживает формат json.
    • Существует множество предопределенных функций.
    • Доступен ряд интерфейсов.

    Недостатки

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

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

    5. MongoDB

    Еще одна бесплатная база данных, которая имеет коммерческую версию — MongoDB, она предназначена для приложений, которые используют как структурированные, так и неструктурированные данные. Ядро является очень гибким и работает при подключении базы данных к приложениям через драйверы MongoDB. Существует широкий выбор доступных драйверов, поэтому легко найти драйвер, который будет работать с требуемым языком программирования.

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

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

    Достоинства

    • Скорость и простота в использовании
    • Движок поддерживает json и другие традиционные документы NoSQL.
    • Данные любой структуры могут быть сохранены/прочитаны быстро и легко.

    Недостатки

    • SQL не используется в качестве языка запросов.
    • Инструменты для перевода SQL-запросов в MongoDB доступны, но их следует рассматривать именно как дополнение.
    • Программа установки может занять много времени.

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

    6. MariaDB

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

    MariaDB фактически — это ответвление от СУБД MySQL, разрабатываемое сообществом под лицензией GNU GPL. Разработку и поддержку MariaDB осуществляет компания MariaDB Corporation Ab и фонд MariaDB Foundation. Толчком к созданию стала необходимость обеспечения свободного статуса СУБД, в противовес политике лицензирования MySQL компанией Oracle. Система лицензирования MariaDB обязывает участников, желающих добавить свой код в основную ветку СУБД, обмениваться своими авторскими правами с MariaDB Foundation для охраны лицензии и возможности создавать критические исправления для MySQL.

    Ведущий разработчик — Майкл Видениус, автор оригинальной версии MySQL и основатель компании Monty Program AB.

    Ядро базы данных позволяет делать выбор из нескольких систем хранения, и это делает использование ресурсов более оптимизированным, что повышает производительность запросов и обработки. В состав MariaDB включена подсистемы хранения данных XtraDB для возможности замены InnoDB, как основной подсистемы хранения. Также включены подсистемы Aria, PBXT и FederateX. Она полностью совместима с MySQL, и прекрасно подходит в качестве замены, т.к. полностью соответствует как набор команд, так и API. Многие разработчики MySQL были вовлечены в процесс разработки, а сейчас принимают участие в развитии.

    Достоинства

    • Система работает быстро
    • Индикаторы дадут вам знать, как обрабатывается запрос.
    • Расширяемая архитектура и плагины позволяют настраивать инструмент в соответствии с вашими потребностями.
    • Шифрование доступно в сети, сервере и уровне приложения.

    Недостатки

    • На данный момент стабильность ниже, чем у MySQL, поэтому даже на новых проектах можно рекомендовать устанавливать mysql.
    • Движок довольно новый, поэтому пока нет никаких гарантий дальнейших обновлений.
    • Как и во многих других бесплатных базах данных, вам придется платить за поддержку.

    Идеальна как альтернатива MySQL, если MySQL не устраивает по каким-то причинам.

    7. DB2

    Созданная компанией IBM, DB2 представляет собой СУБД, которая имеет возможности NoSQL, и может читать JSON и XML-файлы. Ввиду того, что система разрабатывалась для серверов компании IBM модельного ряда iSeries, логично, что система работает на Windows, Linux и Unix.

    Диалект языка SQL, используемый в DB2 за редкими исключениями строго декларативен, система снабжена многофазовым оптимизатором, строящим по этим декларативным конструкциям план выполнения запроса. В диалекте SQL DB2 отсутствуют подсказки оптимизатору, мало развит (а долгое время вообще отсутствовал) язык хранимых процедур, и, таким образом, всё направлено на поддержание декларативного стиля написания запросов. Язык SQL DB2 при этом является вычислительно полным, то есть потенциально позволяет в декларативной форме определять любые вычислимые соответствия между исходными данными и результатом. Это достигается в том числе за счёт использования табличных выражений, рекурсии и других развитых механизмов манипулирования данными.

    Оптимизатор DB2 широко использует статистику распределения данных в таблицах (если процесс её сбора был выполнен администратором базы данных), поэтому один и тот же запрос на языке SQL может быть оттранслирован в совершенно различные планы выполнения в зависимости от статистических характеристик данных, которые он обрабатывает.

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

    DB2 является единственной реляционной СУБД общего назначения, имеющей реализации на аппаратно-программном уровне (система IBM i; также в оборудовании мэйнфреймов IBM System z реализуются средства поддержки DB2).

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

    Текущая версия DB2 — это LUW 11.1, которая предлагает разнообразные улучшения и доработки. Одно из них, ускорение Blu , которое предназначено, для того чтобы сделать эту базу данных быстрее. Пропуск данных предназначен для повышения быстродействия системы с большим количеством данных, чем может она может вместить в себя. Последняя версия DB2 также обеспечивает усовершенствованные функции аварийного восстановления, совместимости и аналитики.

    Достоинства

    • Blu Acceleration позволяет грамотно задействовать ресурсы для объёмных баз данных.
    • Может быть размещена в облачном хранилище, на физическом сервере, или же и там, и там одновременно.
    • Несколько задач могут выполняться одновременно с помощью планировщика задач.
    • Коды ошибок и коды завершения позволяют легко отследить, какие задания выполняются или выполнились с помощью планировщика задач.

    Недостатки

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

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

    8. SAP HANA

    Разработанная компанией SAP SE, SAP HANA — это СУБД, с движком ориентированным на работу со столбцами, работающая с родными данными SAP и чужими данными. Ядро предназначена для сохранения и извлечения данных из приложений и других источников на нескольких уровнях хранения. Может быть размещен на физических серверах, и в облаке.

    Достоинства

    • Она поддерживает SQL, OLTP и OLAP.
    • Ядро снижает требования к ресурсам за счет использования сжатия.
    • Данные хранятся в памяти, сокращая время доступа, в некоторых случаях, значительно.
    • Отчеты формируются в реальном времени.
    • Может взаимодействовать с рядом других приложений.

    Недостатки

    • Высокая стоимость лицензий даже если речь идёт о плате за программное обеспечение предприятия.
    • Это всё ещё относительный новичок, требуются постоянные обновления.

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

    9. ЛИНТЕР

    «Линтер» — российская СУБД, реализующая стандарт SQL:2003 (за исключением нескалярных типов данных и объектно-ориентированных возможностей) и поддерживающая большинство операционных систем, в том числе семейство Windows, различные версии UNIX, ОС реального времени (включая QNX).

    К особенностям можно отнести защиту данных: 2 класс защиты данных от несанкционированного доступа и 2 уровень контроля отсутствия недекларированных возможностей. Мандатный контроль доступа к данным на уровне таблиц, столбцов записей и отдельных полей записей. Управление доступом к рабочим станциям и устройствам хранения информации. Контроль доступа к СУБД по расписанию. Управление протоколированием операций над БД (аудит). Аутентификация пользователей через LDAP, Kerberos, средствами операционной системы. Хеширование паролей по алгоритму FIPS 180-2 SHA-224.

    18 марта 2020 года по решению Экспертного совета по российскому программному обеспечению при Минкомсвязи России СУБД ЛИНТЕР включена в единый реестр российских программ для электронных вычислительных машин и баз данных (реестр российского ПО).

    Репликация асинхронная (в том числе и двунаправленная), возможна репликация с другими БД через ODBC.

    Имеет утилиты конвертации, работающие через ODBC и ADO.NET. Конвертор из DBF-формата. Конвертор модели данных (из ERwin в ЛИНТЕР).

    Достоинства

    • Российская разработка
    • Она поддерживает SQL:2003.
    • Облегчается конвертация при переходе с других СБУД
    • Рекомендована «Единым реестром российских программ».

    Недостатки

    • Падение эффективности в случае высокой динамики изменений.

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

    9. РЕД База Данных

    «РЕД База Данных» — российская СУБД, работает на всех основных платформах и ОС (Windows, Linux, BSD Unix, IBM AIX, HP-UX, Sun Solaris и т.д.). Система модульная. Имеет открытый исходный код.

    Возможность «горячего» резервного копирования и инкрементного резервного копирования. Сертифицирована ФСТЭК России. Соответствует отечественным требованиям по защите информации.
    Может использоваться при создании информационных систем до класса защищенности 1Г включительно и при создании информационных систем персональных данных до 1 класса включительно. Полное соответствие принципам атомарности, непротиворечивости, изоляции, долговечности (ACID).

    Имеются модули сопряжения практически для всех используемых сред разработки (драйверы ODBC, JDBC, C/C++, C#, Java, Delphi, PHP, Python, Perl, VB, и т.д.), результатов тестов этих модулей и гарантия стабильной работы.

    Возможность работы во «встроенном» в ПО (embedded) локальном режиме в виде библиотеки DLL без отдельной установки и настройки СУБД, в т.ч. поддержка встраивания в виртуальную машину Java.

    Достоинства

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

    Недостатки

    Идеально подходит для: отечественных организаций (включая оборонные), которые работают с конфиденциальными и персональными данными.

    Обсуждение

    Если сравнивать популярность современных СУБД с точки зрения их распространенности, то можно увидеть следующую картину по состоянию на 2013 год (рис. 1).

    Рис. 1. Распространенность современных СУБД по состоянию на 2013 г.

    C течением времени картина распространенности СУБД изменилась и в 2020 году приняла следующий вид (рис. 2).

    Рис. 2. Распространенность современных СУБД по состоянию на 2020 г.

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

    Таблица 1. Сравнительный анализ параметров СУБД

    Илон Маск рекомендует:  End - Ключевое слово Delphi
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL