txtSQL

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

txtSQL
20070714035655.png
Разработчики: Faraz Ali
Написана на: PHP
Операционная система: Кроссплатформенная
Тип ПО: База данных
Лицензия: GPL
Веб-сайт страница на SourceForge

TxtSQL - плоская объектно-ориентированная СУБД. Она поддерживает небольшой набор SQL-запросов и обеспечивает высокую скорость работы с данными в виде текстовых файлов. Распространяется свободно по лицензии GNU General Public License.

О базе данных

СУБД txtSQL написана на PHP. Для работы с БД используется утилита txtSQLAdmin. СУБД работает с текстовыми файлами с усиленной защитой. Взаимодействие с данными организуется при помощи упрощённого языка SQL. Данные организованы в таблицы, которые хранятся в текстовом виде. Данные в файлах хранятся в специальном формате, содержащем информацию об их типе и размере. При создании новой базы на диске появляется каталог с файлами, хранящими таблицы, также файл с логинами и паролями пользователей БД в хэшированном виде.

Использование txtSQL

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

Работа с txtSQL[1]

Структура txtSQL

Всё приложение txtSQL представляет из себя три php-файла: txtSQL.class.php, txtSQL.core.php, txtSQL.parser.php, а также каталог data, в котором хранятся все базы данных. В каталоге data обязательно должна находиться папка txtsql с файлом txtsql.MYI - в нём находится список пользователей и их паролей для работы с базами данных (данный файл поставляется вместе с приложением). Все остальные папки в каталоге data - папки баз данных: их названия совпадают с названиями баз, их содержимое - таблицы баз данных.

Внутри папок баз данных находятся файлы таблиц данных. Каждая таблица состоит из двух файлов с расширениями *.FRM и *.MYD (названия файлов совпадают с названиями таблиц). В *.FRM-файлах хранятся настройки столбцов, а в *.MYD-файлах - непосредственно строки с данными в специальном формате.

Инсталляция

Поскольку txtSQL является PHP-скриптом, как таковой инсталляции он не требует: всё, что необходимо - скачать архив и распаковать его в рабочий каталог. TxtSQL поставляется вместе с документацией и скриптами для создания и работы с тестовыми (демонстрационными) базами данных.

Для корректной работы необходимо убедиться, что в файле txtSQL.class.php указаны правильные пути к файлам txtSQL.core.php и txtSQL.parser.php.

Подключение к СУБД

Вся работа с базой данных идёт через взаимодействие с классом txtSQL, описанным в файле txtSQL.class.php. Для начала работы необходимо подключить этот файл и создать экземпляр класса:

require_once 'txtsql/txtSQL.class.php';
 $sql = new txtSQL('./data');

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

Далее необходимо выполнить подключение от имени определённого пользователя с указанием его логина и пароля. Для этого используется функция connect. По умолчанию в txtSQL имеется пользователь root без пароля.

 $sql->connect($username, $password);

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

 $sql->selectdb($dbname);

Создание БД

Для создания новой базы данных, необходимо дать ей новое уникальное имя с помощью команды createdb. В качестве параметров передаётся массив с единственным значением - именем создаваемой БД.

$sql->createdb(array('db' => 'testDatabase'));

Если БД с указанным именем уже существует, функция вернёт ошибку. В случае успешного создания, в каталоге data появится пустая новая папка с указанным именем.

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

Создание таблицы

Для создания новой таблицы используется функция createtable, которая принимает массив параметров: db - имя базы данных (можно не указывать, если ранее была использована функция selectdb), table - имя создаваемой таблицы, columns - массив столбцов с указанными параметрами. Пример:

$columns = array('id'    => array('type' => 'int', 'auto_increment' => 1, 'permanent' => 1 
                 'name'  => array('type' => 'string', 'max' => 50), 
                 'email' => array('type' => 'string', 'max' => 50) 
                 ); 
 $sql->createtable('db'      => 'testDb', 
                  'table'   => 'testTable', 
                  'columns' => $columns);

Манипуляции с данными

TxtSQL поддерживает аналоги стандартных команд SQL для работы с данными: select, insert, update, delete. Параметром всех этих команд является массив с опциями выборки. Примеры использования:

$sql->select(array( 'db'      => 'testDB', 
                   'table'   => 'testTable', 
                   'where'   => array('strtolower(somecolumn) = value'), 
                   'limit'   => array(10, 19), 
                   'orderby' => array('id', 'ASC'))); 
 $sql->insert(array('db' => 'testDB', 
                    'table' => 'testTable', 
                    'values' => array('id' => 2, 
                                      'name'  => 'John', 
                                      'lastname' => 'Doe', 
                                      'age'  => 22)));
 $sql->update(array('db' => 'testDB',
                    'where' => array('id <= 122'), 
                    'values' => array('id' => 2, 
                                      'name'  => 'Nick', 
                                      'lastname' => 'Jovi', 
                                      'age'  => 48) 
                   'limit' => array(5, 12)));
$sql->delete(array('db' => 'testDB', 
                    'table' => 'testTable', 
                    'where' => array('id <= 294'), 
                    'limit' => array(10, 19))); 

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

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

$sql->droptable(array('db'    => 'testDb', 
                            'table' => 'testTable'));

Удаление БД

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

$sql->dropdb(array('db' => 'testDatabase'));

После выполнения данной функции с диска будет удалён каталог, соответствовавший данной базе данных.

Отсоединение от СУБД

После завершения работы с txtSQL необходимо отключиться и освободить ресурсы. Для этого используется команда disconnect:

 $sql->disconnect();

Смена пароля пользователя root

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

 $sql->grant_permissions($action, $user, $pass [, $newpass]);
  • $action - определяет, какое действие необходимо совершить с конкретным пользователем. Возможны варианты: add (добавить), drop (удалить), edit (редактировать).
  • $user - имя пользователя
  • $pass - текущий пароль пользователя
  • $newpass - новый пароль пользователя (в случае, если необходимо его изменение)

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

$sql->grant_permissions('edit', 'root', '', 'rootpass');

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

  • Написана на PHP. Это позволяет использовать данную СУБД на ресурсах, не поддерживающих специальных механизмов для работы с базами данных, работающих только с PHP-скриптами.
  • Лёгкая. Дистрибутив txtSQL занимает всего 180 КБ.
  • Использует упрощённую версию языка SQL. За счёт использования сокращённого набора команд SQL обеспечивает более быструю и эффективную работу с данными.
  • Открытый исходный код.

Примечания

  1. Полный список доступных команд имеется в официальной документации

Контакты авторов материала

Roman Chistiakov, Bauman Moscow State Technical University, IU-8, E-mail: romchezz@gmail.com

Ссылки