mSQL

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 16:24, 21 января 2019.

mSQL
Msql.gif
Разработчики: Hughes Technologies
Выпущена: 1994
Постоянный выпуск: 2017.20.01 / 4.0
Написана на: С
Операционная система: Кросс-платфроменная
Платформа: x86-64
Локализация: Английский
Тип ПО: Реляционная СУБД
Лицензия: Коммерческая
Веб-сайт Официальный сайт MSQL

mSQL (она же MiniSQL) — легковесная клиент-серверная реляционная СУБД, выпускаемая компанией Hughes Technologies [Источник 1]. Впервые выпущенная в 1994 году, она заполнила вакуум образовавшийся между встроенными настольными СУБД типа Microsoft Access и такими коммерческими СУБД уровня предприятия как Oracle [Источник 2] и DB2. С 1994 по 1998 год её популярность росла и mSQL стала популярной среди открыто программного обеспечения разработчиков. При этом исходный код самой mSQL не является открытым.

С 1996 года развитие mSQL затормозилось, вследствие чего её место заняла MySQL. В 1999 году MySQL обогнала mSQL по популярности. Последняя версия mSQL — 3.11 — была выпущена 1 июня 2012 года. Примечательно, что между выпуском версий 3.8 и 3.9 прошло чуть менее 5 лет.

История

До 1994 года не удалось бы обзавестись РСУБД с поддержкой SQL, не потратив при этом изрядной суммы денег. На рынке тогда доминировали Oracle, Sybase[Источник 3] и Informix[Источник 4]. Эти системы управления базами данных были разработаны для обработки огромных объемов данных с очень сложными взаимосвязями. Они были мощными, обладали множеством возможностей, а также требовали больших вычислительных ресурсов и были дороги. Ресурсы, требуемые для этих СУБД, стоили десятки тысяч долларов.

У больших корпораций и крупных университетов не возникало проблем с тем, чтобы потратить за год несколько миллионов долларов на такие комплекты серверов и СУБД. Малым организациям и частным пользователям приходилось довольствоваться слабыми настольными приложениями. Несколько дешевых СУБД с архитектурой клиент/ сервер в то время существовало, но ни в одной из них не использовался SQL в качестве языка запросов. Наиболее примечательной из них была Postgres [Источник 5], имевшая общее происхождение с коммерческой базой данных Ingres. К несчастью, Postgres требовала примерно тех же ресурсов, что и ее коммерческие аналоги, не давая преимущества использования SQL в качестве языка запросов.

Давид Хьюз (David Hughes) (известный также как Bamby) писал диссертацию в Университете Бонд в Австралии, которая была посвящена разработке системы мониторинга и управления группой систем из одного или нескольких мест. Проект носил название Minerva Network Management System. Главным элементом Minerva была база данных для хранения данных обо всех компьютерах в сети. Будучи студентом университета и не имея доступа к серверам, на которых работали большие коммерческие базы данных, Хьюз решил, что Postgres - это очевидное решение, вполне отвечающее его потребностям.

Его коллеги предложили сделать SQL стандартным- языком запросов для Minerva. В конце концов, SQL был и остается самым общепринятым стандартом языка запросов. Основываясь на SQL, Minerva могла бы использоваться в любой точке света, где установлена поддерживающая SQL СУБД. Иными словами, SQL предоставлял возможности Minerva гораздо более широкому кругу пользователей, нежели PostQUEL, ограничивавший его пользователями Postgres. В конечном итоге оказалось, что сегодня даже Postgres поддерживает SQL.

Желание пользоваться стандартом SQL, с одной стороны, и отсутствие доступа к базе данных, поддерживающей SQL, - с другой, поставили Хьюза в трудное положение. Если использовать в Minerva язык запросов, основанный на SQL, то не удастся найти СУБД с соответствующим механизмом работы. Не имея возможности приобрести дорогую РСУБД, Хьюз нашел творческое решение проблемы: выход в том, чтобы создать программу, «на лету» транслирующую запросы SQL в запросы PostQUEL. Такая программа должна была перехватывать все посылаемые Minerva предложения SQL, преобразовывать их в PostQUEL и результат пересылать дальше в Postgres. Хьюз написал такую программу и назвал ее miniSQL, или mSQL.

Установка

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

Шаг 1 Распакуйте дистрибутив программного обеспечения с помощью gunzip и tar

gunzip msql-2.0-rel.tar.gz

tar –xvf msql-2.0-rel.tar

Или

gzcat msql-2.0-rel.tar.gz | tar –xvf – 

Шаг 2 создание целевого каталога для вашей аппаратной платформы

cd msql-2.0-rel

make target

Шаг 3 Настройте процесс компиляции

cd targets/YourTargetDirectory

./setup

Шаг 4 Проверьте значения по умолчанию INST_DIR и CC в файле Site.mm Шаг 5 скомпилировать программное обеспечение

make all

Шаг 6 Установите программное обеспечение

make install

Шаг 7 настройте программное обеспечение, отредактировав файл mSQL.conf в каталоге установки

Ниже представлено видео установки и использования mSQL. [Источник 6]

Язык mSQL Query

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

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

CREATE

Ключевое слово CREATE, поддерживаемое mSQL 2, можно использовать для создания таблиц, индексов и последовательностей[Источник 7]. Ниже показаны три допустимых конструкции использования CREATE:

CREATE TABLE table_name (

col_name col_type [ not null ]

[ , col_name col_type [ not null ] ]**

)

 

CREATE [ UNIQUE ] INDEX index_name ON table_name (

field_name

[ , field_name ] **

)

 

CREATE SEQUENCE ON table_name [ STEP step_val ] [ VALUE initial_val ]

Пример создания таблицы показан ниже:

CREATE TABLE emp_details (

first_name char(15) not null,

last_name char(15) not null,

comment text(50),

dept char(20),

emp_id int

)

DROP

Конструкция Drop используется для удаления данных из бд. Чаще всего она используется для удаления таблицы из базы данных, но также может использоваться для удаления нескольких других конструкций. В 2,0 он может использоваться для удаления определения индекса, последовательности или таблицы. Следует отметить, что удаление таблицы или индекса удаляет данные, связанные с этим объектом, а также определение. При удалении таблицы удаляются все индексы или последовательности, определенные для таблицы[Источник 8].

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


DROP TABLE table_name
DROP INDEX index_name FROM table_name
DROP SEQUENCE FROM table_name

INSERT

Конструкция INSERT используется для вставки или добавления данных в базу данных. При вставке данных вы можете указать поля, для которых вы предоставили данные (если вы не предоставляете данные для каждого поля в строке данных) или вы можете опустить имена полей, если вы предоставляете данные для каждого поля. Если не указать имена полей, они будут использоваться в том порядке, в котором они были определены-необходимо указать значение для каждого поля, если используется эта форма предложения INSERT. Если указать имена полей, то количество предоставленных значений данных должно совпадать с количеством указанных полей [Источник 9].


INSERT INTO table_name [ ( column [ , column ] ** ) ]

VALUES ( value [ , value ] ** )

Пример:

INSERT INTO emp_details ( first_name, last_name, dept, salary)

VALUES ( 'David', 'Hughes', 'Development',12345.00)

INSERT INTO emp_details

VALUES ('David', 'Hughes', 'Development',12345.00)

SELECT

Конструкция SELECT используется для извлечения данных из базы данных. Она позволяет указать конкретные поля, которые вы хотите получить, а также условие для идентификации записей или строк, представляющих интерес<[Источник 10]. Стандарт ANSI SQL определяет две функции, которые не поддерживаются mSQL. Реализация mSQL конструкции SELECT не поддерживает:

  • вложенность SELECT-ов
  • функции вида count(), avg()

Список поддерживаемых возможностей:

  • Реляционные соединения между несколькими таблицами
  • Псевдонимы таблиц
  • Выбор строки DISTINCT для возврата уникальных значений
  • Сортировать по предложениям по сортировке
  • Нормальное сопоставление регулярных выражений SQL
  • Расширенное сопоставление регулярных выражений, включая нечувствительный к регистру и SOUNDEX
  • Сравнение столбцов и столбцов в кконструкции WHERE
  • Сложные условия


Формальное определение синтаксиса для конструкции SELECT mSQL:

SELECT [table.]column [ , [table.]column ]**

FROM table [ = alias] [ , table [ = alias] ]**

