Статьи Новости Контакты
MySQL (0)

12.03.2008
Даниил Буров

SQLite: БД в одной библиотеке

описание SQLite

Общественное достояние

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

SQLite Copyright

Весь программный код, поставляемый вместе с SQLite, был предоставлен его авторами в общественное пользование. Все авторы кода, а также представители компаний, в которых они работают, письменно подтвердили свой вклад в общественное достояние, и оригиналы этих бумаг хранятся в главном офисе в Hwaci. Любой желающий может свободно копировать, изменять, издавать, компилировать, продавать или распространять исходный код SQLite — или в форме исходного кода, или откомпилированного бинарного. Для любых целей: коммерческих и бесплатных. Или любым другим образом.

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

По утверждению разработчиков, весь поставляемый код SQLite был написан на пустом месте. При этом не использовался никакой код от работы других проектов или из открытого Интернета. Каждую строку программы можно проследить обратно до ее первоначального автора, каждый из которых предоставил свой файл в общественное пользование. Таким образом, основа кода SQLite является чистым и без примесей лицензированного кода от других проектов.

Автономность SQLite

SQLite обладает значительной степенью автономности. Сама по себе она требует минимальной поддержки от внешних библиотек или от операционной системы. Это весьма удобно при использовании ее во "внедренных устройствах", которые испытывают недостаток в инфраструктуре поддержки, имеющейся у персональных компьютеров. Еще одним плюсом является то, что SQLite приспособлена для использования в приложениях, которые должны работать без модификации на разнообразных компьютерах с изменяющейся конфигурацией. SQLite написана в ANSI-C и должна легко компилироваться любым стандартным компилятором C.

Благодаря своей автономности SQLite активно используется в мобильниках, КПК и прочей карманной электронике
Единственные необходимые библиотечные функции С называются:
  • memset()
  • memcpy()
  • memcmp()
  • strcmp()
  • malloc(), free(), and realloc()

В SQLite можно настроить во время компиляции, чтобы использовался статический буфер вместо запроса malloc для требуемой памяти. Функции SQL даты и времени, обеспечиваемые SQLite, требуют некоторой дополнительной поддержки библиотеки С, но они могут быть опущены в процессе настроек во время компиляции. Связь между SQLite и операционной системой и диском установлена через уровень Virtual File System (VFS). Наличие модулей VFS для Unix (linux и MacOSX), OS/2, Win32 и WinCE обеспечено в исходном дереве. Разработчики утверждают, что создать альтернативу VFS для внедренных устройств является достаточно простым вопросом.

Исходный код SQLite доступен как amalgamation — один большой С-файл. Проекты, желающие включить SQLite, могут просто включить этот файл (называется sqlite3.c) и его соответствующий заголовок (sqlite3.h) в свое исходное дерево и откомпилировать их вместе с остальной частью кода. SQLite не взаимодействует ни с какими внешними библиотеками, кроме библиотек С, описанных ранее, и не требует никакой дополнительно встраиваемой поддержки.

Отсутствие необходимости в сервере

Большинство механизмов базы данных SQL сделаны как отдельный процесс сервера. Программы, которые хотят обратиться к базе данных, связываются с сервером, используя некоторое взаимодействие процессов (типично TCP/IP), чтобы послать запросы серверу и получать назад результаты. SQLite работает по-другому. В SQLite процесс, который хочет обратиться к базе данных, читает и пишет непосредственно из файлов базы данных на жестком диске. Это убирает посреднические процессы сервера.

Отсутствие необходимости в сервере имеет свои плюсы и минусы: упрощение работы и обслуживания противостоит снижению защиты от ошибок приложения-клиента
В отсутствии необходимости в сервере есть свои преимущества и недостатки. Основное преимущество заключается в том, что нет никакого отдельного процесса сервера для установки, настройки, инициализации, управления и поиска неисправностей. Это одна из причин, почему SQLite является механизмом базы данных со "стартовой конфигурацией". Программы, использующие SQLite, не требует никакой административной поддержки для установки механизма базы данных перед своим запуском. Любая программа, которая может получить доступ к диску, способна использовать базу данных SQLite.

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

