Языки программирования для баз данных

Языки программирования для баз данных

Эти языки отличаются от алгоритмических прежде всего своим функциональным назначением. При работе с базами данных(БД)наиболее часто выполняются следующие операции:

-создание, преобразование, удаление таблиц в БД;

-поиск, отбор, сортировка по запросам пользователя;

-добавление новых записей или модификация существующих;

-удаление записей и др.

Для обработки больших массивов информации и выборки записей по определенным признакам был создан структурированный язык запросов SQL (Structured Query Language). Он был впервые создан фирмой IBM в начале 70-х гг., назывался Structured English Query Language (SEQUEL) и предназначался для управления прототипом реляционной базы данных IBM ? System R. В дальнейшем SQL стал стандартом языка работы с реляционными базами данных, что зафиксировано американским национальным комитетом стандартов ANSI в 1986 г.

Практически в каждой СУБД имеется свой универсальный язык, ориентированный на ее особенности. Сегодня в мире ведущие производители СУБД: Microsoft (SQL Server), IBM (DB2), Oracle, Software AG (Adabas), Informix и Sybase. Их продукты предназначены для совместной параллельной работы тысяч пользователей в сети, а базы данных могут храниться в распределенном виде на нескольких серверах. В Oracle имеется встроенный язык PL/SQL, в Informix ? INFORMIX 4GL, в Adabas ? Natural и т.д.

Программирование для компьютерных сетей

Появление и активное развитие компьютерных сетей стало причиной создания многочисленных версий популярных языков программирования, адаптированных для использования в сети. Отличительные особенности, присущие сетевым языкам: они являются интерпретируемыми. Интерпретаторы для них распространяются бесплатно, а сами программы — в исходных текстах. Такие языки получили название скрипт-языков.

HTML(Hyper Text Markup Language, универсальный язык разметки гипертекста), используется для подготовки Web-документов для сети Internet. Язык представляет собой набор элементарных команд форматирования текста, добавления графических объектов (рисунков), задания шрифтов и цвета, организации ссылок и таблиц. В соответствии с командами HTML броузер отображает содержимое документа, команды языка не отображаются. В основе языка HTML лежит механизм гипертекстовых ссылок, обеспечивающий связь одного документа с другим. В HTML текст кодируется в АSCII и поэтому может быть создан и отредактирован в любом текстовом редакторе. Все Web-страницы написаны на HTML или используют его расширение.

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

Tcl/Tk. В конце 80-х гг. Джон Аустираут придумал скрипт-язык Tcl и библиотеку Tk. Tcl — это попытка создания идеального скрипт-языка. Он ориентирован на автоматизацию рутинных операций и состоит из мощных команд, выполняющих обработку нетипизированных объектов.

VRML. В 1994 г. был создан язык VRML для организации виртуальных трехмерных интерфейсов в Интернете. Он ориентирован на описание разнообразных трехмерных образов, цвето-теневого освещения в текстовом виде и позволяет создавать различные сценарии миров, путешествовать по ним, «облетать» с разных сторон, вращаться в любых направлениях, масштабировать, управлять освещенностью и многое другое.

При моделировании систем применяются формальные способы их описания — формальные нотации, с помощью которых можно представить объекты и взаимосвязи между ними в системе. Такие системы называют CASE-системами

Состав системы программирования:

  • Текстовый редактор (необходим для создания и редактирования исходного кода программы на языке программирования).
  • Транслятор (компилирующего или интерпретирующего типа).
  • Редактор связей (компоновщик).
  • Отладчик (необходим для упрощения процесса отладки программы).
  • Библиотекистандартных подпрограмм (функций, процедур).
  • Справочная система и др.

Статьи к прочтению:

Основы программирования. База данных SQL

Похожие статьи:

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

Читайте также:  Как узнать составляющие своего компьютера

Лабораторная работа 2 Тема: Структура документа Цель:научиться — разбивать документ на страницы, выделяя первую страницу; — нумеровать страницы документа…

Серия контента:

Этот контент является частью # из серии # статей: Язык программирования go

Этот контент является частью серии: Язык программирования go

