SQL(Structured Query Language, язык структурированных запросов) - это язык программирования, который применяется для манипулирования данными в реляционных базах данных.
Язык SQL разделен на несколько отдельных частей: операторы схемы SQL, которые используются для определения структур данных, хранящихся в базе данных, операторы данных SQL, которые используются для управления структурами данных, ранее определенными с помощью операторов схемы SQL и операторы транзакций SQL, которые используются для начала, завершения и отката транзакций . Например, чтобы создать новую таблицу в базе данных, необходимо использовать оператор схемы SQL create table, тогда как процесс заполнения новой таблицы данными потребует вставки оператора данных SQL.
Все элементы базы данных, созданные с помощью операторов схемы SQL, хранятся в специальном наборе таблиц, называемом словарем данных. Так же, как таблицы, которые необходимо создать самому, таблицы словаря данных можно запрашивать с помощью оператора select, что позволяет обнаруживать текущие структуры данных, развернутые в базе данных во время выполнения.
В языках программирования мы привыкли определять переменные и структуры данных, используя условную логику, (например, if then-else) и конструкции цикла (например, do while), а также разбивая свой код на небольшие, повторно используемые части (т.е. объекты, функции, процедуры). Код передается компилятору, и исполняемый файл, который в результате выполняет в точности как был запрограммирован.
Работая с SQL придется отказаться от части контроля над кодом, потому что операторы SQL определяют необходимые входы и выходы, но способ выполнения оператора оставлен на усмотрение компонента механизма базы данных, известного как оптимизатор. Задача оптимизатора - просмотреть операторы SQL и, принимая во внимание, как настроены таблицы и какие индексы доступны, выбрать наиболее эффективный путь исполнения. Большинство механизмов баз данных позволяют влиять на решения оптимизатора, задавая подсказки оптимизатора, например, предлагая использовать определенный индекс.
Рассмотрим SQL на примере СУБД MySQL
MySQL — это реляционная(набор данных который построен на связях между таблицами) СУБД, которая базируется на языке структурированных запросов.
Сервер базы данных MySQL предоставляет удобную платформу для организации данных приложения, упрощая определение данных, принадлежащих какому приложению, и упрощая доступ приложения к данным, при этом обеспечивая безопасность, чтобы только нужные пользователи могли получить доступ к нужным данным.
Изначально MySQL был создан для включения данных индексации для ускорения запросов данных на сервере базы данных mSQL с помощью метода индексированного последовательного доступа (ISAM). Это было сделано за счет включения специального алгоритма управления данными, называемого механизмом хранения MyISAM. Это оказалось огромным успехом.
В MySQL ядро базы данных работает как служба, которая всегда выполняется на сервере в фоновом режиме, также ядро всегда находятся на одном компьютере. Запросы и отчеты выполняются из отдельных приложений, но все они отправляют запросы в общий механизм базы данных. Пользователи запускают отдельные прикладные программы, которые взаимодействуют с ядром базы данных во время его работы. Каждое приложение может отправлять запросы к ядру базы данных и обрабатывать возвращенные результаты. Когда приложение останавливается, ядро базы данных MySQL продолжает работать, ожидая команд от других приложений.
Ядро базы данных MySQL принимает запросы данных от нескольких пользователей в сети. Весь доступ к базе данных осуществляется в локальной системе, на которой запущен сервер MySQL, поэтому взаимодействие данных с файлами базы данных остается в локальной системе. Ядро базы данных только отправляет результаты запроса или отчета по сети в приложения. Одна только эта функция делает использование MySQL лучшим выбором для работы с многопользовательскими базами данных.
MySQL требует наличия одного или нескольких файлов базы данных для хранения данных. При работаете, к примеру, с Access, можно было видеть файлы базы данных .mdb. Эти файлы содержат данные, определенные в таблицах, созданных в базе данных Access. Каждая база данных имеет свой собственный MDB-файл.
Что необходимо для правильного функционирования СУБД MySQL?
Для работы MySQL необходим веб-сервер и IP-адрес (локальный), все это можно получить, установив WampServer.
WampServer - это стек решений для операционной системы Microsoft Windows, состоящий из веб-сервера Apache, OpenSSL для поддержки SSL, базы данных MySQL и языка программирования PHP.
MySQL и PHPMyAdmin входят в состав Wamp-Server.
Веб-сервер - передает запросы веб-приложению и возвращает им ответы данного приложения. Веб-сервер действует как файловый сервер - он принимает запросы на файлы PHP и HTML от клиентских браузеров, а затем извлекает эти файлы и отправляет их обратно в клиентский браузер. Веб-сервер использует стандарт HTTP, чтобы разрешать анонимные запросы на доступ к файлам на сервере и отвечать на эти запросы.
Сервер может являться отдельным компьютером или даже маршрутизатором, в который встроен интерфейс конфигурации, но веб-сайты обычно запускаются на пуле компьютеров, которые специально предназначены для обработки большого количества запросов документов, мультимедийных файлов. и интерактивные скрипты.
Клиентом обычно является веб-браузер, он передает веб-серверу запросы на получение HTML-страниц, изображения и предоставляемых URL-адресов. Запрошенные данные отправляются на веб-сервер в виде ответа. Данный обмен информацией происходит по протоколу HTTP.
Инструменты SQL-on-Hadoop
SQL-on-Hadoop - это новая ветвь развития SQL, которая позволяет организациям с архитектурой больших данных, построенной на системах Hadoop, использовать преимущества SQL вместо того, чтобы использовать более сложные и менее знакомые языки, например, среду программирования MapReduce(). Также, механизм обработки Apache Spark , который часто используется вместе с Hadoop, включает модуль Spark SQL, который аналогичным образом поддерживает программирование на основе SQL.
Поддерживая знакомые запросы SQL, SQL-on-Hadoop позволяет более широкой группе корпоративных разработчиков и бизнес-аналитиков работать с Hadoop на массовых вычислительных кластерах . Поскольку SQL изначально был разработан для реляционных баз данных, его необходимо модифицировать для модели Hadoop 1, в которой используется распределенная файловая система Hadoop и Map-Reduce, или модель Hadoop 2 , которая может работать без HDFS или Map-Reduce. Различные средства выполнения SQL в средах Hadoop можно разделить на (1) коннекторы, которые переводят SQL в формат MapReduce, (2) системы, которые распределяют работу SQL между кластерами MapReduce-HDFS или необработанными кластерами HDFS, в зависимости от рабочей нагрузки . Одна из первых попыток объединить SQL и Hadoop привела к созданию хранилища данных Hive , в котором использовалось программное обеспечение HiveQL для преобразования SQL-подобных запросов в задания MapReduce. Другие инструменты, которые помогают поддерживать SQL-on-Hadoop, включают BigSQL, Drill, Hadapt, Hawq, H-SQL, Impala, JethroData, Polybase, Presto, Shark (Hive on Spark), Spark.