Большинство механизмов базы данных SQL основаны на принципе "клиент — сервер". Из тех, которые основаны на принципе отсутствия необходимости в использовании сервера, только SQLite позволяет нескольким приложениям обращаться к одной базе в одно и то же время.

Начальная конфигурация

SQLite не нуждается в установке перед использованием. Нет никакой процедуры инсталляции. Отсутствуют какие-либо серверные процессы, которые необходимо запускать, останавливать или конфигурировать. Нет никакой потребности в создании администратором нового образца базы данных или в назначении пользователям прав доступа. Эта библиотека не использует никакие файлы конфигурации. При этом ничего не надо делать, чтобы сообщить системе, что SQLite выполняется. Нет необходимости после сбоя питания или аварийного отказа системы в выполнении каких-либо действий. Нет ничего, что можно было бы диагностировать, — SQLite просто работает.

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

Общая информация

SQLite является внедренным механизмом базы данных SQL. В отличие от большинства других баз данных SQL SQLite не имеет отдельного серверного процесса. SQLite читает и пишет непосредственно обычным файлом на диске. Полная база данных SQL с многочисленными таблицами, индексами, триггерами содержится в единственном файле на жестком диске. Формат файла базы данных является межплатформенным. Можно свободно копировать базу данных между 32- и 64-разрядными системами. Подобные особенности делают SQLite популярным выбором в качестве формата файлов приложений (Application File Format). Об SQLite не стоит думать как о замене Oracle, но как о замене для fopen().

SQLite весьма компактна — она может занимать объем менее 250 Kb
Еще один аргумент в пользу SQLite — ее компактность. Со всеми включенными настройками, в зависимости от параметров настройки оптимизации компилятора, размер библиотеки может составлять менее 250 Кб. Если опущены дополнительные настройки, размер библиотеки SQLite может быть сокращен до 180 Кб и немного меньше. Как утверждают разработчики, SQLite может работать при минимальном стеке около 16 Кб и очень небольшой динамической памяти — 100 Кб. Это позволяет использовать SQLite как популярный механизм базы данных в таких устройствах с ограничениями памяти, как мобильные телефоны, карманные персональные компьютеры, MP3-проигрыватели и так далее. В данном случае имеет место соотношение между использованием памяти и скоростью. Чем больше отводится памяти для SQLite, тем быстрее она работает. Тем не менее рабочие характеристики обычно и так достаточно высоки даже в средах с низким объемом памяти.

Как утверждается на официальном сайте, SQLite имеет репутацию надежного механизма. Около двух третей исходного кода отводится на тестирование и проверку. Автоматизированный тестирующий набор программ выполняет сотни тысяч проверок, обрабатывающих миллионы индивидуальных SQL-запросов, достигая при этом более чем 99% охвата. SQLite отвечает изящно на сбои в распределении памяти и дисковые ошибки ввода-вывода. Все это проверено автоматическими тестированиями при использовании специального оборудования, которое имитирует сбои в работе системы. Разумеется, даже при таких испытаниях все еще имеются определенные ошибки. Но в отличие от некоторых других подобных проектов (камень в сторону коммерческих конкурентов) SQLite открыто и честно сообщает о своих дефектах в предоставляемом списке ошибок, включающем список критических ошибок с поминутной хронологией сообщений об ошибках и изменениях кода.

Базовый код SQLite поддерживается международной группой разработчиков, которые постоянно работают с ее применением. Разработчики продолжают расширять возможности SQLite, улучшать ее надежность и работу, пока поддерживается обратная совместимость с изданными спецификациями интерфейса, синтаксисом SQL и форматом файла базы данных. Исходный код абсолютно свободен для использования кем угодно, кому он нужен. При этом также доступны и профессиональные услуги службы поддержки. Разработчики надеются, что пользователи найдут SQLite полезным, и призывают использовать его хорошо: создавать хорошие и надежные программы, которые будут удобны и просты в применении.





Скоро на сайте

  • Wordpress

    Серия статей о плагинах к движку WordPrress
  • AJAX

    Проекты и продукты, ориентированные на AJAX
  • Новые сервисы Google

    Обзор новых сервисов Google
 

Copyright © 2003—2018 Все права защищены

При использовании материалов сайта ссылка на hostinfo.ru обязательна

  • хостинг от .masterhost
  • Rambler's Top100