SQLite

редактировать
Бессерверная система управления реляционными базами данных (СУБД)
SQLite
SQLite370.svg
Разработчик (и) D. Ричард Хипп
Первый выпуск17 августа 2000 г.;. 20 лет назад (2000-08-17)
Стабильный выпуск 3.33.0 (14 августа 2020 г.; 2 месяца назад (2020-08-14))
Репозиторий Измените это в Wikidata
Написано наC
Операционной системе Кросс-платформенность
Размер 699 КиБ
Тип СУБД (встроенная )
Лицензия Общественное достояние
Веб-сайтsqlite.org Измените это в Wikidata
Формат файла базы данных 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»)
Первоначальный выпуск18.06.2004
Открытый формат ?да (Public Domain )
Websitesqlite.org/fileformat2.html

SQLite (, ) - это система управления реляционными базами данных (RDBMS), содержащаяся в C библиотеке. В отличие от многих других систем управления базами данных, SQLi te не является ядром базы данных клиент-сервер. Скорее, он встроен в конечную программу.

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

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

Содержание

  • 1 Дизайн
  • 2 История
  • 3 Возможности
  • 4 Разработка и распространение
  • 5 Известные применения
    • 5.1 Промежуточное ПО
    • 5.2 Веб-браузеры
    • 5.3 Структуры веб-приложений
    • 5.4 Разное
    • 5.5 Операционные системы
  • 6 Поддержка языков программирования
  • 7 См. Также
  • 8 Ссылки
    • 8.1 Цитаты
    • 8.2 Источники
  • 9 Внешние ссылки

Дизайн

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

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

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

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

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

История

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

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

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

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

Функции

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

SQLite использует необычную систему типов для SQL- совместимая СУБД: вместо присвоения столбцу типа типа, как в большинстве систем баз данных SQL, типы присваиваются отдельным значениям; с точки зрения языка это динамически типизировано. Более того, он слабо типизирован некоторыми из тех же способов, что и Perl : можно вставить строку в столбец integer (хотя 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.

В 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% тестовое покрытие ветвей, что является одним из компонентов покрытия кода. Тесты и тестовые программы частично являются общедоступными, а частично проприетарными..

Notable использует

Middleware

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

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

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

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

Различные

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

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

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

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

См. также

  • Портал бесплатного программного обеспечения с открытым исходным кодом

Ссылки

Цитаты

Источники

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

На Викискладе есть материалы, связанные с SQLite.
Последняя правка сделана 2021-06-06 04:10:56
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте