- SQLite
-
Тип Разработчик Ричард Хипп
Написана на Операционная система Последняя версия Лицензия Сайт SQLite — легковесная встраиваемая реляционная база данных. Исходный код библиотеки передан в общественное достояние. В 2005 году проект получил награду Google-O’Reilly Open Source Awards[2].
Содержание
Дизайн
Слово «встраиваемый» означает, что SQLite не использует парадигму клиент-сервер, то есть движок SQLite не является отдельно работающим процессом, с которым взаимодействует программа, а предоставляет библиотеку, с которой программа компонуется и движок становится составной частью программы. Таким образом, в качестве протокола обмена используются вызовы функций (API) библиотеки SQLite. Такой подход уменьшает накладные расходы, время отклика и упрощает программу. SQLite хранит всю базу данных (включая определения, таблицы, индексы и данные) в единственном стандартном файле на том компьютере, на котором исполняется программа. Простота реализации достигается за счёт того, что перед началом исполнения транзакции записи весь файл, хранящий базу данных, блокируется; ACID-функции достигаются в том числе за счёт создания файла журнала.
Несколько процессов или потоков могут одновременно без каких-либо проблем читать данные из одной базы. Запись в базу можно осуществить только в том случае, если никаких других запросов в данный момент не обслуживается; в противном случае попытка записи оканчивается неудачей, и в программу возвращается код ошибки. Другим вариантом развития событий является автоматическое повторение попыток записи в течение заданного интервала времени.
В комплекте поставки идёт также функциональная клиентская часть в виде исполняемого файла sqlite3, с помощью которого демонстрируется реализация функций основной библиотеки. Клиентская часть работает из командной строки, позволяет обращаться к файлу БД на основе типовых функций ОС.
Благодаря архитектуре движка возможно использовать SQLite как на встраиваемых системах, так и на выделенных машинах с гигабайтными массивами данных.
Ограничения
Старые версии SQLite были спроектированы без каких-либо ограничений, единственным условием было то, чтобы база данных умещалась в памяти, в которой все вычисления производились при помощи 32-разрядных целых чисел. Это создавало определённые проблемы. Из-за того, что верхние пределы не были определены и соответственно должным образом протестированы, то часто обнаруживались ошибки при использовании SQLite в достаточно экстремальных условиях. И поэтому, в новых версиях SQLite были введены пределы, которые теперь проверяются вместе с общим набором тестов.
Во время компиляции библиотеки SQLite устанавливаются следующие ограничения, которые можно при острой необходимости увеличивать:
Описание Значение Константа в исходнике Максимальная длина строки или BLOB-поля 1 000 000 000 SQLITE_MAX_LENGTH Максимальное количество колонок 2 000 SQLITE_MAX_COLUMN Максимальная длина SQL-выражения 1 000 000 SQLITE_MAX_SQL_LENGTH Максимальное количество таблиц в выражениях с JOIN 64 Максимальная глубина дерева выражений 1 000 SQLITE_MAX_EXPR_DEPTH Максимальное количество аргументов функции 100 SQLITE_MAX_FUNCTION_ARG Максимальное количество термов в объединённом выражении с SELECT 500 SQLITE_MAX_COMPOUND_SELECT Максимальная длина шаблона как аргумента операторов LIKE или GLOB 50 000 SQLITE_MAX_LIKE_PATTERN_LENGTH Максимальное количество символов-заменителей в одном SQL-выражении 999 SQLITE_MAX_VARIABLE_NUMBER Максимальная глубина рекурсии триггеров 1 000 SQLITE_MAX_TRIGGER_DEPTH Максимальное количество присоединённых баз 10 SQLITE_MAX_ATTACHED Максимальный размер страницы базы данных 32 768 SQLITE_MAX_PAGE_SIZE Максимальное количество страниц в файле базы данных 1 073 741 823 SQLITE_MAX_PAGE_COUNT На текущий момент только значение SQLITE_MAX_PAGE_SIZE не может быть больше заданного по умолчанию. Таким образом, не изменяя SQLITE_MAX_PAGE_COUNT, можно сказать, что максимальный размер файла базы данных составляет примерно 32 ТБ (35’184’372’056’064 Б).
Некоторые ограничения можно менять в сторону уменьшения во время исполнения программы при помощи задания категории и соответствующего значения функции sqlite3_limit():
int sqlite3_limit(sqlite3*, int id, int newVal)
Категория Описание SQLITE_LIMIT_LENGTH Максимальная длина любой строки или BLOB-поля или ряда SQLITE_LIMIT_SQL_LENGTH Максимальная длина SQL-выражения SQLITE_LIMIT_COLUMN Максимальное количество колонок в определении таблицы или результате выборки, или индексе, или выражениях с операторами ORDER BY или GROUP BY SQLITE_LIMIT_EXPR_DEPTH Максимальная глубина разобранного дерева любого выражения SQLITE_LIMIT_COMPOUND_SELECT Максимальное количество термов в объединённом выражении с SELECT SQLITE_LIMIT_VDBE_OP Максимальное количество инструкций программы виртуальной машины выполняемого SQL-выражения SQLITE_LIMIT_FUNCTION_ARG Максимально количество аргументов функции SQLITE_LIMIT_ATTACHED Максимальное количество присоединённых баз SQLITE_LIMIT_LIKE_PATTERN_LENGTH Максимальная длина шаблона как аргумента операторов LIKE или GLOB SQLITE_LIMIT_VARIABLE_NUMBER Максимальное количество переменных в SQL-выражении, которые можно связать SQLITE_LIMIT_TRIGGER_DEPTH Максимальная глубина рекурсии триггеров Это может быть полезным, если SQLite используется в веб-приложениях, так как уменьшенные пределы могут предотвратить DoS-атаки со стороны недоверяемых внешних клиентов.
Использование
Сама библиотека SQLite написана на C; существует большое количество привязок к другим языкам программирования, в том числе Delphi, C++, Java, C#, VB.NET, Python, Perl, PHP, Tcl (средства для работы с Tcl включены в комплект поставки SQLite), Ruby, Haskell, Scheme, Smalltalk, Lua и Parser, а также ко многим другим. Полный список существующих средств размещён на странице проекта[3].
Простота и удобство встраивания SQLite привели к тому, что библиотека используется в браузерах, музыкальных плеерах и многих других программах.
В частности, SQLite используют:
- Adobe Integrated Runtime — среда для запуска приложений (частично);
- Gears;
- Фреймворк Qt;
- Платформа XUL на движке Gecko 1.9+, XULRunner 1.9+ и, потенциально, все приложения, основанные на этой платформе, в том числе:
- Mozilla Firefox (начиная с версии 3.0)
- Mozilla Thunderbird (начиная с версии 3.0)
- Songbird
- SQLite Manager[4].
- Skype[5];
- Некоторые модели GPS-навигаторов Garmin
- Android API
Многие программы поддерживают SQLite в качестве формата хранения данных (особенно в Mac OS и iPhone OS, Android), в том числе:
- 1С:Предприятие 7.7 (с помощью внешнего компонента[6]);
- Adobe Photoshop Lightroom;
- FlylinkDC++;
- AIMP;
- Banshee;
- Eserv;
- F-Spot;
- FAR Manager (начиная с версии 3.0);
- Gajim;
- Google Chrome;
- Miranda IM (с помощью плагина драйвера базы данных[7]);
- Money IQ;
- Mozilla Firefox;
- Opera (начиная с версии 10.50);
- qutIM;
- Safari;
- XnView;
- Garena.
См. также
Ссылки
- Официальный сайт (англ.)
- Список программ для администрирования SQLite (англ.)
Примечания
Системы управления базами данных (СУБД) Клиент-серверные Caché • CouchDB • IMS • DB2 • Firebird • Informix • Ingres • InterBase • MS SQL Server • MongoDB • MySQL • mSQL • Oracle Database • Pervasive SQL • PostgreSQL • Sybase ASE • Sybase ASA • Sybase IQ • Teradata Database • ЛИНТЕР
Движки Файл-серверные DataFlex • dBase • MS Access • OpenOffice.org Base • Paradox
Базы данных Концепции Модель данных • Реляционная (модель • алгебра • Нормальная форма • Ссылочная целостность • БД • СУБД) • Иерархическая модель • Сетевая (модель • СУБД) • Объектно-ориентированная (БД • СУБД) • Транзакция • Журнализация • Секционирование
Объекты Ключи Потенциальный • Первичный • Внешний • Естественный • Суррогатный (искусственный) • Суперключ
SQL СУБД IMS • DB2 • Informix • Oracle Database • Microsoft SQL Server • Adaptive Server Enterprise • Teradata Database • Firebird • PostgreSQL • MySQL • SQLite • Microsoft Access • Visual FoxPro • ЛИНТЕР • CouchDB • MongoDB
Компоненты Категории:- Программное обеспечение по алфавиту
- Свободные СУБД
- Программное обеспечение в общественном достоянии
- Свободные библиотеки программ
- Реляционные базы данных
Wikimedia Foundation. 2010.