[ WHERE [table.] column OPERATOR VALUE

[ AND | OR [table.]column OPERATOR VALUE]** ]

[ ORDER BY [table.]column [DESC] [, [table.]column [DESC] ]

DELETE

Конструкция SQL DELETE используется для удаления одной или нескольких записей из таблицы базы данных. Выбор строк, удаляемых из таблицы, основывается на том же операторе WHERE, который используется в предложении SELECT. В предложении SELECT условие WHERE используется для идентификации строк, извлекаемых из базы данных. В предложении DELETE условие WHERE определяет строки, которые должны быть удалены из базы данных. Как и во всех SQL-запросах, если условие не предоставлено, запрос применяется к каждой строке таблицы, и все содержимое таблицы будет удалено. Синтаксис для предложения Delete mSQL показан ниже[Источник 11].


DELETE FROM table_name

WHERE column OPERATOR value

[ AND | OR column OPERATOR value ]**


OPERATOR can be <, >, =, <=, =, <>, LIKE, RLIKE, CLIKE, or SLIKE

UPDATE

Конструкция UPDATE SQL используется для изменения данных, которые уже находятся в базе данных. Операция выполняется на одной или нескольких строках, как указано в конструкции WHERE. Если условие, предоставленное в конструкции WHERE, совпадает с несколькими строками в таблице базы данных, то каждая совпадающая строка будет обновляться таким же образом. Значение любого количества полей в совпадающих строках может быть обновлено. Синтаксис, поддерживаемый mSQL, показан ниже[Источник 12].


UPDATE table_name SET column=value [ , column=value ]**

WHERE column OPERATOR value

[ AND | OR column OPERATOR value ]**

OPERATOR can be <, >, =, <=, =, <>, LIKE, RLIKE, CLIKE or SLIKE

API для C

В дистрибутив входит библиотека API mSQL, libmsql. a. API позволяет любой программе C взаимодействовать с ядром СУБД. Доступ к функциям API осуществляется путем включения файла заголовка mSQL. h в программу и связывания с библиотекой mSQL (с помощью параметра-лмскл в качестве аргумента для компилятора C). Библиотека и заголовочный файл будут установлены по умолчанию в/usr/local/Huges/lib и/УСР/локал/хугхес/инклуде соответственно. Пример компиляции клиентского приложения (в данном случае ми_апп. c) показан ниже. Предполагается, что файл заголовка и библиотека API находятся в каталоге установки по умолчанию.

cc –c –I/usr/local/Hughes/include my_app.c

cc –o my_app my_app.c -L/usr/local/Hughes/lib -lmsql

msqlConnect()

int msqlConnect ( host )

char * host ;

msqlConnect() формирует взаимосвязь с ядром mSQL. Он принимает в качестве единственного аргумента имя или IP-адрес хоста, на котором работает сервер mSQL. Если в качестве аргумента узла задано значение NULL, выполняется подключение к серверу, работающему на локальном компьютере с помощью сокета домена UNIX/Dev/msqld. Если возникает ошибка, возвращается значение-1, а внешняя переменная msqlErrorMsg будет содержать соответствующее текстовое сообщение. Эта переменная определена в "mSQL. h ".

Если подключение выполняется к серверу, вызывающей функции возвращается целочисленный идентификатор. Это значение используется в качестве дескриптора для всех других вызовов mSQL API. Возвращаемое значение фактически является дескриптором сокета для соединения. Вызвав msqlConnect() несколько раз и назначив возвращаемые значения отдельным переменным, можно одновременно поддерживать соединения с несколькими серверами баз данных.

msqlQuery()

int msqlQuery ( sock , query )

int sock ;

char * query ;

Запрос в терминологии SQL не совпадает с запросом на английском языке. На английском языке слово запрос относится к вопросу в то время как в SQL запрос является допустимой командой SQL. Это распространенная ошибка, что люди считают, что функция MsqlQuery может использоваться только для отправки SELECT команды для ядра СУБД. В реальности, msqlQuery может быть использован для любой действительной команды mSQL, включая SELECT, DELETE, UPDATE и т.д.

Запросы отправляются в ядро через соединение, связанное с носками, в виде текстовых строк с помощью msqlQuery (). Как и в предыдущих версиях mSQL, возвращаемое значение-1 указывает на ошибку, и msqlMsg будет обновляться, чтобы содержать допустимое сообщение об ошибке. Если запрос создает выходные данные из обработчика, такие как инструкция SELECT, они буферизованы в API, ожидая, что приложение его извлекает. Если приложение отправляет другой запрос, прежде чем он извлекает данные с помощью msqlStoreResult(), буфер будет перезаписан любыми данными, созданными новым запросом.

msqlAdmin

Управление msql можно производить с помощью утилиты msqlAdmin[Источник 13].

msqladmin [-h host] [-f confFile] [-q] Command

Параметры

  • -b Укажите удаленное имя хоста или IP-адрес, на котором работает сервер mSQL. По умолчанию для подключения к серверу на локальном компьютере используется сокет домена UNIX, а не TCP/IP (что обеспечивает лучшую производительность).
  • -f Укажите загружаемый файл конфигурации, отличный от используемого по умолчанию. Действие по умолчанию — загрузить Стандартный конфигурационный файл, расположенный в ИINST_DIR/msql.conf (обычно /usr/local/Hughes/msql.conf).
  • -q Перевести msqlAdmin в тихий режим. Если этот флаг указан, msqlAdmin не будет предлагать пользователю подтверждать опасные действия (например, удаление базы данных).

Источники

  1. Hughes Technologies // Technologies. [2017-2017]. Дата обновления 26.12.2017. URL: https://www.hughes.com/technologies (дата обращения: 26.12.2017).
  2. Oracle // Oracle. [2017-2017]. Дата обновления 26.12.2017. URL: https://www.oracle.com (дата обращения: 26.12.2017).
  3. Sybase // Википедия. [2017-2017]. Дата обновления 26.12.2017. URL: https://ru.wikipedia.org/wiki/Sybase (дата обращения: 26.12.2017).
  4. Informix // Википедия. [2017-2017]. Дата обновления 26.12.2017. URL: https://ru.wikipedia.org/wiki/Informix (дата обращения: 26.12.2017).
  5. Postgres // Википедия. [2017-2017]. Дата обновления 26.12.2017. URL:https://ru.wikipedia.org/wiki/PostgreSQL (дата обращения: 26.12.2017).
  6. mSQL Installation and usage // YouTube. [2019-2019] Дата обновления: 20.01.2019. URL: https://www.youtube.com/watch?v=0nQlel2yACE (дата обращения: 21.01.2019)
  7. Реализация языка SQL в MySQL // sql.ru. [2018—2018]. Дата обновления: 05.03.2018. URL: http://www.sql.ru/docs/mysql/rus_ref/sql.shtml#Create (дата обращения: 05.12.2018)
  8. Реализация языка SQL в MySQL // sql.ru. [2018—2018]. Дата обновления: 05.03.2018. URL: http://www.sql.ru/docs/mysql/rus_ref/sql.shtml#Drop (дата обращения: 05.12.2018)
  9. Реализация языка SQL в MySQL // sql.ru. [2018—2018]. Дата обновления: 05.03.2018. URL: http://www.sql.ru/docs/mysql/rus_ref/sql.shtml#Insert (дата обращения: 05.12.2018)
  10. Реализация языка SQL в MySQL // sql.ru. [2018—2018]. Дата обновления: 05.03.2018. URL: http://www.sql.ru/docs/mysql/rus_ref/sql.shtml#Select (дата обращения: 05.12.2018)
  11. Реализация языка SQL в MySQL // sql.ru. [2018—2018]. Дата обновления: 05.03.2018. URL: http://www.sql.ru/docs/mysql/rus_ref/sql.shtml#Delete (дата обращения: 05.12.2018)
  12. Реализация языка SQL в MySQL // sql.ru. [2018—2018]. Дата обновления: 05.03.2018. URL: http://www.sql.ru/docs/mysql/rus_ref/sql.shtml#Update (дата обращения: 05.12.2018)
  13. mSQL - Manual // www-focus.fnal. [2017—2017]. Дата обновления: 05.03.2017. URL: https://www-focus.fnal.gov/dart/msqluser.html (дата обращения: 05.12.2018)

Ссылки

  • Официальный сайт mSQL // hughes.com: сайт. URL: http://www.hughes.com.au// (дата обращения 27.12.2017).