Разработчик (и) | D. Ричард Хипп |
---|---|
Первый выпуск | 17 августа 2000 г.;. 20 лет назад (2000-08-17) |
Стабильный выпуск | 3.33.0 (14 августа 2020 г.; 2 месяца назад (2020-08-14)) |
Репозиторий | |
Написано на | C |
Операционной системе | Кросс-платформенность |
Размер | 699 КиБ |
Тип | СУБД (встроенная ) |
Лицензия | Общественное достояние |
Веб-сайт | sqlite.org |
Расширение имени файла | .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 ) |
Website | sqlite.org/fileformat2.html |
SQLite (, ) - это система управления реляционными базами данных (RDBMS), содержащаяся в C библиотеке. В отличие от многих других систем управления базами данных, SQLi te не является ядром базы данных клиент-сервер. Скорее, он встроен в конечную программу.
SQLite соответствует ACID и реализует большую часть стандарта SQL, обычно следуя синтаксису 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 стремится следовать правилу Постела.
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% тестовое покрытие ветвей, что является одним из компонентов покрытия кода. Тесты и тестовые программы частично являются общедоступными, а частично проприетарными..
SQLite по умолчанию включен в:
Языковые привязки к SQLite для большого количества программирования la Существуют выражения, в том числе:
На Викискладе есть материалы, связанные с SQLite. |