![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Эта страница подчеркивает некоторые особенности SQLite, которые необычны и
которые делают SQLite отличающийся от многих других СУБД SQL. Нулевая конфигурация SQLite просто работает. Serverless См. также здесь.
Большинство СУБД SQL осуществляется как отдельный серверный процесс.
Программы, которые хотят получить доступ к базе данных, общаются с сервером,
используя некоторое межпроцессное взаимодействие
(как правило, TCP/IP), чтобы отправить запросы к серверу и
получить назад результаты. SQLite идет другим путем.
С SQLite процесс, который хочет получить доступ к базе данных, читает и пишет
непосредственно от файлов базы данных на диске.
Нет никакого посреднического серверного процесса.
Есть преимущества и недостатки в том, чтобы быть serverless.
Главное преимущество состоит в том, что нет никакого отдельного серверного
процесса, чтобы установить, настроить, инициализировать, управлять и
выполнять. Это одна причина, почему SQLite это ядро базы данных "нулевой
конфигурации". Программы, которые используют SQLite, не требуют никакой
административной поддержки подготовки ядра базы данных, прежде чем ими будут
управлять. Любая программа, которая в состоянии получить доступ к диску, в
состоянии использовать базу данных SQLite.
С другой стороны, ядро базы данных, которое использует сервер, может
обеспечить лучшую защиту от ошибок в клиентском приложении,
случайные указатели в клиенте не могут испортить память на сервере.
И потому что сервер это единственный постоянный процесс, он в состоянии
контролировать доступ к базе данных с большей точностью,
допуская более точные блокировки и лучший параллелизм.
Большинство СУБД SQL используют архитектуру клиент-сервер.
Из тех, которые являются serverless, SQLite единственный, который этот автор
знает, который позволяет многочисленным запросам
получить доступ к той же самой базе данных в то же время. Файл единой базы данных Другие базы данных SQL имеют тенденцию хранить данные в
большом числе файлов. Часто эти файлы находятся в стандартном местоположении,
к которому может получить доступ только само ядро базы данных.
Это делает данные более безопасными, но также и делает их недоступнее.
Некоторые базы данных SQL предоставляют возможность записи
непосредственно на диск и обхода файловой системы в целом.
Это обеспечивает добавленную производительность, но за счет значительной
сложности установки и обслуживания. Устойчивый кросс-платформенный файл базы данных Большинство других движков базы данных SQL требует, чтобы вы
восстановили базу данных, перемещаясь от одной платформы на другую,
а часто еще и обновились до более новой
версии программного обеспечения. Компактность Большинство других СУБД SQL намного более крупные, чем это.
IBM хвастается, что его недавно выпущенное ядро базы данных CloudScape
"всего" 2 МБ в файле .jar, порядок величины, больше, чем SQLite даже после
того, как это сжато! Firebird хвастается, что его клиентская библиотека
составляет только 350 КБ.
Это целый SQLite и даже не содержит ядро базы данных. Библиотека Berkeley DB
от Oracle эо 450 KB и это опускает поддержку SQL, предоставляя программисту
только работу с простыми парами ключ/значение. Явная типизация Насколько мы можем сказать, спецификация языка SQL позволяет использование
явной типизации. Тем не менее, большинство других СУБД SQL
со статическим контролем типов и таким образом, некоторые люди чувствуют, что
использование явной типизации это ошибка в SQLite. Но авторы SQLite чувствуют
очень сильно, что это особенность.
Использование явной типизации в SQLite преднамеренное проектное решение,
которое на практике сделало SQLite более надежным и легче в использовании,
особенно, когда используется в сочетании с языками программирования с
динамическим контролем типов, такими как Tcl и Python. Записи переменной длины SQLite напротив используют только размер дискового пространства, который
на самом деле нужен. Если вы храните отдельный символ в колонке VARCHAR(100),
то только единственный байт дискового пространства потребляется.
На самом деле два байта: есть некоторые издержки
в начале каждой колонки, чтобы сделать запись ее типа данных и длины.
У использования записей переменной длины SQLite есть много преимуществ.
Это приводит к меньшим файлам базы данных, очевидно. Это также делает базу
данных управляемой быстрее, так как есть меньше информации.
Использование переменной длины позволяет SQLite использовать явную
типизацию вместо статического контроля типов. Удобочитаемый исходный код SQL-операторы собирают в код виртуальной машины Использование виртуальной машины в SQLite было большой выгодой для
развития библиотеки. Виртуальная машина обеспечивает свежее, четко
определенное соединение между фронтендом SQLite (часть, которая разбирает
SQL-операторы и производит код виртуальной машины) и бэкендом (часть, которая
выполняет код виртуальной машины и вычисляет результат).
Виртуальная машина позволяет разработчикам видеть ясно и в легко
удобочитаемой форме, что SQLite пытается сделать с каждым запросом, который
это собирает, что является огромной помощью в отладке. В зависимости от того,
как это собрано, у SQLite также есть способность отслеживания выполнения
виртуальной машины, печатая каждую инструкцию по виртуальной
машине и ее результат. Public domain Есть другие движки базы данных SQL с либеральными лицензиями, которые
позволяют коду широко и свободно использоваться. Но теми СУБД
все еще управляет закон об авторском праве. SQLite отличается в том, что
закон об авторском праве просто не применяется.
Файлы исходного кода для других СУБД SQL, как правило, начинаются с
комментария, описывающего ваши законные права рассмотреть и скопировать тот
файл. Исходный код SQLite не содержит лицензии, так как им не управляет
авторское право. Вместо лицензии исходный код
SQLite предлагает благословение:
database engines typically begin
Расширения языка SQL
Choose any three.
Отличительные особенности SQLite
SQLite не должен быть "установлен", прежде чем он будет
использоваться. Нет никакой процедуры "установки".
Нет никакого серверного процесса, который должен начинаться, останавливаться
или формироваться. Нет никакой потребности в администраторе, чтобы создать
новый экземпляр базы данных или назначить права доступа пользователям.
SQLite не использует конфигурационных файлов. Ничто не должно быть сделано,
чтобы сказать системе, что SQLite работает.
Никакие действия не требуются, чтобы приходить в себя после системной
катастрофы или перебоя в питании. Нет ничего, чтобы расследовать.
База данных SQLite это единственный обычный дисковый файл,
который может быть расположен где угодно в иерархии каталогов.
Если SQLite может прочитать дисковый файл тогда, это может прочитать что-либо
в базе данных. Если дисковый файл и его каталог
перезаписываемы, то SQLite может изменить что-либо в базе данных.
Файлы базы данных могут легко быть скопированы на карту памяти USB или
посланы по электронной почте.
Формат файла SQLite кросс-платформенный. Файл базы данных,
написанный на одной машине, может копироваться
и использоваться на различной машине с различной архитектурой.
Обратный порядок байтов или прямой порядок байтов, 32 бита или 64 бита не
имеют значения. Все машины используют тот же самый формат файла.
Кроме того, разработчики обязались сохранять стабильность формата файла и
обратную совместимость таким образом, более новые версии SQLite могут
прочитать и писать более старые файлы базы данных.
Когда оптимизировано для размера, целая библиотека SQLite
меньше чем 500 КБ в размере
(как измерено на ix86, используя утилиту "size" из пакета компилятора GNU).
Ненужные опции могут быть отключены во время компиляции, чтобы далее
уменьшить размер библиотеки к менее, чем 300 КБ.
Большинство СУБД SQL использует статический контроль типов.
Тип данных связан с каждой колонкой в таблице и только значениям
этого конкретного типа данных позволяют быть сохраненными в той колонке.
SQLite ослабляет это ограничение при помощи явной типизации.
В явной типизации тип данных это свойство значения, не колонки, в которой
оно сохранено. SQLite таким образом позволяет пользователю хранить любое
значение любого типа данных в любой колонке, независимо от заявленного типа
той колонки. Есть некоторые исключения к этому правилу: колонка INTEGER
PRIMARY KEY может только сохранить целые числа. SQLite пытается привести
значения в заявленный тип данных колонки, когда может.
Большинство других СУБД SQL ассигнуют установленный размер
дискового пространства для каждой строки в большинстве таблиц.
Они применяют специальные уловки для обработки BLOB и CLOB, который может
иметь дико переменную длину. Но для большинства таблиц, если вы объявляете,
что колонка VARCHAR(100), ядро базы данных ассигнует 100 байт дискового
пространства независимо от того, сколько информации вы на самом деле
храните в той колонке.
Исходный код SQLite разработан, чтобы быть удобочитаемым и
доступным для среднего программиста. Все процедуры и структуры данных и много
автоматических переменных тщательно прокомментированы с полезной информацией
о том, что они делают. Шаблонный комментарий опущен.
Каждый движок базы данных SQL собирает каждый SQL-оператор в
некоторую внутреннюю структуру данных, которая используется, чтобы выполнить
работу. Но в большинстве движков SQL внутренняя структура данных это сложная
паутина связанных структур и объектов. В SQLite собранная форма запроса
это короткая программа на машинном языке как представление.
Пользователи базы данных могут рассмотреть этот
язык виртуальной машины,
предварительно указав перед запросом ключевое слово
EXPLAIN.
Исходный код для SQLite находится в общественном достоянии.
Никакая претензия авторского права не предъявлена ни на какой части основного
исходного кода. Документация и тестовый код это другой разговор, некоторыми
разделами документации и испытательной логики управляют лицензии с открытым
исходным кодом. Все участники основного программного обеспечения SQLite
подписали показания под присягой, определенно отрицающие любой интерес
авторского права к коду. Это означает, что кто-либо в состоянии по закону
сделать что-либо, что они хотят с исходным кодом SQLite.
May you do good and not evil
May you find forgiveness for yourself and forgive others
May you share freely, never taking more than you give.
SQLite предоставляет много улучшений языка SQL, не обычно
найденные в других ядрах базы данных. Ключевое слово EXPLAIN и явная
типизация были уже упомянуты выше. SQLite также предоставляет такие запросы,
как REPLACE и
ON CONFLICT, которые допускают добавленный
контроль над разрешением ограничительных конфликтов. SQLite поддерживает
команды ATTACH и
DETACH, которые позволяют многократным
независимым базам данных использоваться вместе в том же самом запросе.
SQLite определяет API, которые позволяют пользователю добавлять новые
функции SQL и
последовательности сопоставления.