LetoDB

LetoDB (см. статью в Википедии) - это клиент-серверная система управления базами данных (СУБД), задуманная как свободно распространяемая альтернатива Advantage Database Server (ADS), популярному среди xBase разработчиков клиент-серверному решению.

ADS, созданный в 1993 году компанией Extended Systems, впоследствии был приобретен Sybase, а в 2015 году - SAP. Это отличный продукт - быстрый, надежный, легкий в использовании, работающий на почти всех серверных операционных системах. Особая его ценность для Clipper/Harbour заключается в том, что он изначально сделан для поддержки клиентских RDD (Replaceable Database Driver), входящих в состав этих средств программирования, и, таким образом, обращаться к ADS можно теми же методами, что и к родным, локальным файлам баз данных. Для более-менее серьезных приложений, работающих в многопользовательском режиме, файл-серверный вариант малоприемлем и ADS в течение многих лет был безальтернативным решением. Но, как и все СУБД, он недешев. Поэтому и возникла идея сделать что-то подобное на основе open source. Помимо экономии средств, появляется возможность реализовать какие-то фишки, которые тебе нужны - как всегда, когда делаешь что-то сам.


Особо хочу подчеркнуть: LetoDB - клиент-серверная, но не SQL СУБД, при этом ее нельзя отнести и к классу NoSQL СУБД, поскольку она основана на реляционных базах данных или, если строго придерживаться определения реляционной модели, базах данных с реляционным подходом.

При совершении какой-либо операции с таблицей БД ( открытие, закрытие, перемещение, извлечение данных, ...) клиентская программа отправляет запрос на сервер; серверный модуль LetoDB выполняет запрос и посылает ответ. Все операции непосредственно с файлами баз данных совершает серверный модуль. Он ищет нужную запись, если запрошен поиск, фильтрует записи, осуществляет поиск и перемещение по индексу - клиенту отправляется только готовый результат. Таким образом, даже при простейшей операции - skip по индексу достигается существенная экономия сетевого трафика и обеспечивается более высокая производительность по сравнению с файл-серверным решением. Содержимое индексного файла не гоняется по сети вообще, клиентская программа его "не видит", пересылаются только конкретные записи из таблицы.

LetoDB поддерживает транзакции. При объединении нескольких операций записи в таблицы БД в транзакцию все изменения буферизуются в клиентской программе и посылаются на сервер одним пакетом при достижении конца транзакции, определяемого вызовом функции leto_CommitTransaction(). Сервер проверяет наличие необходимых блокировок, проверяет возможность выполнения операций (соответствие типов и длин данных) и, если все в порядке, выполняет все операции, заданные в полученном пакете, а если нет - отказывается выполнять транзакцию. Реализация транзакций в LetoDB в целом соответствует требованиям ACID:

   -    Атомарность обеспечивается тем, что все операции внутри транзакции осуществляются одним пакетом, в течение одного сеанса связи запрос/ответ и тем, что перед непосредственным выполнением этих операций сервер проверяет, все ли условия соблюдены - этим гарантируется беспроблемное и полное выполнение транзакции.
   -    Согласованность в широком смысле этого понятия - на совести программиста. Если он включил в транзакцию все связанные операции, то она обеспечена.
   -    Изолированность обеспечивается тем, что перед выполнением транзакции поток присоединяет к себе все требуемые таблицы, т.е., гарантирует, что параллельно работающие потоки с этими таблицами работать не смогут, и проверяет наличие блокировок.
   -    Долговечность - если транзакция выполнена, то внезапное отключение клиента не приведет к ее отмене.

LetoDB сервер написан большей частью на C с использованием библиотек от Harbour, в т.ч. драйверов баз данных - DBFCDX и DBFNTX.

Клиентская часть включает в себя Leto Client Engine - полный набор C функций, реализующих доступ к серверу, и Leto RDD - драйвер баз данных для Harbour. Leto Client Engine предоставляет доступ к LetoDB серверу для языков и средств программирования, имеющих возможность использовать подключаемые C-модули, т.е. для большинства современных инструментов программирования.

Имеется также PHP - клиент, точнее, заготовка, демонстрация возможности такого решения.

В дистрибутив LetoDB входят несколько утилит, в том числе Server management utility - утилита управления сервером, server manager, которая запускается на клиентском рабочем месте и выдает разнообразную информацию о работе сервера: статистику, список подключений, список открытых таблиц, а также позволяет закрыть любое соединение - "убить" клиента.




Комментариев:       ()       пред.    след.       Добавить комментарий
Длина комментария - не больше 4000 символов.
Ваше имя:

Адрес электронной почты:
(не предназначено к показу)
 
Введите текст с картинки: