ЛИНТЕР – это программный продукт, предназначенный для создания и поддержки информационных систем различного назначения на основе реляционной модели хранения данных.
В состав ЛИНТЕР входят:
Основные сферы применения ЛИНТЕР:
В таблице 1 приведены типы данных, поддерживаемые СУБД ЛИНТЕР .
Таблица 1 . Типы данных СУБД ЛИНТЕР
Тип данных |
Обозначение |
Длина, байт |
Строка символов фиксированной длины |
CHAR |
До 4000 |
Строка символов переменной длины |
VARCHAR |
До 4000 |
Строка байтов фиксированной длины |
BYTE |
До 4000 |
Строка байтов переменной длины |
VARBYTE |
До 4000 |
Строка UNICODE –символов фиксированной длины |
N CHAR |
До 2000 символов |
Строка UNICODE –символов переменной длины |
NVAR CHAR |
До 2000 символов |
Короткое целое |
SMALLINT |
2 |
Целое |
INTEGER |
4 |
Длинное целое |
BIGINT |
8 |
Вещественное число (плавающая точка) |
REAL |
4 |
Вещественное число (плавающая точка) |
DOUBLE |
8 |
Вещественное число (фиксированная точка) |
NUMERIC |
16 |
Логическое значение |
BOOLEAN |
1 |
Дата |
DATE |
16 |
BLOB-объект |
BLOB |
до 2 млрд. |
Внешний файл |
EXTFILE |
|
В таблице 2 приведены количественные параметры БД ЛИНТЕР.
Таблица2 . Параметры БД ЛИНТЕР
Характеристика |
Значение |
Максимальное число таблиц в БД |
65535 |
Максимальное число столбцов в таблице |
250 |
Максимальное число строк в таблице |
500 млн. |
Максимальная длина записи таблицы |
4 Кбайт* |
Максимальное количество ключей в таблице |
1024 |
Максимальная длина ключа |
1024 |
Максимальное число таблиц в запросе (на одном уровне) |
32 |
Максимальная длина имени обекта БД |
66 символов |
Максимальное длина SQL -оператора |
32Кбайт |
* - до 64К в версиях 6 и выше
Для установки СУБД необходимо:

Второй режим будет возможен только в том случае, если была установлена компонента Сервисы. Для возможности установки данной компоненты необходимо иметь права администратора системы, так как при этом создаются служебные сервисы.
Установка клиент-серверного варианта выполняется в два этапа:
Для установки сервера необходимо:
Для установки клиентской части необходимо выполнить следующее:
Установка клиентской части СУБД ЛИНТЕР завершена.
Ядро СУБД ЛИНТЕР – это программа, исполняющаяся в фоновом режиме и обменивающаяся с клиентскими задачами информацией через механизмы межпроцессного взаимодействия посредством CALL-интерфейса.
Ядром является программа linternt.exe. Она может выполняться как сервис и
как приложение ОС.
Клиентские приложения обращаются к БД через ядро системы только с помощью
внутреннего (CALL) интерфейса. Все остальные программные интерфейсы (odbc,
jdbc и т.д.) также используют этот интерфейс для взаимодействия с ядром СУБД.
Любое приложение, прежде чем обратиться с запросом к СУБД, должно открыть канал.
Канал СУБД ЛИНТЕР – это логическая линия обмена пользовательского приложения и ядра СУБД. Каждое приложение, пославшее запрос, принимает сообщения, адресованные именно ему.
Запросы, посланные по разным каналам, будут обрабатываться параллельно.
По одному каналу запросы могут обрабатываться только последовательно.
Архитектура СУБД ЛИНТЕР предполагает, что одно ядро может быть запущено для одной БД. Для этого при запуске указывается путь к конкретной БД.
Запуск ядра может выполняется или из программы linadm(по правой кнопке мыши и выборе пункта Startup) или запуском «RDBMS Linter kernel» из программной группы LINTER. Путь к БД в последнем случае можно будет или задать из меню программы.
Можно запустить ядро СУБД из командной строки подав команду linternt.exe /local
/base=..., где ... - путь к БД.
Выполняется программой shut или программой linadm или из приложения пользователя
путём подачи команды «SHUT» Call-интерфейса.
Программе shut в качестве параметров передаются имя пользователя БД и его
пароль, причем пользователь должен иметь привилегии для останова СУБД (привилегии
DBA).
Например ,
shut SYSTEM MANAGER
В программе linadm необходимо выбрать необходимую для останова БД, нажать правую кнопку мыши и выбрать пункт shutdown. Затем указать имя пользователя и пароль.
Установка лицензии выполняется инсталлятором. Пользователь должен внести регистрационную информацию, полученную с дистрибутивом в ответ на один из экранов установки. В случае, если СУБД будет использоваться для ознакомления с возможностями, необходимо отметить check-box «Demo».
Создание новой БД осуществляется программой linadm или программой gendb.
В программе linadm необходимо выбрать сервер и по правой кнопке – «создать БД». В появившемся многозакладочном диалоге необходимо отметить указать все необходимые параметры. Обязательным является только имя БД. Следует помнить, что для работы различных программных интерфейсов и подсистем ядра СУБД требуются словари. Их создание можно потребовать, выбрав соответствующие пункты на закладке «Словари».
В случае если БД создана без поддержки словарей, то они могут быть загружены посредством любой административной утилиты, позволяющей выполнять запросы. Файлы, содержащие словари расположены после установки в каталоге DICT.
Утилита inl обеспечивает выполнение SQL-запросов в интерактивном режиме (запросы и команды управления передаются inl в интерактивном диалоге) и в пакетном режиме (запросы выбираются из входного файла).
Интерактивный SQL может использоваться:
Утилита относится к группе административных инструментов, т. к. с ее помощью можно выполнять все SQL-операторы по созданию объектов БД и по управлению доступом к ним.
Пример запуска утилиты
inl –u SYSTEM/MANAGER
SQL>create table test (I int, c char(10), vc varchar(10));
Утилита ldba – утилита администрирования с псевдографическим
интерфейсом. С ее помощью можно создавать различные объекты БД и управлять
доступом к ним, не обладая знаниями языка баз данных SQL. При этом возможность
ввода SQL-запросов и их выполнения осталась.
По сравнению с inl в нее добавлены возможности просмотра
данных в виде скроллируемой таблицы и экспорта/импорта информации в/из текстового
формата.
Утилиты lindesk и lindeskx – утилиты администрирования с графическим
интерфейсом. С их помощью можно создавать различные объекты БД и управлять
доступом к ним, не обладая знаниями языка баз данных SQL . Они предоставляют
самые широкие возможности по администрированию БД.
Язык SQL ( Structured Query Language ) является языком обработки и манипулирования данными СУБД ЛИНТЕР. Он основан на стандарте ANSI / ISO SQL -92. При реализации языка в него были внесены некоторые элементы, не специфицированные в стандарте SQL -92. Это касается конструкций, относящихся к интернационализации имен объектов базы данных (БД) - таблиц, столбцов и пр., а также набора скалярных функций, введенных в СУБД ЛИНТЕР для совместимости с SQL СУБД Oracle .
В частности, в SQL СУБД ЛИНТЕР реализованы:
UNION;JOIN;Oracle, DB2,
Informix, Microsoft SQL Server и др.) в язык SQL введено множество
встроенных функций;Расширения стандарта включают:
FROM в операциях
UPDATE и DELETE, например:DELETE FROM таблица JOIN список _ таблиц WHERE ...UPDATE таблица JOIN список _ таблиц WHERE ...INTO в SELECT-операторе для совместимости
с некоторыми диалектами языка SQL, например:SELECT список_выражений INTO список_параметров FROM ...
СУБД обладает мощным встроенным механизмом хранимых процедур и триггеров, что позволяет существенно расширить возможности языка SQL, организуя процедурную обработку данных на сервере согласно алгоритму пользователя.
По функциональной мощности хранимые процедуры СУБД ЛИНТЕР в некоторых аспектах даже превышают стандарт ANSI / ISO SQL -92/ PSM (Persistent Stored Modules), а именно:
Процедурный язык включает все необходимые операции с переменными и значениями
каждого типа данных СУБД ЛИНТЕР, вызовы разнообразных стандартных функций (таких,
как преобразование типов, работа со строчными данными и т.д.), операцию присваивания
(тот факт, что присваивание является операцией, а не отдельным оператором,
позволяет строить, например, такие конструкции: a := b := c := 0;).
Все операции со всеми типами данных реализуют трехзначную логику, то есть поддерживается значение NULL для любого типа данных, которое означает состояние «значение не определено».
Набор операторов позволяет закодировать алгоритмы любой сложности.
Для обработки результатов SELECT-запросов в процедурах используются курсоры
(CURSOR), тип которых объявляется в соответствии со структурой ответа. Цикл
работы с курсором может включать его открытие оператором OPEN (как результат
запроса или выполнения другой процедуры), выборку данных оператором FETCH (в
любом направлении) и закрытие (CLOSE) или, если процедура возвращает курсор,
возврат (RETURN).
Процедуры могут работать со столбцами типа BLOB. Для этого используются стандартные функции чтения/записи в BLOB, которые ассоциируются с текущей строкой курсора.
Понятие «курсор» используется исключительно для выборки данных. Для выполнения
любых DML и DDL запросов (запросов отличных от SELECT-запроса) используется
оператор EXECUTE.
Все операции процедур по модификации данных входят в пользовательскую транзакцию.
Завершением транзакции управляет пользователь, однако, процедура также может
зафиксировать или откатить изменения, сделанные в ее теле (и теле ее дочерних
процедур) операторами COMMIT и ROLLBACK.
Для упрощения обработки ошибок в языке хранимых процедур предусмотрен механизм работы с исключительными ситуациями, в качестве которых могут рассматриваться ошибки выполнения SQL - запросов, ошибки времени исполнения (вызов несуществующей процедуры, деление на ноль и т.д.) или пользовательские исключения.
В момент возникновения исключения управление сразу автоматически передается
на соответствующую ветку блока обработки исключений (EXCEPTIONS), что избавляет
от необходимости «засорения» кода процедуры многочисленными условными операторами,
проверяющими результат завершения каждого оператора. Процедура может обработать
исключение либо завершиться и передать исключение на верхний уровень (оператор
RESIGNAL).
Процедуры могут использоваться как хранимые функции, расширяющие язык SQL.
Для загрузки текста хранимой процедуры (триггера) используются3:
Утилиты spman и lindeskx являются полноценными средами для разработки и отладки
хранимых процедур и триггеров.
Они обеспечивают:
СУБД ЛИНТЕР имеет ряд свойств, позволяющих отнести ее (с некоторыми допущениями) к системам реального времени:
Понятие «полнотекстовый» (или фразовый) поиск подразумевает поиск по полному тексту или по всем текстовым полям документа (БД). Любой текстовый документ, как правило, имеет внутреннюю структуру - деление на параграфы, отступ для заголовка, для подписи, таблицы. Текстовые редакторы позволяют делать эту структуру достаточно сложной - выделять текст шрифтами и вариантами их начертания, делать списки, выравнивание и т.д. и т.п. Кроме того, различные редакторы имеют разные форматы хранения данных (.doc, .html, .rtf, .txt и др.). Некоторые документы (например, в формате .html), помимо средств визуального оформления информации, имеет разметку внутренней структуры - заголовок, тело документа, ключевые слова. Поэтому в задачу полнотекстового поиска входит понимание внутренней структуры и «расшифровка» разных форматов документов с помощью специальных средств - конверторов или фильтров.
СУБД ЛИНТЕР со средствами фразового поиска рекомендуется использовать в проектах, где основными определяющими факторами являются скорость поиска и извлечения текста по фразе в больших хранилищах информации (например, WWW-сервер). Средства фразового поиска дают возможность упростить схему хранения данных в приложении и избежать создания некоторых дополнительных таблиц.
Система фразового поиска обеспечивает:
Утилиты testdb и testdbx производят проверку физической целостности структуры БД. Эта проверка может потребоваться, например, после отключения питания оборудования во время выполнения длинной транзакции.
Даже если СУБД не производила никаких действий, все равно рекомендуется производить проверку БД после каждого некорректного завершения работы ядра.
Рекомендуется следующая последовательность действий:
Для сохранения структуры и данных в текстовом формате используется программа dbstore . Причем могут сохраняться не только собственно данные, но и объекты БД (таблицы, пользователи, представления, синонимы и др.). Вы можете указать в командной строке, какой объект требует сохранения, и он будет сохранен в виде sql–файла, который впоследствии можно передать утилите inl для создания этого объекта заново. Данные таблиц сохраняются отдельно в формате lod–файлов для последующей загрузки их в БД посредством утилиты loarel .
Утилита может сохранять в виде набора файлов всю БД – включая ее таблицы, триггеры, последовательности, пользователей и т.п. При этом будут созданы shell–программы для последовательного восстановления сохраненных данных в другую БД.
Утилита migration позволяет сделать те же самые действия, но имеет графический интерфейс. Она совмещает в себе функциональные возможности dbstore и loarel .
Утилита loarel может быть использована для загрузки данных, сохраненных в lod–файлах в таблицы БД. Входной файл может быть результатом экспорта данных различных программ (например, MS Access).
Утилита dbf2lin выполняет прямое преобразование данных из формата dbf в ЛИНТЕР .
Утилита «горячего» архивирования lhb позволяет архивировать БД целиком или отдельные ее объекты, не останавливая работу СУБД. Утилита позволяет также выполнять инкрементное архивирование и архивирование по сценарию, что обеспечивает большую гибкость при работе программы.
Утилита lhbx выполняет точно такие же действия, но имеет графический интерфейс.
Сетевые утилиты позволяют работать с БД удаленно с других машин или, соответственно, с серверами на других машинах. Для передачи данных используется протоколы TCPIP, SPX, NetBios.
В состав сетевых утилит входит сетевой сервер dbs_wnt и сетевой клиент dbc_wnt . Сетевой сервер представляет собой программу, которая, будучи запущена на одной машине с ядром СУБД, обеспечивает доступ к указанному ядру СУБД (и, соответственно, к БД этого ядра) через сеть.
Сетевой клиент представляет собой редиректор, который переадресует запросы от клиентских задач в сеть.
Для организации работы через сеть необходимо запустить один процесс dbs_wnt на машине, где работает ядро СУБД. На клиентских машинах необходимо запускать процессы сетевых клиентов dbc_wnt . Запуск сервера осуществляется обычно программой linadm посредством указания при запуске БД check-boxа - start network listener. Запуск клиентского драйвера осуществляется из linadm нажатием на иконку Network agent.
Для конфигурации dbc_ent необходимо настроить файл конфигурации nodetab . Он может быть отредактирован в процессе установки или после из утилиты linadm путём выбора пункта «список баз»
Это интерфейс самого нижнего уровня для С /C++. В основе всех остальных интерфейсов лежит именно Call-интерфейс. Он имеет самый маленький размер из всех описанных ниже интерфейсов. Он самый быстрый. Но он требует кропотливой работы программиста для заполнения всех необходимых данных. Также разбор ответов программист должен выполнять самостоятельно.
Call-интерфейс можно использовать и из других языков программирования, но для этого придется вызывать его функции в стиле языка C.
В дистрибутиве этот интерфейс поставляется в исходных кодах и в виде уже откомпилированной библиотеки. Это файлы inter.h , intlib.c из каталога intlib. В пользовательских программах необходимо использовать inter.h и inter325.lib для соответствующего компилятора.
Примеры работы с указанным интерфейсом расположены в каталогах samples/c и samples/call.
Для работы с данными типа DECIMALS и DATE используются специальные библиотеки decimals и tick . Они объединены в библиотеку dectic 32. lib . Заголовочные файлы находятся в каталоге intlib.
Аналогично CALL–интерфейсу интерфейс LinAPI предназначен для использования его в программах на языках программирования C (C++). В отличие от CALL–интерфейса каждое действие с БД или ответами выполняется отдельной функцией. Разделены понятия соединения и курсора. Введено понятие statement (оператор) как некой внутренней структуры, позволяющей выполнять претранслированные запросы и хранящей в себе информацию о претранслированном запросе.
Примеры программ с использованием LinAPI интерфейса можно найти в каталоге samples/linapi.
Сама библиотека находится в каталоге intlib. Это файлы linapi.h (заголовочный) и lapi325.lib (для соответствующего компилятора).
Встроенный SQL предназначен для объединения возможностей языка программирования высокого уровня С/C++ с возможностями языка баз данных SQL СУБД ЛИНТЕР. Он позволяет выполнять любой Sql-оператор из прикладной программы. Для этого Sql-операторы непосредственно встраиваются в текст программы на C/C++ в соответствии с синтаксическими правилами встроенного языка. В результате получение исполняемого кода программы распадается на следующие этапы:
Данный интерфейс реализует спецификацию 3.51 интерфейса Microsoft ODBC.
В составе ЛИНТЕР поставляется 2 ODBC драйвера – lindbbc.dll и linodbcw.dll –
соответственно, ANSI- и UNICODE-драйверы. По умолчанию они устанавливаются
в системе под именами Linter 5.9 и Linter 5.9 Unicode (для версии 5.9) соответственно.
Если при попытке соединения с сервером вы получили ошибку 25024 или 2202 при обращении к функциям каталога, то БД не была подготовлена для использования ODBC интерфейса (отсутствует соответствующий словарь). Для возможности работы вы должны выполнить запросы из файла dict/catalog.sql.
Для этого лучше всего воспользоваться утилитой inl :
inl –u SYSTEM/MANAGER -f dict/catalog.sql
В дистрибутиве ЛИНТЕР поставляется 3 драйвера JDBC – JDBC спецификаций 1,2 и 3. Кроме того, поставляются классы JNDI для JDBC 2 и 3.
Для работы с ЛИНТЕР из Java-программ необходимо, во-первых, запустить jdbc-драйвер для БД, с которой нужно работать из JAVA–программы.
Для этого необходимо запустить ядро СУБД и программу linapid . По умолчанию эта программа обслуживает запросы по порту 1070. Данная программа запускается программой linadm (нажатием на иконку JDBC-listener)
Для того чтобы включить возможность доступа к ЛИНТЕР из Java– программы, необходимо включить в переменную среды CLASSPATH клиентскую часть JDBC–драйвера LinJdbc.jar (для JDBC 1), расположенную в каталоге classes дистрибутива ЛИНТЕР. Например :
CLASSPATH=%CLASSPATH%;c:/linter/classes/LinJDBC.jar
Примеры использования jdbc расположены в каталоге linter/samples/jdbc.
Для использования драйвера доступа к ЛИНТЕР в JAVA-программе необходимо задать
драйвер "jdbc.LinJdbc.LinterDriver", а для подключения к серверу
необходимо указывать строку соединения "jdbc:Linter:localhost:1070:local",
где localhost - IP адрес машины, где запущен сервер linapid, 1070 – порт.
Для использования драйверов JDBC 2 и 3 необходимо использовать linjdbc-1.2.jar
и linjdbc-1.4.jar
Имя драйвера для них - com.relx.jdbc.LinterDriver, формат строки соединения
– “jdbc:linter:linapid:<host>:<port>:<database>” – назначения
полей совпадают с полями для драйвера спецификации 1.
В состав СУБД ЛИНТЕР входят два интерфейса для Perl. Один из них оригинальный, второй является драйвером для стандартного средства доступа к БД DBI.
Обычно модуль интерфейса от Perl к СУБД ЛИНТЕР поставляется в дистрибутиве
в готовом к использованию, откомпилированном виде. Это два файла LinPerl.dll и LinPerl.pm в
каталоге intlib/perl.
Использовать этот модуль возможно двумя способами:
bin. Для этого необходимо
установить соответствующее значение переменной окружения PERL5LIB, например:PERL5LIB=%PERL5LIB%;c:/linter/intlib/perl
LinPerl.dll и LinPerl.pm в один из каталогов
поиска библиотек perl.Перед использованием любых функций обращения к Linter в свою Perl-программу вы должны добавить строку:
use LinPerl;
Получить информацию о синтаксисе и наименованиях функций можно с помощью команды
perldoc LinPerl
В составе дистрибутива в каталоге samples/perl размещены примеры использования
интерфейса ЛИНТЕР к Perl.
Если у Вас есть необходимость пересобрать интерфейс ЛИНТЕР к Perl, то необходимо
запустить программу–конфигуратор configure. Программа определит наличие Perl
и необходимых заголовочных файлов в системе. После этого надо перейти в каталог
linter/perl и подать команду make.
Интерфейс DBI поставляется как в виде готового модуля, так
и с возможностью пересборки. Он представляет собой файлы Linter.dll в
каталоге intlib/perl и Linter.pm в каталоге intlib/perl/DBD.
В каталоге samples/dbi содержатся примеры использования.
Конфигурирование переменной PERL5LIB выполняется аналогично с первым интерфейсом, только при копировании модулей необходимо учитывать, что Linter.pm должен копироваться в каталог драйверов DBI.
Прежде всего, необходимо отметить, что в настоящее время существует как минимум три несовместимых по внутренним интерфейсам версии PHP. Это старая версия 3, и более поздние 4 и 5 версии. Мало того, в четвертой и пятой версии PHP любое расширение (extension) языка, а именно им является интерфейс ЛИНТЕР, должно быть пересобрано под конкретную версию сборки языка.
Модуль можно будет или встроить в расширения PHP, которые будут загружаться автоматически при запуске PHP, или пользоваться напрямую загрузкой расширения функцией dl.
На машине должен быть установлен PHP или в виде исполняемого файла или в виде модулей web-сервера Apache или IIS.
Скомпилированные интерфейсы находятся в каталоге intlib/php дистрибутива ЛИНТЕР и размещены по отдельным каталогам для различных версий.
В каталоге linter/samples/php содержатся примеры использования интерфейса
PHP к ЛИНТЕР.
DBExpress интерфейс реализован в виде разделяемой библиотеки lindbex.dll, расположенной в каталоге bin дистрибутива. Он предназначен для использования стандартных классов в среде Delphi и С++.
Для корректного функционирования драйвера, БД должна содержать ODBC-каталог
(см. описание catalog.sql в разделе ODBC-драйвер).
Для использования драйвера в программе достаточно создать стандартный объект
TSQLConnection и прописать у него в свойствах LibraryName и VendorLib полный
путь к драйверу lindbex.dll.
Интерфейс представляет собой исполняемый модуль интерпретатора Tcl со встроенным
интерфейсом доступа к ЛИНТЕР под названием linsh (для Tk он называется linwish )
расположенный в каталоге bin. Они (и компоненты для их сборки) поставляются
отдельно по запросу пользователя.
Драйвер Python представляет собой динамически подгружаемую библиотеку, написанную полностью на языке С. Для загрузки драйвера в программу Python достаточно выполнить:
import LinPyКомпоненты поставляются отдельно по запросу пользователя.
[1] Если указанный Вами каталог не существует, то он будет создан.
Для установки в чужой каталог необходимо иметь соответствующие привилегии.
[2] Локальная сеть должна быть настроена для работы в одном из протоколов: TCP/IP, IPX/SPX или Netbios.
[3] Для загрузки текстов процедур и триггеров в БД может использоваться
утилита inl. Т.к. символ ';' является признаком окончания запроса в утилите
inl с одной стороны и разделителем операторов в процедурном языке (на котором
пишутся тексты хранимых процедур и триггеров) с другой, то для загрузки текстов
хранимых процедур (триггеров) применяется экранирование символа ';', т.е.,
если это разделитель операторов в процедурном языке, то после него ставится
знак комментария "//".