Следите за выходом новых статей этой серии.

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

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

В языке go существует несколько библиотек для работы с MySQL, однако не все из них являются удобными и законченными решениями. В рамках данной статьи будет использоваться библиотека GoMySQL, написанная Филом Бейфилдом (Phil Bayfield). Развитие и поддержка большей части остальных библиотек, по всей видимости, были прекращены, и поэтому на данный момент пользоваться ими фактически невозможно, так как сам язык ушел вперед. Возможно, стоит обратить внимание на библиотеку MyMySQL, так как она периодически обновляется и поддерживается разработчиками.

Подготовка к работе

Для запуска примеров, рассматривающихся в этой статье, потребуется работоспособный сервер MySQL. Если в системе отсутствует установленная версия MySQL, то её можно установить, введя в консоль следующую команду.

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

После установки и настройки сервера MySQL потребуется установить библиотеку GoMySQL, которая распространяется по одной из свободных лицензий. Если в системе уже установлена исполняемая среда go, то для установки библиотеки достаточно будет выполнить следующую команду:

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

Второй вариант установки данной библиотеки потребует больше действий со стороны программиста. В листинге 1 показано, как с помощью утилиты make загрузить и собрать библиотеку GoMySQL.

Листинг 1. Установка библиотеки GoMySQL

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

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

Затем собранный пакет должен быть скопирован в каталог pkg, например,

Читайте также:  Какие пресс клещи лучше

/go/pkg/linux_386. После этого он станет доступен по имени, зависящему от расположения пакета в дереве каталогов.

Подключение к базе данных

В представленном ниже примере выполняется подключение к базе данных, загрузка данных из таблицы и вывод полученных данных на консоль. Такая программа достаточно подробно иллюстрирует принципы работы с базами данных в языке go. И хотя эти принципы являются одинаковыми практически во всех языках программирования: установить соединение, передать SQL-запрос, получить и обработать результаты запроса, — но в языке go существуют определенные отличия, которые необходимо учитывать.

Листинг 2. Пример go-приложения для работы с базой данных MySQL

Представленный в листинге 2 исходный код необходимо сохранить в файле db_usage.go и подготовить для него makefile, показанный в листинге 3.

Листинг 3. makefile для сборки файла db_usage.go

Для работы приведенного сценария необходимо, чтобы была установлена переменная окружения GOROOT, а в переменной PATH была ссылка на каталог $GOROOT/bin. Это можно сделать с помощью следующих команд:

В листинге 2 импортируются следующие пакеты:

  • fmt для вывода информации в консоль;
  • mysql для работы с базой данных;
  • os для управления работой программы.

Все действия выполняются в функции main. Сначала создается соединение с базой путем подключения к серверу MySQL, расположенному по адресу localhost на порту 3306. Этот порт используется MySQL по умолчанию, и его значение можно не указывать. Затем последовательно устанавливаются имя пользователя, его пароль и название базы данных. В данном примере используется пользователь root (который был создан при установке сервера), но это совсем не обязательно – пользователь может быть любой, главное чтобы у него было достаточно полномочий. Соединение с базой данных можно также создать и на основе сокета, в этом случае для подключения должна использоваться следующая инструкция:

Для отображения информации о возможной ошибке выполняется проверка значения переменной err (что оно не равно nil), и вывод этого значения на экран, как показано в листинге 3.

После установки соединения можно передавать в СУБД команды на языке SQL для выполнения запросов, как показано ниже:

В качестве примера выполняется SQL-запрос к существующей таблице, содержащей справочную информацию по MySQL. Результат выполнения SQL-запроса извлекается из базы данных с помощью функции UseResult. Эта функция возвращает все строки в таблице, удовлетворяющие условию. Наличие ошибок проверяется описанным выше способом, а подробную информацию об ошибке можно получить, если вызвать метод String() у объекта err.

Далее записи (строки из таблицы базы данных, хранящиеся в переменной result) последовательно обрабатываются в цикле. Цикл заканчивается после обработки всех строк по условию map_result == nil. Вызов функции FetchMap для объекта result вернет хэш-таблицу, которую можно будет использовать для получения значения поля строки по его названию (имени столбца в таблице базы данных).

