SQLite |
Автор: admin Просмотров: 3305 Комментарии:
Добавлен: 22 декабря 2015
Обновлено: 24.12.2015 - 15:18
Компактные встраиваемые реляционные базы данных, содержащиеся внутри библиотеки C.
В отличие от многих других систем управления базами данных, SQLite не является клиент-сервером базы данных. Скорее он встроен в конечный программы.
SQLite является ACID-совместимым и реализует большую часть SQL стандарта, используя динамически и слабо типизированный SQL синтаксис, что не гарантирует целостность домена.
Это популярный выбор в качестве встроенной базы данных для локального хранилища в прикладном программном обеспечении, таком как например веб-браузер. Это возможно, самый распространённый движок баз данных, так как он используется в операционных системах, встраиваемых устройствах и в нескольких популярных браузерах. SQLite имеет привязки для многих языков программирования.
Дизайн SQLite
В отличие от клиент-серверных систем управления базами данных, движок SQLite не имеет автономных процессов с которыми общается прикладная программа. Вместо этого, библиотека SQLite является связанной и таким образом является неотъемлемой частью прикладной программы. Библиотеку можно вызывать динамически. Приложение использует возможности SQLite путём простых вызовов функций, которые снижают задержки доступа к базе данных: вызовы функций в рамках одного процесса являются более эффективными, чем связи между процессами. SQLite хранит всю базу данных (определения, таблицы, индексы и сами данные) в одном кросс-платформенном файле на хост-машине. Он реализует эту простую конструкцию блокируя весь файл базы данных на запись. Операции чтения могут быть многозадачными, но запись выполняется только последовательно.
В связи с безсерверным дизайном, приложения SQLite требуют меньше настроек чем клиент-серверные базы. SQLite называют "zero-conf", поскольку он не требует управления сервисами (например, сценарии запуска) или контроля доступа на основе GRANT и паролей. Контроль доступа осуществляется с помощью разрешений файловой системы, данных самому файлу базы данных. Базы данных в клиент-серверных системах используют разрешения файловой системы, которые дают доступ к файлам баз данных только в процессе демона.
Ещё одно преимущество безсерверного дизайна, что несколько процессов могут вводить записи в базу. В серверных базах данных, процессы записи подключаются к одному демону, который способен обрабатывать свои блокировки внутри. SQLite полагается на блокировки файловой системы. В то же время он имеет меньше информации из других процессов, которые имеют доступ к базе данных. Таким образом, SQLite не является предпочтительным выбором для интенсивной записи. Тем не менее, для простых запросов с небольшими конкуренциями, SQLite выигрывает по производительности избегая провождения своих данных другому процессу.
SQLite использует PostgreSQL в качестве эталонной платформы. “What would PostgreSQL do” is used to make sense of the SQL standard. Одно из основных отклонений что за исключением первичных ключей, SQLite не применяет проверку типа. Тип значения является динамическим, а не строго ограниченым в схеме (хотя схема вызовет преобразование при хранении, если такое преобразование возможно обратимое). SQLite стремится следовать правилу Постела.
Особенности SQLite
SQLite реализует большую часть стандарта SQL-92 для SQL, но ему не хватает некоторых функций. Например, триггеры частично поддерживаются, но невозможно делать записи в виды (однако поддерживается INSTEAD OF триггеров, которые обеспечивают эту возможность. Сложные запросы поддерживаются, но ALTER TABLE ограничен и не может изменять и удалять столбцы.
SQLite использует необычную систему типов для SQL совместимых СУБД. Вместо назначения типа для столбца, как в большинстве систем баз данных SQL, типы назначаются отдельным значениям. SQLite в плане языка динамически типизирован. Кроме этого, он довольно слаб в случае с Perl: можно вставить строку в качестве целого столбца (хотя SQLite сначала попытается конвертировать строку в целое число, если предпочтительный тип столбца является целым числом). Это добавляет гибкости колонкам, особенно когда они связаны с динамически типизированным скриптовым языком. Тем не менее, этот метод не подходит для других продуктов SQL. Часто SQLite критикуют за систему типов с недостатками механизма целостности данных статически типизированных столбцов от других продуктов. Сайт SQLite описывает режим "strict affinity", но эту возможность ещё не добавили. Тем не менее, он может быть реализован с ограничениями: CHECK(typeof(x)='integer') .
Несколько процессов или потоков могут получить доступ к одной и той же базе данных одновременно. Несколько доступов на чтение могут быть удовлетворены одновременно. Доступ для записи может быть выполнено только если другие доступы в настоящее время не обслуживаются. В противном случае, доступ на запись завершается с кодом ошибки или может автоматически повторятся в зависимости от настроенного таймаута. Эта конкурентная ситуация с доступом изменится при работе с временными таблицами. В выпуске 3.7 это ограничение ослаблено, когда включено упреждающее планирование (Write-ahead logging), возможно одновременно писать и читать.
SQLite версии 3.7.4 впервые увидел добавление модуля FTS4 (полнотекстовый поиск), который включает усовершенствования по сравнению с старым модулем FTS3. FTS4 позволяет пользователям выполнять полнотекстовый поиск документов, на подобии документов в поисковых системах. Начиная с выпуска 3.8.2 поддерживается создание таблиц без ROWID, которые обеспечивают пространство и производительность. В 3.8.3 появились общие табличные выражения.
Полноценные функции Unicode являются дополнительными.
Разработка и распространение SQLite
Разработчики SQLite используют Fossil, распределённую систему управления выпусками, которая сама по себе построена на базе SQLite.
Автономный инструмент командной строки из SQLite предназначен для создания баз данных, создания таблиц, вставления и изменения строк, выполнения запросов и управления файлом базы данных. Этот инструмент представляет собой один исполняемый файл на хост-машине. Он также служит в качестве примера для написания приложений, использующих библиотеки SQLite.
В SQLite автоматизированны регрессивные тестирования перед каждым выпуском. В рамках проверки выпуска выполняется более двух миллионов тестов.
Адоптации SQLite
Языки программирования
SQLite имеет привязки для большого количества языков программирования, в том числе:
AutoIt, BASIC, C, C#, C++, Clipper//Harbour, Common Lisp, Curl, D, Delphi, Elixir, F#, FreeBASIC, Free Pascal, Go, Haskell, Haxe, Java (на JVM и DVM), JavaScript, Julia, Livecode, Lua, newLisp, Nim, Objective-C (на OS X и iOS), OpenLisp. OCaml, Perl, PHP, Pike, PureBasic, Python, R, REALbasic, REBOL, Ruby, Scheme, Smalltalk, Swift (на OS X и iOS), Tcl, Visual Basic, Xojo.
Промежуточные
- ADO.NET адаптер, изначально разработанный Робертом Симпсоном, разрабатывается совместно с разработчиками SQLite начиная с апреля 2010 года.
- ODBC драйвер, рекомендованный метод соединения SQLite с OpenOffice.org.
- COM (ActiveX) обёртка делает SQLite доступным на Windows для JScript и VBScript. Добавляет базы данных SQLite в HTML Applications (HTA).
- XULRunner использует SQLite.
Веб-браузеры
- Браузеры Google Chrome, Opera, Safari и Android Browser хранят и извлекают информацию из SQLite.
- Mozilla Firefox и Mozilla Thunderbird хранят различные данные конфигурации (закладки, куки, контакты и т.д.) в внутренне управляемых базах данных SQLite и даже предлагают надстройку для управления SQLite базами данных.
Фреймворки веб-приложений
- Bugzilla, база данных ошибок может использовать SQLite для хранения данных и настроек.
- Django, веб-фреймворк, работает с SQLite 3.0 по умолчанию.
- Drupal начиная с версии 7, система управления контентом для создания веб-сайтов и блогов, имеет опцию установки с помощью SQLite.
- Trac, Ruby on Rails, web2py по умолчанию используют SQLite.
Любые другие приложения
- Skype, широко известное приложение, которое использует SQLite.
- Adobe Systems использует SQLite, как свой формат файла в Adobe Photoshop Lightroom, в стандартной базе данных в Adobe AIR, и внутри Adobe Reader.
- Service Management Facility (SMF), используемый для управления сервисами в операционных системах Solaris и OpenSolaris, использует SQLite.
- Flame, программа для кибершпионажа, использует SQLite для хранения собранных данных.
Операционные системы
SQLite включена по умолчанию в:
Blackberry в BlackBerry 10 OS, Symbian OS, Nokia Maemo, Google, Android, Linux Foundation в MeeGo
LG, WebOS, NetBSD, OpenBSD,
FreeBSD, с десятого выпуска используется в основной системы управления пакетами.
illumos, Oracle Solaris 10, Tizen, Windows 10,
Apple принял SQLIte в качестве дополнения к OS X's Core Data API от первоначального выпуска Mac OS X 10.4, а также для управления видео и песнями, и в iOS для хранения текстовых сообщений на iPhone.
Порты SQLite
SQLite была портирован на JavaScript под именем sql.js. Это было сделано путем прогона исходного кода SQLite через компилятор Emscripten.
https://en.wikipedia.org/wiki/SQLite
------------------------
ТРИО теплый пол отзыв
Заработок на сокращении ссылок
Earnings on reducing links
Код PHP на HTML сайты
Категория: Базы данных
Комментарии |