BtrieveBtrieve — система управления базами данных для организации навигационных[англ.], а с версии Pervasive.SQL — и реляционных баз данных, разрабатываемая компанией Pervasive Software[англ.]. Основана на методе организации данных ISAM. Существовало несколько версий этого продукта для DOS, Linux, Novell NetWare, старых версий Microsoft Windows (Windows 98, Windows NT, Windows 2000, Windows XP, Windows Server 2003). Первоначально это был менеджер записей, выпущенный компанией SoftCraft приблизительно в то же время, что и первые IBM PC. После завоевания популярности и доли рынка он был выкуплен компанией Novell для интеграции в её операционную систему Netware, с одновременным развитием версии для MS-DOS. Этот продукт не смог завоевать сколь-либо значительный рынок и после некоторой реорганизации внутри Novell был выделен для разработки в рамках отдельной, вновь созданной, компании — Btrieve Technologies, Inc. (BTI). Начиная с версии 6.15 Btrieve был разделён на отдельные модули, а само название закрепилось за одним из двух средств доступа к данным, подключённых к стандартному программному интерфейсу, получившему название Micro-Kernel Database Engine (MKDE). Второй вариант подсистемы доступа — Scalable SQL — средство работы с реляционными базами данных, использующее язык SQL. После выпуска нескольких версий компания была переименована в Pervasive Software, и сейчас она поставляет этот продукт под названием Pervasive PSQL. АрхитектураРанние выпуски Btrieve квалифицировались не как СУБД, а как «менеджеры записей» (англ. record manager); Pervasive первоначально использовали термин «навигационная база данных» (англ. navigational database), позже изменённый на «транзакционная база данных» (англ. transactional database). Такая терминология обусловлена тем, что Btrieve имела дело только с элементарными операциями создания и обновления записей, извлечения и удаления данных. В качестве внутреннего механизма хранения и индексирования данных используется ISAM. Поздние версии Btrieve поддерживают два вида транзакций: системные и пользовательские, первые являются пакетами нетранзакционных операций или пользовательских транзакций, которые, в свою очередь, являются транзакциями над реальными данными в базах. Механизм системных транзакций был создан для возможности исполнения нескольких транзакций в одном пакете и большей простоты восстановления данных. Файлы формата Btrieve состоят из страниц, которые и являются порциями данных, передаваемыми между оперативной памятью и долговременным хранилищем в процессе операций ввода-вывода, выполняемых ядром СУБД. В версиях до 6.0 использовались только страницы данных, индексов и специальная запись FCR (англ. file control record), содержащая важную информацию о файле базы данных (размер страницы, число использованных страниц и т. п.). Такой файл содержал поисковый индекс, привязанный к физическим страницам. Начиная с версии 6.0 было введено понятие логической страницы, а уже эти страницы отображались на физические страницы, имеющие фиксированное положение в файле, на накопителе. Отображение осуществляется посредством таблиц распределения страниц PAT (англ. page allocation tables). Для предотвращения нарушений логической целостности в файлах БД Btrieve использует два подхода к обновлению зависей: pre-image paging в версиях до 6.0 и shadow paging в последующих. Переход от pre-image paging к shadow paging потребовал существенной перестройки, которая привела к кардинальному изменению формата файлов и утрате совместимости между 6-й версией и предыдущими. При доступе к файлам ядро СУБД может использовать две стратегии, сокращённо именуемые SEFS и MEFS, от англ. Single Engine File Sharing (SEFS); Multi Engine File Sharing (MEFS). SEFS подразумевает, что с файлами будет работать только один экземпляр ядра СУБД, в то время как MEFS позволяет нескольким независимым экземплярам работать с одними и теми же файлами одновременно (причём каждое такое ядро будет обслуживать собственных пользователей). ИсторияBtrieve на протяжении своего развития находилась в собственности и разработке у трёх различных компаний: SoftCraft, Novell and Btrieve Technologies, Inc. (позже переименована в Pervasive Software). Все они имели верных и преданных разработчиков и, судя по фирменной литературе, остались полностью приверженными этому продукту. В своё время Pervasive основало «Btrieve-сообщество», чтобы организовать существующих разработчиков[1]. Под MS-DOS, вплоть до версии 5, Btrieve была TSR-программой, функционировавшей как интерфейс прикладного программирования (API) к ядру СУБД, обеспечивающий прикладные программы набором функциональных вызовов для реализации многопользовательской БД с возможностью блокировки на уровне записей. Сетевая версия функционировала аналогичным образом. В ранний период, MS-DOS версии СУБД, вплоть до версии 5, продавались по относительно высокой цене — приблизительно $1000, однако исполняемая TSR-программа, обеспечивающая работу с БД, могла распространяться с готовыми приложениями без лицензионных отчислений. SoftCraft-периодПродукт был выпущен в феврале 1982 компанией SoftCraft, находящейся в Остине (Техас), под руководством Дуга и Нэнси Вудвард (англ. Doug and Nancy Woodward). Дуг стал вице-президентом и руководил разработкой, а Нэнси — президентом компании. Они выпустили несколько версий в течение последующих нескольких лет: в феврале 1983 выпущена Btrieve 2.x, а когда MS-DOS 2.x получила поддержку дескрипторов для файлов и каталогов, — была выпущена версия Btrieve 3.0. После стандартизации внутренних интерфейсов в MS-DOS 3.1, произошедшего в марте 1985, через месяц была выпущена Btrieve 3.1 C/S, с поддержкой сети и архитектуры клиент/сервер. В феврале 1986 была выпущена Btrieve 4.0, и после её обновления, в версии 4.1 появилась поддержка для расширенных типов ключей и дополнительных индексов. Хотя Btrieve была весьма популярна, она оставалась всего лишь ядром СУБД и API к нему, в то время как «приложение-убийца» среди СУБД для PC, dBase II и его последователи, было настоящей СУБД, которая могла использоваться и как отдельное приложение общего назначения, и как язык программирования. Btrieve также была существенно дороже, чем dBase, хотя не требовала лицензии для каждого отдельного пользователя готового приложения. Таким образом сообщество разработчиков Btrieve достигло 5000 пользователей, и она широко распространилась в финансовой сфере[2]. После этого компании потребовалось некоторое время на создание пользовательского интерфейса к своему продукту, тем не менее в 1984 они выпустили программу Xtrieve, имеющую интерфейс на основе меню и использующую словарь данных в виде файлов с расширением .DDF, вводящий правила свойственные реляционным БД. Покупка компанией NovellВ 1987 Novell начала диверсификацию и скупку разнообразных компаний для включения их продуктов в свою ОС NetWare. Одной из этих компаний стала SoftCraft. Нэнси Вудвард стала вице-президентом и генеральным менеджером вице-президент по работе в Остине, а Дуг Вудвард — вице-президентом Advanced Database Technologies. В начале следующего года была выпущена Btrieve 5.0, способная работать как «родное» приложение для NetWare (или VAP, от англ. Value Added Process). По словам Джима Кайла (англ. Jim Kyle): «она имела автоинкрементный тип данных для ключей, сетевой сервис BROUTER, отдельные типы файлов для данных и для ключей, и возможность компрессии данных».[2] Версия 5.1, выпущенная в 1990, получила улучшенные возможности по управлению файловыми транзакциями, журналированию и последующему «накатыванию» совершаемых действий, все это совместно с некоторым улучшением API. Некоторые версии были выпущены для DOS, OS/2 и Microsoft Windows. Версия 6.0 была выпущена в 1992, однако Novell не приложила усилий к её широкому продвижению, и вследствие внесённых в неё улучшений, таких как переход с pre-imaging на shadow-paging, — оказалась несовместима с предыдущими версиями Btrieve. Рынок принял эту версию прохладно, увеличения доли рынка не произошло, и массового перехода с предыдущих версий — тоже (вследствие вышесказанного). На момент приобретения Novell-ом, SoftCraft занималась продуктом под рабочим названием XQL, являвшимся интерпретатором языка SQL, предназначенным для улучшения совместимости с промышленным стандартом SQL, которому Xtrieve удовлетворял лишь частично. Этот продукт стал основой для NetWare SQL, первая версия которого была выпущена в 1989, и стала «скелетным» воплощением SQL-интерпретатора, реализующим основу IBM-варианта языка SQL. Btrieve Technologies, Inc.К 1994 г. Novell почти отказалось от попыток сделать NetWare полноценной операционной системой, альтернативной существовавшим в то время, и начала распродажу компаний, приобретённых лишь несколько лет назад. Также, они смогли выполнить лишь минимальное рыночное продвижение Btrieve, в основном из-за длительного времени затраченного на выпуск шестой версии (24 месяца). Между Вудвардами и Novell было заключено соглашение, и после двух лет Novell объявила (26 января 1994 г.), что она собирается передать право на владение Btrieve компании Btrieve Technologies, Incorporated (также известной как BTI). 29 апреля 1994 г. передача была завершена, Нэнси Вудвард стала председателем BTI (англ. Chairman), а Дуг Вудвард — техническим директором. Должность исполнительного директора была отдана Рону Харрису (англ. Ron Harris), бывшему сотруднику Texas Instruments, одному из основателей и сотрудников Citrix Systems, Inc., в которой он сначала был директором по стратегическому планированию, позже — вице-президентом по маркетингу, и в конце концов вице-президентом по товарным группам (англ. Product Group Vice President). Btrieve была полностью переписана, и 1 июля 1994 г была выпущена Btrieve 6.15 для DOS, Windows и OS/2. Novell SQL был переименован в Scalable SQL для соответствия изменениям в юридических отношениях между компаниями. В 1995 г. Btrieve 6.15 была выпущена для Windows NT Server и Windows NT/95, таким образом став кроссплатформенным СУБД продуктом. Концепция микроядерного механизма построения СУБД (MKDE) появилась именно в этой версии. Pervasive SoftwareВ 1996 г. компания была переименована в Pervasive Software, а её продукт в Pervasive.SQL. В 1997 г. компания стала публичной (то есть выпустила свои акции в свободное обращение). Все это было сделано для большего проникновения на рынок реляционных СУБД и позиционирования себя как поставщика SQL-решений, хотя они продолжали разрабатывать и продавать Btrieve. Компания завершила своё IPO в сентябре. Версия 6.30 продолжала использовать архитектуру MKDE. В 1997 Pervasive выпустила реляционный продукт ScalableSQL 4.0, а также Btrieve 7.0. В 2000 г Novell подверглась критике после того как перестала поставлять Pervasive.SQL вместе с NetWare (начиная с версии NetWare 5.1). Вместо этого поставлялась пробная версия которая прекращала функционировать через 90 дней.[3] Последняя версия, Pervasive PSQL Summit v10, была выпущена в октябре 2007 года. Согласно официальному сайту Pervasive ещё разрабатывается ВерсииСерия BtrieveBtrieve для DOSСуществовала одна клиентская (англ. client-based) конфигурация Btrieve для DOS, созданная в SoftCraft. Их фирменное определение понятия «клиентский» звучало так: «Ядро Btrieve, исполняющееся на отдельной рабочей станции».[4] То есть ядро менеджера записей взаимодействовало с файлами данных напрямую, через вызовы операционной системы, и изменяло записи единообразно, вне зависимости от того, находились ли файлы локально или на сетевом ресурсе. Такое «клиентское» ядро позволяло одновременно работать с БД пяти конкурирующим пользователям. Все манипуляции с записями проводились локально, на той рабочей станции, на которой работало ядро СУБД. Btrieve для DOS могла использовать обе стратегии совместного доступа к файлам (SEFS и MEFS). Btrieve для NetwareBtrieve для Netware, по существу, была той же Btrieve для DOS с некоторыми дополнительными возможностями, доступными в то время только на Netware. На файловом сервере запускался процесс Для передачи запросов ввода-вывода данных из/в БД, на клиентских рабочих станциях использовались т. н. реквесторы (англ. requester), доступные для DOS, OS/2, Microsoft Windows и UnixWare. Программа Процесс Btrieve для Netware использовала те же стратеги SEFS и MEFS для совместного доступа к файлам, что и под DOS, но поскольку могла функционировать в сети, то могла поддерживать как эксклюзивные, так и конкурирующие транзакции. Btrieve для WindowsBtrieve для Windows появилась до того, как компания переписала основной код СУБД с использованием MKDE. В ней использовались SEFS и MEFS механизмы совместного использования файлов, механизм shadow-paging, эксклюзивные и конкурирующие блокировки. Файлы версий 6.x и 6.1 обрабатывались различным образом: в файлах версии 6.x возможно было оперировать фрагментами записей, вместо блокировки всей записи целиком; допускались записи более 64KB; были реализованы variable-tail allocation table (VAT), Alternate Collating Sequence (ACS) и новые типы данных; разрешались долевые операции (операции деления?) (англ. percentage operations) (в которых записи могли быть найдены и обработаны по своему физическому местонахождению в файле); разрешались дублирующиеся поисковые ключи. В версии 6.x появилась возможность добавлять и удалять любые индексы «на лету» (до версии 6.0 включительно удалять можно было только дополнительные индексы). Файлы версии 6.1 поддерживали конкурентные и системные транзакции; возможность перенумерации ключей; нечувствительные к регистру ACS-таблицы и усовершенствованные операции блокировок. Btrieve для Windows могла работать как клиент БД использующей SEFS или MEFS режимы, или могла напрямую работать с сервером Btrieve. Клиентский BtrieveДля клиентской Btrieve все файлы БД находились либо на локальном компьютере, либо на сетевом диске, подключённом в этому компьютеру (посредством DOS команды Приложение выполняло вызовы функций библиотеки Доступ из клиентского Btrieve к серверномуКлиентская версия Btrieve для Windows могла обращаться к серверной через специальный реквестор для DOS. Этот реквестор требовал использования DPMI (DOS Protected Mode Interface), который обеспечивал программы доступом к расширенной памяти, доступной только через защищённый режим процессоров x86. Также как и в случае клиентского интерфейса, Btrieve приложение выполняло вызов к библиотеке Btrieve для Windows NT/Windows 95Btrieve для Windows NT и Windows 95 была выпущена в 1995 году, вместе с Btrieve для Netware и для Windows NT Server. Номер версии достиг 6.15 и началось использование микроядерной акрхитектуры (MKDE). Механизмы совместного использования файлов остались те же (SEFS и MEFS); использовалось shadow-paging, поддерживались эксклюзивные и конкурирующие блокировки. Эта версия Btrieve разрешала использование null для ключей, что позволяло вносить записи в БД даже если ключевая информация отсутствует. Такие ключи не участвовали в индексировании, что сокращало бесполезный поиск по индексу в БД. В этой же версии была введена концепция системных транзакций и пользовательских транзакций. . MKDE разрешало разрывы между автоинкрементными ключами. Variable-tail allocation tables появились в версии 6.15, таким образом они были включены в сборку Btrieve для Windows NT/95. Существовало две конфигурации Btrieve для Windows NT/95: standalone workstation и client/server. Standalone WorkstationПри использовании standalone workstation конфигурации Btrieve, вся обработка записей производилась на локальной рабочей станции,
полагаясь на локальные механизмы Windows, пользуясь которыми MKDE ( В такой конфигурации приложение выполняло вызовы к Btrieve API или интерфейсу микроядра ( Однако такой подход имеет неприятные побочные следствия. Если Btrieve использует сетевой механизм Windows, а ядро СУБД открывает файлы напрямую с сетевого ресурса, и возникает сбой локальной сети, в процессе обновления полей связывающих файлы Btrieve (или просто отключается сетевой кабель), может наступить рассинхронизация, нарушатся связи между данными (потеряются или будут установлены неправильно), и файлы БД будут испорчены. (Хотя вероятность этого и уменьшается технологией pre-image paging.) Client/ServerПри использовании конфигурации клиент/сервер (англ. 'client/server' или 'Server edition'), обработка записей в основном
выполняется на файловом сервере Windows, через отображение сетевых ресурсов в диски (под Windows, сетевые ресурсы отображаются в виртуальные сетевые диски командой Под Windows 95, интерфейс MKDE (Windows DLL Переимущества такого подхода в том, что при сбое локальной сети, MKDE на сервере способно обнаружить это и более аккуратно выполнить восстановление, чем в конфигурации standalone workstation. КонфигурированиеBtrieve включает утилиту для настройки параметров MKDE. Следующие параметры могут быть настроены:
Серия Pervasive.SQLPervasive.SQL 7Pervasive SQL 7 был выпущен в марте 1998 и включал в себя Scalable SQL 4 и Btrieve 7.0. Btrieve 7.0 запускалась на тех же платформах,
что и Btrieve 6.x: Windows 95, Windows NT 3.51 & 4, Netware и DOS. Тем не менее компания изменила компонентную архитектуру
именуемую SmartComponents для решения вопросов совместимости при переходе на новую версию. Она использовала схему идентификации компонентов с одновременным указанием идентификатора внутри файла и кодированием в его имени, совместно с динамическим связыванием «склеивающих модулей» (DLL загружаемых в память только при необходимости в них). Динамическое связывание компонентов выполнялось с применением нового подхода, «Abstract OS Services DLL», в соответствии с которым выбиралась самая последняя версия необходимого компонента, посредством информации закодированной в его имени файла. Далее, этот «склеивающий модуль» загружался в память и начинал использоваться.[10]
Старый формат файла журнала событий, существовавший в Btrieve 6.x, был заменён новым централизованным журналом
MKDE сохранилось в Pervasive.SQL 7. Тем не менее, его внутренняя архитектура изменилась, вследствие появления новой архитектуры динамического связывания компонентов. Приложение использующее Btrieve вызывало специального сервис-менеджера, который искал в различных, указанных в конфигурации, каталогах файлы с именами определённого формата. Вот определение шаблона для имён этих файлов в формате BNF: <filename> ::= <platform-code> "BIF" <major-functional-level> <minor-functional-level> <platform-code> ::= "W1" | "W2" | "W3" | "W9" | "WT" | "NW" | "O3" <major-functional-level> ::= <number> <minor-functional-level> ::= <number> <number> <number> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
«Склеивающий» модуль (DLL) загружается в память и становится интерфейсом к MKDE. Далее MKDE определяет, каким образом оно настроено, для работы на отдельной рабочей станции или для взаимодействия с сервером, и начинает транслировать запросы на сервер БД (через специальный коммуникационный модуль) или напрямую работать с файлами БД, если оно настроено на режим «рабочая станция». Pervasive.SQL 2000/2000iPervasive.SQL 2000 и 2000i используют по существу ту же архитектуру, что и Pervasive.SQL 7, но 2000i и включает дополнительный сервер i*Net (видимо — веб-сервер). Используется та же компонентная модель, позволяющая использовать оба механизм доступа к данным, и Btrieve и Scalable SQL; продолжается использоваться архитектура MKDE. Эта версия включает поддержу Red Hat Linux, Caldera OpenLinux, SUSE и Solaris. Также была улучшена интеграция с Terminal Services, хотя возможно запускать только один экземпляр ядра СУБД на любой платформе. То есть невозможно запустить отдельные копии СУБД в двух или более терминальных сеансах. Pervasive.SQL V8Представленный в декабре 2002 г. Pervasive.SQL V8 имеет улучшенные характеристики производительности для приложений использующих любой из механизмов доступа (Btrieve или SQL), что достигнуто использованием нескольких новых технологий:
Пакет обновлений V8 Security Feature Pack (выпущенний как промежуточное обновление до версии 8.5) внёс важные изменения в модель безопасности, направленные на ограничение доступа к файлам данных. До версии 8.5 доступ к данным Btrieve контролировался механизмами безопасности ОС, что означало буквально: «Пользователь осуществляющий чтение/запись данных, должен иметь доступ на чтение/запись к соответствующим файлам с данными». В новой версии реализована новая модель безопасности, позволяющая администратору контролировать доступ к данным Btrieve используя собственный механизм разграничения доступа СУБД. После активации нового механизма, пользователь более не нуждается в доступе к файлам данных. В дополнение, конфигурации с архитектурой клиент/сервер более не нуждались в использовании общих сетевых ресурсов или их отображении в виде виртуальных дисков. Теперь приложения могли ссылаться за защищённые данные Btrieve посредством URI-строк соединения. Серия Pervasive PSQLPervasive PSQL v9Pervasive PSQL v9 включает новый Java GUI, на основе Eclipse, доступный как для Microsoft Windows, так и для Linux. Также, v9 содержит множество обновлений SQL, как по части производительности, так и по части синтаксиса, способствующих повышению скорости и улучшению функциональности всех средств доступа, использующих SQL — ADO.Net, JDBC, ODBC и OLE DB. И в заключение, PSQL v9 увеличивает максимальный размер файла БД с 64GB, в 8.x и более ранних версиях. до 128GB в 9.0 и 256GB в 9.5. Совместно с выпуском PSQL v9, была вновь релизована утилита DDF Builder, а кроме того добавлена поддержка полнотекстового поиска, обеспечиваемая дополнением Full Text Search (FTS) (позже, однако, исключённым из продуктовой линейки). DDF Builder предоставляет возможность пользователям Btrieve задать метаданные для существующих файлов формата Btrieve, чтобы сделать их доступными для SQL утилит. Все версии MKDE сохраняют обратную совместимость с предыдущими версиями Btrieve на уровне чтения данных. В том числе поддерживаются
версии выпущенные до появления MKDE, и формат файла не изменяется до тех пор, пока это специально не запрошено. Однако, файлы от версий 5.x и более ранних должны быть перестроены заново, в формат версии 6.x или более поздней, для обеспечения возможности
их изменения ядром СУБД версии 9.0 или более поздней. Перестройка выполняется из графического интерфейса или консольной командой Pervasive PSQL v10
Pervasive PSQL v11
Pervasive PSQL v12
Pervasive PSQL Vx
Pervasive PSQL и сопутствующие продуктыВ настоящее время Pervasive поставляет набор дополнительных продуктов, расширяющих базовые возможности СУБД PSQL.
Примечания
Ссылки
|