Введение

Gadfly - это система управления реляционными базами данных, написанная на языке Python. Gadfly - это коллекция модулей Python, которая обеспечивает функциональность реляционной базы данных, полностью реализованной в Python. Он поддерживает подмножество стандартного RDBMS Structured Query Language (SQL). Gadfly работает везде, где работает Python, и поддерживает клиент/сервер на любой платформе, которая поддерживает стандартный интерфейс сокета Python. Форматы файлов, используемые Gadfly для хранения, являются кроссплатформенными. Каталог базы данных gadfly может быть перенесен из Windows 95 в Linux с помощью бинарного механизма копирования, и gadfly будет читать и запускать базу данных. Он поддерживает постоянные базы данных, состоящие из коллекции структурированных таблиц с индексами и большого подмножества SQL для доступа и модификации этих таблиц. Он поддерживает протокол восстановления на основе журналов, который позволяет восстанавливать выполненные операции базы данных, даже если база данных не была закрыта надлежащим образом (т.е. в случае сбоя процессора или программного обеспечения, [но не в случае сбоя диска]). Он также поддерживает режим TCP/IP Client/Server, в котором удаленные клиенты могут получить доступ к базе данных Gadfly через сеть TCP/IP (такую как Интернет), при условии настраиваемых механизмов безопасности. Поскольку Gadfly тесно зависит от пакета kwParsing, он распространяется как часть пакета kwParsing, под одним авторским правом. Gadfly позволяет программам Python хранить, извлекать и запрашивать табличные данные, не полагаясь на внешние базы данных или пакеты. Он обеспечивает в памяти реляционный стиль базы данных для программ Python, в комплекте с понятием "сделанных, восстанавливаемых транзакций" и "отрывов".

Использование

Основной модуль "gadfly" пытается верно придерживаться API базы данных Python Грега Стейна, как обсуждалось и сертифицировано Python DB SIG. Одновременные обновления базы данных не поддерживаются. "Базы данных" в настоящее время разработаны для записи/модификации одним отдельным процессом. Несколько процессов могут получить доступ к базе данных Gadfly, когда доступ арбитрируется процессом сервера TCP/IP Gadfly.

Особенности

В этой версии все таблицы зачитываются в память при "подключении" к базе данных, а "прикоснувшиеся" таблицы записываются на контрольной точке. Каждая таблица представлена в качестве отдельного файла в каталоге назначения, а также есть файл "определения данных" (список деклараций определения данных). Во время активного использования в активной директории также появляется файл журнала, и если процесс сбой, этот файл журнала используется для восстановления выполненных операций.

Архитектура

Грамматика SQL описана в грамматике. py, связывание грамматических конструктов с семантическими объектами выполняется в связях. py, семантические объекты и стратегии их выполнения определяются в семантике. - Да, конечно. Семантика использует много классической и неклассической логики (цилиндрической логики), а также эвристику оптимизации для определения относительно эффективной и правильной реализации SQL. Наиболее основные структуры данных реализации приведены в любом kjbuckets0. или более быстрый модуль kjbuckets. c, которые реализуют одни и те же подписи типов данных в Python и в расширении C для Python соответственно. База данных. py модуль - это простой оберток, который обеспечивает стандартный интерфейс DBAPI для системы. Тест-комплект "Тест/Тест Gadfly". py пытается провести регрессионное испытание и демонстрацию системы. Для анализатора SQL также требуется пакет генерации анализатора kwParsing, который состоит из ряда дополнительных модулей Python.

Инструменты

С помощью gfplus база данных gadfly может быть интерактивно обработана с помощью команд SQL. Инструмент работает аналогично SQL*Plus от Oracle.

Конкуренция

Поскольку он не имеет подлинного контроля параллельности и индексирования на основе файловой системы, он не подходит для очень больших многопроцессных систем, основанных на транзакциях. Два приложения могут одновременно получать доступ к одной и той же базе данных. Однако изменения, сделанные одним приложением, могут быть не видны другим приложением до тех пор, пока оно не перезапустится. Это может быть связано с тем, что каждое приложение загружает базу данных в память только при запуске.