Прочитал, что на ReactOS успешно протестирована работа СУБД LINTER (ИСП РАН),
https://linter.ru/
Я решил ... а чем мы, линуксоиды, хуже? К тому же, есть версия для Linux x64.
Скачал архив, распаковалось под обычным пользователем при запуске sh-установщика,
указал каталог установки. Пару раз установщик спросил права root,
для копирования файлов в /usr/bin и /etc/init.d
$ ls -1 /usr/bin/*linter*
/usr/bin/chklinter
/usr/bin/linter
/usr/bin/start_linter.sh
/usr/bin/stop_linter.sh
$ ls -1 /etc/init.d/*linter*
/etc/init.d/linter.sh
В целом, установка выполняется гладко. Единственное, утомляет интерактивность,
надо много раз отвечать на вопросы. Но это дисциплинирует.
На этапе установки init-скриптов вывалилась бага:
... Повторить ввод пароля снова?(Y/N) [N]: Y
Пароль:
./tmp18286.sh: 171: [: -eq: unexpected operator
./tmp18286.sh: 171: [: -eq: unexpected operator
./tmp18286.sh: 171: [: -eq: unexpected operator
./tmp18286.sh: 171: [: -eq: unexpected operator
./tmp18286.sh: 171: [: -eq: unexpected operator
./tmp18286.sh: 171: [: -eq: unexpected operator
./tmp18286.sh: 171: [: -eq: unexpected operator
Системный стартовый скрипт успешно установлен.
Для старта/остановки ЛИНТЕР используйте команду
/etc/init.d/linter.sh start(stop).
В каждом каталоге установленной СУБД (у меня бинарники запускаются из /t/Linter/linter/)
есть readme, с пояснением о назначении практически каждого файла.
К сожалению, версия БАСТИОН - по запросу, поэтому тестирую Стандарт.
В файле linter/bin/readme написано, что интерактивный доступ к СУБД - через утилиту inl.
Выхлоп установщика с логином-паролем я конечно не прочитал,
и тупо ломлюсь в демонстрационную базу:
$ inl
Интерактивный SQL в.6.0 для СУБД Линтер в.6.0
Copyright (C) 1990-2017 Relex, Inc. All rights reserved.
Имя пользователя : test
Пароль пользователя:
INL : неверное имя пользователя.
Ага. Надо искать пароль к демо-базе. Он есть в корневом readme,
база demo, пользователь SYSTEM, пароль MANAGER.
Для получения подсказки надо запускать inl -h, так как ключик --help утилита не понимает.
Запускаем inl:
$ inl
Интерактивный SQL в.6.0 для СУБД Линтер в.6.0
Copyright (C) 1990-2017 Relex, Inc. All rights reserved.
Имя пользователя : SYSTEM
Пароль пользователя:
SQL> h
INL : неверная команда
SQL> ?
INL : неверная команда
SQL> help
Alter - изменить описание таблицы
Alter proc <filename> - изменение процедуры (текст берётся из файла)
Backup - архивация базы данных
Blob - операции с блобом, формат команды:
blob {insert|clear|append|get}
{rowid=<row_id> <user_name>.<table_name>.<column_name>|column=<col_num>}
[type=<blob_type>] {file=<file_name>|<text_blob_body>};
Browse - включить/выключить выдачу результата запроса в табличном режиме
Codepage - установить кодовою таблицу (866, 1251, koi8)
Commit - завершить текущую транзакцию
Correct - исправление индекса для указанной записи
Count - выводить/не выводить кол-во кортежей
Create - создание таблицы, индекса или другого объекта БД
Create proc <filename> - создание процедуры (текст берётся из файла)
Create trig <filename> - создание триггера (текст берётся из файла)
Dbinfo - получить информацию о базе
Delete - удаление строк из таблицы
Disfill - разрешить/запретить дополнение VAR типов до максимальной ширины
Dishead - разрешить/запретить вывод заголовка ответа
Display - показать информацию об объекте БД, формат команды:
display {variable|event} <object_name>
INL : нажмите любую клавишу (q для выхода) :
Optimistic - установить режим обработки транзакций optimistic
Outfil[e]: - определение файла вывода ответа
Page - включить/выключить выдачу ответа по страницам
Pessimistic - установить режим обработки транзакций pessimistic
Precount - разрешить/ запретить вавод количества строк ответа перед выводом результата
Press - перестроить все индексы и сжать номера записей
Priority:- установить приоритет запроса
Rebuild - восстановить таблицу
Result: - определение файла вывода ответа на следующий запрос
Revoke - отменить привилегии пользователя
Rollback - откатить текущую транзакцию
Select - выбор строк из таблицы
Sh - выполнить команду ОС
Show - показать описание таблицы
Sleep - приостановить выполнение
Time {format} - включить/выключить выдачу времени
Truncate - очистка таблицы и усечение файлов
Username - подключиться с другим именем пользователя
Unload: - определение разделителя
Update - замена строк
SQL> Dbinfo
Информация о базе данных 'DEMO Database'
СУБД Линтер версия : 6.0.17
Размер памяти ядра : 5000
Размер очереди каналов : 100
Размер очереди таблиц : 178
Размер очереди колонок : 1073
Размер очереди файлов : 366
Размер очереди пользователей : 100
Размер памяти сортировки : 500
Размеры кэшей транслятора SQL (0 - по умолчанию)
польз/таблицы/столбцы/проц/кодировки : 0/0/0/0/0
Количество процессов сортировки : 1
Предельная длина записи в таблице БД : 4096
Интервал сброса изменений : 0
Интервал проверки соединения : 30
Журнал транзакций : включен
Протокол обращений (LINTER.LOG) : выключен
Синхронный вывод : выключен
Разный порядок байт клиента и сервера: нет
Режим совместимости по стандартом SQL: нет
Обязательные префиксы для геоданных : нет
Режим 'только чтение' : нет
Квантование по времени : нет
Увеличенный буфер обмена : да
Кодировка базы данных : CP1251
Операционная система : Linux
Из замеченных деталей: нет кодировки базы UTF-8. Видимо, решили ускорить алгоритмы поиска.
В каталоге samples нет примера для использования python-биндинга,
но есть примеры для Tcl, PHP, C, Java, Perl.
Насчёт занимаемой памяти могу померять только так:
$ ps aux | awk 'BEGIN{RSS=0}/linter/{RSS=RSS+$6}END{print RSS}'
20872 Кбайт
linter$ du -sh
168M .
Debian 8 x64, i3wm
>>> Просмотр
(1366x768,
68 Kb)