Второй десяток лет компания РЕЛЭКС представляет на российском и зарубежном рынках различные варианты реляционной СУБД ЛИНТЕР® для решения широкого круга задач.
Ещё пару лет назад мы предлагали только инструментарий для разработки баз данных (БД) в виде собственно СУБД ЛИНТЕР, различных утилит, средств разработки (LAB, ЛАКУНА) и набора интерфейсов. Сейчас можно сказать, что мы выходим на другой уровень, т.к. теперь в списке наших продуктов есть весь спектр средств, необходимых для решения задач управления/обработки данных и их интеграции в гетерогенной среде:
- СУБД
- семейство СУБД ЛИНТЕР
- ЛИНТЕР-Микро
- интерфейсы и средства разработки
- средства синхронизации баз данных
- средства сбора и "очистки" информации
К сожалению, последний пункт выходит за рамки данной статьи.
Маленький мир больших СУБД. Звучит двусмысленно? Нет, диалектически.
Как известно, основу всякого развития составляет противоречие (борьба и взаимодействие) противоположных сторон и тенденций, находящихся, вместе с тем, во внутреннем единстве.
Таков наш мир. И уж так он устроен, что всё в нём возвращается на круги своя, но с каждым витком развития обретает новую сущность.
Этот крошечный мир…
В конце прошлого века на мировом рынке появился новый динамично развивающийся сектор – КПК и программное обеспечение для них. Вполне естественно, что производители программного обеспечения сразу устремились на открывшиеся просторы. В их числе, естественно, были и производители СУБД.
Перед разработчиками СУБД встала довольно сложная задача – найти идеальный баланс между производительностью системы, потребляемыми ресурсами и функциональностью.
В результате появились СУБД размером от 45 до 350 Kb. Естественно, что подобные системы не обладают тем же набором функций и быстродействием, что и их "старшие братья", но, тем не менее, это абсолютно полноправные члены сообщества, которые способны решать достаточно обширный класс задач.
Следует отдельно выделить ПО для создания приложений для КПК и синхронизации данных. В общем, можно уверенно сказать, что рынок КПК весьма перспективен для производителей программного обеспечения. Вполне естественно, что в этой, уже достаточно переполненной персонажами, пьесе появилась и компания РЕЛЭКС.
… больших СУБД
Переход количественных изменений в качественные - один из законов диалектики,
вскрывающий наиболее общий механизм развития. Достигнув определенной пороговой
величины (т.н. границы меры), количественные изменения объекта приводят к
перестройке его структуры, в результате чего образуется качественно новая система.
Появление ЛИНТЕР 6.х – прямое подтверждение этого закона. Семейство СУБД ЛИНТЕР 5.х развивалось с 1996 года. Наращивались функциональные возможности, росло окружение. Всё это "навешивалось" на старое ядро системы. В конце концов, была достигнута граница меры и произошли качественные изменения:
- переход к технологии микро-ядра
- поддержка многопроцессорных архитектур
- отказ от блокировок и переход к версионности
- новые механизмы межзапросного и внутризапросного распараллеливания
- поддержка национальных кодировок и UNICODE ядром системы
Что же предлагает РЕЛЭКС
Семейство реляционных СУБД ЛИНТЕР® охватывает большой спектр ЭВМ от микро- до макромира. Здесь условно можно выделить четыре "измерения", открывающих широкие горизонты для использования системы.
Судите сами: вот наше "четырёхмерное пространство"
Измерение первое – масштабируемость
Представители семейства СУБД ЛИНТЕР® могут эффективно использовать различные объемы памяти, начиная с минимального - в 40 Kb(!), для ЛИНТЕР-Микро, и заканчивая гигабайтами, на операционных системах от MS-DOS до OpenVMS.
Измерение второе – защита информации
От простейшей однопользовательской СУБД до реляционной СУБД с высочайшим уровнем зашиты
Измерение третье – построение систем реального времени
От универсальной системы до СУБД реального времени.
СУБД ЛИНТЕР® функционирует более чем на 20 платформах. В списке поддерживаемых ОС есть и системы реального времени: OS-9, OS-9000, VxWorks, OC 2000, QNX.
Измерение четвёртое – универсальность
Если сложить первые три измерения и добавить к этой сумме поддержку международных стандартов, полный набор интерфейсов, кросс-платформенные средства разработки, возможности горячего резервирования и т.д., то все эти функции образуют четвёртое измерение – универсальность.
ЛИНТЕР® можно использовать как основу поисковой машины (в этом помогут фразовые индексы), поисковика XML-документов, в задачах, требующих асинхронную репликацию, и т.д., и т.п.
Галактика в четырёхмерном пространстве
Мы познакомили вас с четырьмя "измерениями", обеспечивающими универсальность СУБД ЛИНТЕР®. Эти "измерения" охватывают не только ядро системы, вернее ядра различных модификаций. На самом деле это целая галактика продуктов в уже описанном четырёхмерном пространстве. Разнообразные интерфейсы и средства разработки, новые инструменты администрирования, миграции данных между версиями, средства синхронизации данных, средства горячего архивирования и тестирования и пр.
Постоянные участники форума наверняка заметили, что наша галактика непрерывно расширяется. В ней появляются не только новые звезды – отдельные версии ЛИНТЕР®, но и целые созвездия.
В качестве примера такого созвездия можно привести средство разработки приложений Linter Application Builder (LAB). Если продолжать оперировать астрономической терминологией, то можно сказать, что LAB скорее играет роль спутника основной системы.
В качестве примера ближайшего звездного скопления можно привести СУБД Линтер-ВС, разработанную нашей компанией по заказу Министерства обороны Российской Федерации.
Это специальная версия ЛИНТЕР®, адаптированная под требования МО и работающая под управлением ОС МСВС. Учитывая специфику работы заказчика, наряду с включением в СУБД специальных подсистем, из нее были исключены практически все интерфейсы, позволяющие работать с внешними программами сторонних производителей.
Тем не менее, для Линтер-ВС существует отдельный пакет интерфейсов и программ администрирования, позволяющий пользователю, при необходимости, обеспечить совместимость с другими программными пакетами. Размеры нашей галактики не ограничиваются приведенными выше системами, на самом деле она гораздо шире и разнообразнее. К сожалению, узкие рамки статьи не позволяют в полной мере осветить все разнообразие созвездий, окружающих центр этой галактики – СУБД ЛИНТЕР®.
Итак, обо всём по порядку… Измерение первое
Обратимся к объему занимаемой памяти и плотности функциональности версии ЛИНТЕР® для КПК. Как уже упоминалось выше, размер памяти, требуемой для нашей самой маленькой версии ЛИНТЕР-Микро – 40 Kb.
Теперь рассмотрим плотность её функциональности.
Основные типы данных
- массивы целых - INT();
- массивы вещественных - DOUBLE();
- символьные/байтовые строки – CHAR()/BYTE();
- строки переменной длины – VARCHAR()/VARBYTE()
- UNICODE строки – WCHAR().
Основные характеристики
- Число таблиц в БД – без ограничений;
- Число записей в таблице – до 2-х млрд.;
- Число полей в таблице – до 255;
- Длина записи в таблице – 64 Kb;
- Индексы – хеш.
В ЛИНТЕР®-Микро SQL-транслятор отсутствует вообще. Прикладная задача подготавливается заранее на инструментальной машине, где все запросы претранслируются. В дальнейшем приложение, запускаемое на мобильном устройстве, оперирует только претранслированными запросами.
В настоящее время существует только однопользовательская система, которая пока не предусматривает конкуренцию при обработке запросов. В системе отсутствует так же и понятие транзакции.
Из интерфейсов реализованы следующие:
- ESQL – Embedded SQL;
- API для синхронизации баз данных.
В итоге, после удаления всего "лишнего", мы получили небольшую, но вполне работоспособную СУБД. Где же можно использовать такую "экстремальную" систему?
Прежде всего, это приложения, работающие в условиях предельных ограничений по используемым ресурсам. Подобные приложения управляют работой многих современных устройств: сканеров, принтеров, телефонов и т.п.
Мы рассмотрели самый маленький вариант СУБД ЛИНТЕР-Микро, предназначенный для использования во встроенных приложениях. Он стоит немного особняком (ещё один спутник основной системы).
Теперь двинемся дальше по увеличению функциональности.
Как только мы добавляем функции, обеспечивающие дополнительную надёжность, так сразу же получаем огромный скачок требуемого оперативного пространства. В случае ЛИНТЕР®, получается увеличение необходимого объема памяти почти на порядок – 200-250 Kb.
Возможности многопользовательской работы увеличивают эти требования до 800-1000 Kb.
И, наконец, практически полнофункциональная версия (без фразового поиска) ядра СУБД ЛИНТЕР® занимает на ОС Embedded Linux (Sharp Zaurus) – 1400 Kb, а на WindowsCE – 2000 Kb.
Технология производства ЛИНТЕР® позволяет настраивать состав ядра СУБД в зависимости от необходимой функциональности. Эта возможность обеспечивает использование ЛИНТЕР® в системах с ограниченными ресурсами или с повышенными требованиями к производительности при сохранении общей архитектуры и возможностей системы.
Используя настройки ядра можно отказываться от некоторых модулей (подсистем) или наоборот включать их в систему. Так можно выбрать/удалить подсистемы, обеспечивающие защиту информации, полнотекстовый поиск, горячий Buckup, горячее тестирование и т.д., и т.п.
При желании можно работать без SQL-транслятора, без подсистемы сортировки, что скажется на занимаемой оперативной памяти, но, одновременно наложит некоторые ограничения на использование системы.
При этом какую бы конфигурацию (функциональность) ЛИНТЕР® Вы не выбрали, она будет работать в соответствии с нашим основным принципом – принципом предсказуемости количества используемых ресурсов. Он гласит: система будет выполнять балансировку нагрузки только в пределах предоставленных ей ресурсов. Это касается не только оперативной памяти, но так же и числа процессоров.
Так что если система стартовала на выделенных ей ресурсах, то она выполнит (с использованием только этих ресурсов) любой допустимый для этой СУБД запрос.
Мы рассмотрели возможности настройки функциональности ядра ЛИНТЕР®. Но кроме ядра в систему входит еще довольно большое количество программ, которые обеспечивают администрирование, разработку приложений и т.п.
Так для WindowsCE и Embedded Linux (Sharp Zaurus) портирована Run-time часть системы разработки приложений LAB, что позволяет исполнять приложения, разработанные на обычной машине и на КПК.
При этом Run-time LAB практически не пострадала в функциональности. Отсечены только подсистема отчётов, компоненты ODBC-, некоторые другие функции ограничены количественно.
Кстати, некоторые из сервисных задач и интерфейсов, следуя за ядром СУБД, так же приобрели свойства вариантности и приспособились к условиям ограниченности ресурсов. Кроме того, появились новые утилиты для миграции данных из баз, поддерживаемых различными версиями СУБД ЛИНТЕР®, для синхронизации данных в базах на карманном и основном компьютерах.
Синхронизация баз данных
Хотелось бы отдельное внимание уделить еще одному созвездию, появившемуся в нашей галактике не так давно – системе, обеспечивающей синхронизацию данных.
Это мощное универсальное средство, предназначенное не только для синхронизации данных карманного ПК и основного компьютера, но и для синхронизации баз данных вообще.
Рассматриваемый процесс представляет собой гетерогенное решение, т.е. может работать не только с различными вариантами ЛИНТЕР®. Конечными точками синхронизации могут быть любые СУБД. Главное, чтобы с обеих сторон поддерживался ODBC, SQL и триггеры.
Вполне естественно, что у процедуры синхронизации, реализованной нами, есть несколько особенностей.
Во-первых, она обеспечивает конфигурирование, администрирование и двустороннюю (bi-directional) синхронизацию данных между серверами, персональными, мобильными и встроенными базами данных. Фактически все они в этом случае рассматриваются как узлы распределенной базы данных.
Во-вторых, описываемая система может работать как в on-line режиме, так и являться off-line процедурой.
Таким образом, данные можно передавать не только через специальное API от одной СУБД к другой (on-line), но так же и через такие средства связи как e-mail, файловые носители и пр.
В-третьих, процедура синхронизации может быть транзитной. То есть синхронизация может захватывать последовательно несколько баз данных, - от БД A к БД B, от неё к БД C и т.д. Таких баз данных в цепочке транзита может быть сколь угодно много.
Измерение второе – защита от НСД
Ещё один принцип, поставленный во главу угла при проектировании и разработке СУБД ЛИНТЕР®, это вариантность подхода.
Проиллюстрируем этот принцип на примере ядра безопасности ЛИНТЕР®.
Администратору безопасности предоставляется возможность настройки широчайшего набора параметров защиты - от простой идентификации и аутентификации до создания групп, разграничения доступа на уровне отдельных полей и протоколирования работы.
Даже самый требовательный пользователь найдёт всё, что требуется для организации максимальной защиты данных.
В ЛИНТЕР® реализованы требования, которые предъявляются к программным продуктам по 2 классу защиты информации от несанкционированного доступа. Особенно интересен тот факт, что при помощи средств защиты СУБД ЛИНТЕР® можно не только сужать доступ к секретам, но и создавать у "непосвящённых" ложные знания, т.е. дезинформировать.
Пример с врачом и больным. Первый может видеть, что у больного рак лёгких, а второй, может получить дезинформацию о лёгкой форме пневмонии.
К сожалению, технологии защиты информации в нашей стране развиваются несколько однобоко. В основном развиваются технологии шифрования и защиты каналов передачи данных. Защите же данных от НСД уделяется недостаточно внимания. За несколько лет развития и внедрения ЛИНТЕР®, даже на государственном уровне, мы сталкивались только с несколькими случаями (буквально с единицами!) проектирования приложений, с учётом применения системы безопасности.
Измерение третье – реальное время
В отношении реального времени поддерживается тот же принцип вариантности. Но кроме него есть и ещё один принцип – принцип сохранения функциональности.
Все новшества, которые появляются в системе, должны учитывать и использовать уже имеющиеся особенности, стройно вписаться в функциональную среду предыдущих версий ЛИНТЕР®.
Поэтому всё, что добавлено в версии 6.х честно согласуется со свойствами реального времени (приоритеты выполнения запросов, асинхронное выполнение, механизм событий) СУБД ЛИНТЕР® более ранних версий. И, прежде всего, это касается перехода к версионности данных.
Во-первых, разрешение конфликтов между конкурирующими транзакциями.
Такие конфликты уникальности могут решаться так как укажет приложение, а именно:
- ожидать завершения конкурирующей транзакции;
- ожидать завершения конфликта в течение заданного тайм-аута;
- оповещать об ошибке уникальности немедленно.
Во-вторых, процесс очистки.
Это такой же, как и все прочие каналы, открываемые прикладной задачей для работы с СУБД. Поэтому ему можно назначать любой (разрешенный в ЛИНТЕР®) приоритет. Если процесс очистки "мешает" работе приложения, его можно остановить.
Измерение четвёртое – универсальность
Как уже говорилось выше, произошло расширение списка поддерживаемых платформ для базовой версии ядра СУБД – теперь ЛИНТЕР® работает на WindowsCE, Embeded Linux. В списке систем реального времени появились VxWorks, QNX6 и OC2000.
Кроме ядра СУБД на все эти платформы также перенесены и необходимые программные интерфейсы, утилиты администрирования и средства разработки.
Сохранив все особенности предыдущих версий ЛИНТЕР®, в 6.х мы добавили полнофункциональную работу с национальными кодировками (версия 6.0) и версионность данных (версия 6.1).
Многоверсионность данных позволила сделать чтение и модификацию данных независимыми процессами, т.к. модификация записи в таблице приводит к появлению новой версии этой записи. При этом, в общем случае, не требуется специального процесса "чистки" устаревших (или неактуальных) версий, так как в системе реализован механизм их переиспользования.
Реализация механизма версионности позволила, начиная с версии 6.1, улучшить показатели распараллеливания при многопользовательской работе. При этом поддерживаются стандартные режимы работы транзакций от Dirty Read до Serializable.
Как уже было сказано выше, кроме ядра СУБД на другие платформы перенесены также и графические утилиты ЛИНТЕР®.
В частности, в UNIX были портированы следующие утилиты:
- администрирования – lindesk;
- тестирования базы данных – testdbx;
- сохранения/восстановления баз данных – lhbx;
- миграции данных – migration;
- отладчик хранимых процедур.
Эти утилиты позволят в среде X Window управлять СУБД, выполнять архивирование, тестирование и т.п.
Пополнение в среде разработки
Во-первых, драйвер dbExpress для работы с Delphi и Kylix.
Во-вторых, выпущена версия OLE DB провайдера спецификации 2.5.
В-третьих, помимо создания новых, расширяются так же и уже существующие компоненты. Так, например, JDBC-драйвер расширен до 3-ей спецификации.
Как уже говорилось выше, перенесены в UNIX графические утилиты – администрирования, тестирования базы данных, сохранения/восстановления и миграции данных.
Перспективы развития
В 2003 году компания РЕЛЭКС планирует выпустить версию ЛИНТЕР® 6.2. Одной из основных отличительных особенностей этой версии будет реализация эффективной поддержки многопроцессорной архитектуры. Первые образцы этой системы на некоторых платформах будут функционировать пока по старым принципам.
В рамках версии 6.2 будут также реализованы улучшенные механизмы межзапросного и, что более важно, внутризапросного распараллеливания. Что позволит при наличии нескольких процессоров повысить производительность не только при выполнении одновременно нескольких запросов, но и при выполнении одного запроса.
При этом по-прежнему будет соблюдаться принцип предсказуемого количества используемых ресурсов, – система будет выполнять балансировку нагрузки в пределах предоставленных ей ресурсов. В случае если количество запросов превысит разрешенное количество потоков исполнения, ядро СУБД будет выполнять эти запросы с использованием механизмов внутреннего квантования исполнения запросов.
Кроме этого, в эту версию войдёт работа с планом исполнения запроса, ну и естественно in-kernel backup. При этом останется возможность горячего резервирования и восстановления БД внешней программой Linter Hot Backup.
Мы надеемся, что новая версия ЛИНТЕР® 6.2 будет представлена уже на Softool’2003.