Типы данных

Для этой же цели можно использовать функцию FetchRow. Если посмотреть в исходный код библиотеки, то можно увидеть, что функция FetchMap(), по сути, является «адаптером» для функции FetchRow. В листинге 4 приведено объявление типа данных Row, с которым работают обе эти функции.

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

Объект типа Result возвращается из дескриптора соединения db при вызове метода UseResult после выполнения запроса. Далее для получения объектов типа Field из объекта Result используется метод FetchField. Для работы со столбцами, хранящими значения в формате даты/времени, в библиотеке существует специальный тип данных, описанный в листинге 5.

Листинг 5. Тип данных для работы со временем/датой

Необходимо учитывать, что для вывода временных значений используется формат, применяемый по умолчанию в MySQL, как показано ниже:

Читайте также:  Как поменять язык на ноуте

Предварительная компиляция SQL-запросов

Из особенностей рассматриваемой библиотеки можно отметить поддержку заранее откомпилированных SQL-запросов (prepared statement).

Листинг 6. Структура для работы с откомпилированными SQL-запросами

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

Скомпилированные запросы – это средство для повышения производительности приложения, в котором часто выполняются одни и те же запросы, однако объяснение этого подхода выходит за рамки данной статьи. Методы, перечисленные выше, используются в том порядке, в котором они описаны. Жизненный цикл такого запроса включает следующие состояния: подготовка запроса, установка значений для пропущенных параметров и выполнение запроса. Для получения результатов в объекте Statement существует поле result, реализованное как указатель на структуру типа Result, по которому можно получить результаты выполнения данного запроса с текущими значениями входных параметров.

Заключение

Простая, но надежная реализация библиотеки (драйвера) для работы с реляционной базой данных вполне может быть написана одним человеком, как было успешно доказано Филом Бейфилдом и его библиотекой GoMySQL. Несмотря на свою простоту, эта библиотека предоставляет доступ ко всем возможностям языка SQL. В данной статье демонстрировалось использование функции Query для непосредственного выполнения SQL-запроса, однако можно использовать и предварительно откомпилированные SQL-запросы. Таким образом, программист, пишущий на языке go, ничем не ограничен в работе с реляционными базами данных по сравнению со своими коллегами, пишущими на более зрелых языках программирования, таких как Java или Си.

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

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

  • § создание/модификация свойств/удаление таблиц в базе данных;
  • § поиск, отбор, сортировка информации по запросам пользователей;
  • § добавление новых записей;
  • § модификация существующих записей;
  • § удаление существующих записей.

Первые базы данных появились очень давно, как только появилась потребность в обработке больших массивов информации и выборки групп записей по определенным признакам. Для этого был создан структурированный язык запросов SQL (Structured Query Language). Он основан на мощной математической теории и позволяет выполнять эффективную обработку баз данных, манипулируя не отдельными записями, а группами записей.

Для управления большими базами данных и их эффективной обработки разработаны СУБД (Системы Управления Базами Данных). Практически в каждой СУБД помимо поддержки языка SQL имеется также свой уникальный язык, ориентированный на особенности этой СУБД и не переносимый на другие системы. Сегодня в мире насчитывается три ведущих производителя СУБД: Microsoft(SQL Server), IВМ (DB2) и Огас1е. Их продукты нацелены на поддержку одновременной работы тысяч пользователей в сети, а базы данных могут храниться в распределенном виде на нескольких серверах. В каждой из этих СУБД реализован собственный диалект SQL, ориентированный на особенности конкретного сервера, поэтому SQL-программы, подготовленные для разных СУБД, друг с другом, как правило, несовместимы.

С появлением персональных компьютеров были созданы так называемые настольные СУБД. Родоначальником современных языков программирования баз данных для ПК принято считать СУБД dBase II, язык которой был интерпретируемым. Затем для него были созданы компиляторы, появились СУБД FoxPro и Clipper, поддерживающие диалекты этого языка. Сегодня самой распространенной настольной СУБД стала система Microsoft Access.

Ссылка на основную публикацию
Adblock detector