WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте
SQLite
Тип реляционная СУБД
Разработчик Ричард Хипп[d]
Написана на Си[1]
Операционная система кроссплатформенность
Первый выпуск август 2000
Последняя версия
Лицензия общественное достояние[3]
Сайт sqlite.org
 SQLite на Викискладе

SQLite (/ˌɛskjuːɛlˈlaɪt/ или /ˈsiːkwəl.laɪt/) — компактная встраиваемая СУБД. Исходный код библиотеки передан в общественное достояние. В 2005 году проект получил награду Google-O’Reilly Open Source Awards[4].

Дизайн

Слово «встраиваемый» (embedded) означает, что SQLite не использует парадигму клиент-сервер, то есть движок SQLite не является отдельно работающим процессом, с которым взаимодействует программа, а представляет собой библиотеку, с которой программа компонуется, и движок становится составной частью программы. Таким образом, в качестве протокола обмена используются вызовы функций (API) библиотеки SQLite. Такой подход уменьшает накладные расходы, время отклика и упрощает программу. SQLite хранит всю базу данных (включая определения, таблицы, индексы и данные) в единственном стандартном файле на том компьютере, на котором исполняется программа. Простота реализации достигается за счёт того, что перед началом исполнения транзакции записи весь файл, хранящий базу данных, блокируется; ACID-функции достигаются в том числе за счёт создания файла журнала.

Несколько процессов или потоков могут одновременно без каких-либо проблем читать данные из одной базы. Запись в базу можно осуществить только в том случае, если никаких других запросов в данный момент не обслуживается; в противном случае попытка записи оканчивается неудачей, и в программу возвращается код ошибки. Другим вариантом развития событий является автоматическое повторение попыток записи в течение заданного интервала времени.

В комплекте поставки идёт также функциональная клиентская часть в виде исполняемого файла sqlite3, с помощью которого демонстрируется реализация функций основной библиотеки. Клиентская часть является кроссплатформенной утилитой командной строки.

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

Типы данных

SQLite поддерживает динамическое типизирование данных. Возможные типы полей: INTEGER, REAL, TEXT, BLOB.

Ограничения

Основной источник: Implementation Limits For SQLite

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

Во время компиляции библиотеки SQLite устанавливаются следующие ограничения, которые можно, при острой необходимости, увеличивать:

ОписаниеЗначениеКонстанта в исходнике
Максимальная длина строки или BLOB-поля1 000 000 000SQLITE_MAX_LENGTH
Максимальное количество колонок2 000SQLITE_MAX_COLUMN
Максимальная длина SQL-выражения1 000 000 000SQLITE_MAX_SQL_LENGTH
Максимальное количество таблиц в выражениях с JOIN64
Максимальная глубина дерева выражений1 000SQLITE_MAX_EXPR_DEPTH
Максимальное количество аргументов функции127SQLITE_MAX_FUNCTION_ARG
Максимальное количество термов в объединённом выражении с SELECT500SQLITE_MAX_COMPOUND_SELECT
Максимальная длина шаблона как аргумента операторов LIKE или GLOB50 000SQLITE_MAX_LIKE_PATTERN_LENGTH
Максимальное количество символов-заменителей в одном SQL-выражении999SQLITE_MAX_VARIABLE_NUMBER
Максимальная глубина рекурсии триггеров1 000SQLITE_MAX_TRIGGER_DEPTH
Максимальное количество присоединённых баз10SQLITE_MAX_ATTACHED
Максимальный размер страницы базы данных65 536SQLITE_MAX_PAGE_SIZE
Максимальное количество страниц в файле базы данных1 073 741 823SQLITE_MAX_PAGE_COUNT

На текущий момент[когда?] только значение SQLITE_MAX_PAGE_SIZE не может быть больше заданного по умолчанию. Таким образом, не изменяя SQLITE_MAX_PAGE_COUNT, можно сказать, что максимальный размер файла базы данных составляет примерно 140 ТБ (247 Б).

Некоторые ограничения можно менять в сторону уменьшения во время исполнения программы при помощи задания категории и соответствующего значения функции 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, Node.js, PHP, PureBasic[5], Tcl (средства для работы с Tcl включены в комплект поставки SQLite), Ruby, Haskell, Scheme, Smalltalk, Lua и Parser, а также ко многим другим. Полный список существующих средств размещён на странице проекта[6].

Простота и удобство встраивания SQLite привели к тому, что библиотека используется в браузерах, музыкальных плеерах и многих других программах.

В частности, SQLite используется в:

Многие программы поддерживают SQLite в качестве формата хранения данных (особенно в Mac OS и iOS, Android), в том числе:

См. также

Ссылки

Примечания

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии