SQLite - SQLite

SQLite
SQLite370.svg
Разработчики) Д. Ричард Хипп
Первый выпуск 17 августа 2000 г . ;
21 год назад
 ( 2000-08-17 )
Стабильный выпуск 3.36.0  Отредактируйте это в Викиданных(18 июня 2021 г . ; 3 месяца назад ) [±] ( 18 июня 2021 г. )
Репозиторий
Написано в C
Операционная система Кроссплатформенность
Размер 699  КБ
Тип СУБД ( встроенная )
Лицензия Всеобщее достояние
Веб-сайт SQLite .org Отредактируйте это в Викиданных
Формат файла базы данных SQLite
Расширение имени файла
.sqlite3, .sqlite, .db
Тип интернет-СМИ application/vnd.sqlite3
Магическое число 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00( ASCII с нулевым символом в конце "Формат SQLite 3")
Первый выпуск 2004-06-18
Открытый формат ? да ( общественное достояние )
Веб-сайт www .sqlite .org / fileformat2 .html

SQLite ( / ˌ ɛ с ˌ к Ju ˌ ɛ л т / , / с я к ш ə ˌ л т / ) является реляционная система управления базами данных (СУБД) , содержащихся в C библиотеке . В отличие от многих других систем управления базами данных, SQLite не является механизмом базы данных клиент-сервер . Скорее, он встроен в конечную программу.

SQLite обычно следует синтаксису PostgreSQL . SQLite использует динамически и слабо типизированный синтаксис SQL , который не гарантирует целостность домена . Это означает, что можно, например, вставить строку в столбец, определенный как целое число. SQLite попытается преобразовать данные между форматами, где это необходимо, в данном случае строку «123» в целое число, но не гарантирует такие преобразования и сохранит данные как есть, если такое преобразование невозможно.

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

Дизайн

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

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

Из-за бессерверной конструкции приложения SQLite требуют меньшей настройки, чем клиент-серверные базы данных. SQLite называется zero-conf, потому что он не требует управления службами (например, сценариев запуска) или контроля доступа на основе GRANT и паролей. Управление доступом осуществляется с помощью разрешений файловой системы, предоставленных самому файлу базы данных. Базы данных в клиент-серверных системах используют разрешения файловой системы, которые предоставляют доступ к файлам базы данных только процессу-демону.

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

SQLite использует PostgreSQL в качестве эталонной платформы. «Что сделал бы PostgreSQL» используется для понимания стандарта SQL. Одним из основных отклонений является то, что, за исключением первичных ключей , SQLite не требует проверки типов ; тип значения является динамическим и не ограничивается строго схемой (хотя схема инициирует преобразование при сохранении, если такое преобразование потенциально обратимо). SQLite стремится следовать правилам Постела .

История

Д. Ричард Хипп разработал SQLite весной 2000 года, работая в General Dynamics по контракту с ВМС США . Хипп разрабатывал программное обеспечение, используемое для системы контроля повреждений на борту эсминцев с управляемыми ракетами , которые первоначально использовали HP-UX с серверной частью базы данных IBM Informix . SQLite начинался как расширение Tcl .

Цели разработки SQLite заключались в том, чтобы позволить программе работать без установки системы управления базами данных и без использования администратора базы данных . Hipp основал синтаксис и семантику PostgreSQL 6.5. В августе 2000 года была выпущена версия 1.0 SQLite с хранилищем на основе gdbm (GNU Database Manager). SQLite 2.0 заменил gdbm пользовательской реализацией B-дерева , добавив возможности транзакций . SQLite 3.0, частично финансируемый America Online , добавил интернационализацию , манифестную типизацию и другие важные улучшения.

В 2011 году Хипп объявил о своих планах добавить интерфейс NoSQL (управление документами, выраженными в JSON ) к базам данных SQLite и разработать UnQLite , встраиваемую базу данных, ориентированную на документы .

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

Функции

SQLite реализует большую часть стандарта SQL-92 для SQL , но не имеет некоторых функций. Например, он только частично предоставляет триггеры и не может выполнять запись в представления (однако он предоставляет триггеры INSTEAD OF, которые обеспечивают эту функциональность). Поддержка операторов ALTER TABLE ограничена.

SQLite использует необычную систему типов для SQL-совместимой СУБД: вместо присвоения типа столбцу, как в большинстве систем баз данных SQL, типы присваиваются отдельным значениям; с точки зрения языка он динамически типизирован . Более того, он слабо типизирован некоторыми из тех же способов, что и Perl : можно вставить строку в целочисленный столбец (хотя SQLite сначала попытается преобразовать строку в целое число, если предпочтительный тип столбца целочисленный). Это добавляет гибкости столбцам, особенно когда они привязаны к динамически типизированному языку сценариев. Однако этот метод нельзя переносить на другие продукты SQL. Распространенной критикой является то, что системе типов SQLite не хватает механизма целостности данных, обеспечиваемого статически типизированными столбцами в других продуктах. На веб-сайте SQLite описан режим «строгой привязки», но эта функция еще не добавлена. Однако его можно реализовать с такими ограничениями, как CHECK(typeof(x)='integer').

Таблицы обычно включают скрытый столбец индекса rowid , что обеспечивает более быстрый доступ. Если база данных содержит столбец первичного ключа , , SQLite, как правило , оптимизировать его, рассматривая его в качестве псевдонима для ROWID , в результате чего содержимое будет храниться в строго типизированных 64-битном подписанного целого и изменение его поведения , чтобы быть несколько , как авто- увеличивающийся столбец. В будущих версиях SQLite может быть включена команда для анализа того, имеет ли столбец поведение, подобное rowid, чтобы отличать эти столбцы от слабо типизированных целочисленных первичных ключей без автоинкремента.

SQLite с полной функцией Unicode не является обязательным.

Несколько компьютерных процессов или потоков могут одновременно обращаться к одной и той же базе данных. Параллельно могут выполняться несколько доступов для чтения. Доступ для записи может быть удовлетворен только в том случае, если в настоящее время не обслуживаются никакие другие доступы. В противном случае доступ на запись завершится сбоем с кодом ошибки (или может быть автоматически повторен, пока не истечет настраиваемый тайм-аут). Эта ситуация одновременного доступа изменится при работе с временными таблицами. Это ограничение ослаблено в версии 3.7, когда включено ведение журнала с упреждающей записью (WAL), разрешающее одновременное чтение и запись.

Версия 3.6.19, выпущенная 14 октября 2009 г., добавила поддержку ограничений внешнего ключа.

В SQLite версии 3.7.4 впервые был добавлен модуль FTS4 (полнотекстовый поиск), который имеет усовершенствования по сравнению со старым модулем FTS3. FTS4 позволяет пользователям выполнять полнотекстовый поиск документов аналогично тому, как поисковые системы выполняют поиск на веб-страницах. В версии 3.8.2 добавлена ​​поддержка создания таблиц без rowid , что может улучшить пространство и производительность. Поддержка общих табличных выражений была добавлена ​​в SQLite в версии 3.8.3. 3.8.11 добавлен новый поисковый модуль под названием FTS5, более радикальные (по сравнению с FTS4) изменения требовали увеличения версии.

В 2015 году с расширением json1 и новыми интерфейсами подтипов в SQLite версии 3.9 было введено управление содержимым JSON .

Согласно версии 3.33.0, максимальный поддерживаемый размер базы данных составляет 281 ТБ.

Разработка и распространение

Код SQLite размещен в Fossil , распределенной системе контроля версий, которая сама построена на базе данных SQLite.

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

SQLite использует автоматическое регрессионное тестирование перед каждым выпуском. В рамках проверки релиза выполняется более 2 миллионов тестов. Начиная с выпуска SQLite 3.6.17 от 10 августа 2009 г., выпуски SQLite имеют 100% покрытие ветвями тестирования, что является одним из компонентов покрытия кода . Тесты и средства тестирования частично являются общественным достоянием и частично проприетарными .

Известные применения

ПО промежуточного слоя

  • Адаптер ADO.NET , первоначально разработанный Робертом Симпсоном, поддерживается совместно с разработчиками SQLite с апреля 2010 года.
  • Драйвер ODBC был разработан и поддерживается отдельно Кристианом Вернером. Драйвер ODBC Вернера - рекомендуемый метод подключения для доступа к SQLite из OpenOffice.org .
  • Оболочка COM ( ActiveX ), делающая SQLite доступным в Windows для языков сценариев, таких как JScript и VBScript . Это добавляет возможности базы данных SQLite в приложения HTML (HTA).

Веб-браузеры

  • Браузеры Google Chrome , Opera , Safari и Android Browser позволяют хранить информацию и извлекать ее из базы данных SQLite в браузере, используя технологию Web SQL Database , хотя она быстро устаревает (а именно заменяется IndexedDB ) . Внутренне эти браузеры на основе Chromium используют базы данных SQLite для хранения данных конфигурации, таких как история посещений сайта, файлы cookie, история загрузок и т. Д.
  • Mozilla Firefox и Mozilla Thunderbird хранят различные данные конфигурации (закладки, файлы cookie, контакты и т. Д.) Во внутренне управляемых базах данных SQLite. До версии 57 Firefox ( «Firefox Quantum» ) существовала сторонняя надстройка, которая использовала API, поддерживающий эту функцию, для предоставления пользовательского интерфейса для управления произвольными базами данных SQLite.
  • Некоторые сторонние надстройки могут использовать API JavaScript для управления базами данных SQLite.

Фреймворки веб-приложений

Различный

  • Adobe Systems использует SQLite в качестве формата файла в Adobe Photoshop Lightroom , стандартной базе данных в Adobe AIR , а также внутри Adobe Reader .
  • Как и в большинстве программ Apple, в Apple Photos для внутренних целей используется SQLite.
  • Audacity использует SQLite в качестве формата файла, начиная с версии 3.0.0.
  • Evernote использует SQLite для хранения своего локального репозитория базы данных в Windows.
  • Skype
  • Средство управления услугами , используемое для управления услугами в операционных системах Solaris и OpenSolaris.
  • Flame (вредоносное ПО)
  • Система спутниковой навигации BMW IDrive
  • Системы TomTom GPS для картографических данных NDS

Операционные системы

SQLite по умолчанию включен в:

Поддержка языков программирования

Существуют языковые привязки к SQLite для большого количества языков программирования , в том числе:

Смотрите также

использованная литература

Цитаты

Источники

внешние ссылки