SQLite

SQLite — это быстрая и легкая встраиваемая однофайловая СУБД на языке C, которая не имеет сервера и позволяет хранить всю базу локально на одном устройстве. Для работы SQLite не нужны сторонние библиотеки или службы.

Логотип SQLite

Понятие «встраиваемый» означает, что СУБД не использует парадигму клиент-сервер. Движок SQLite —не отдельно работающий процесс, с которым взаимодействует программа, а библиотека. Программа компонуется с ней, и движок служит составной частью программы. В качестве протокола обмена применяются вызовы функций (API) библиотеки SQLite.

Применение SQLite

База данных — это набор структурированной информации. Для ее изменения требуются системы управления — СУБД. Как и любая СУБД, SQLite позволяет записывать новую и запрашивать существующую информацию, изменять ее, настраивать доступ.

Благодаря свойствам SQLite применяется:

  • на сайтах с низким и средним трафиком;
  • в локальных однопользовательских, мобильных приложениях или играх, не предназначенных для масштабирования;
  • в программах, которые часто выполняют прямые операции чтения/записи на диск;
  • в приложениях для тестирования бизнес-логики.

SQLite не требует администрирования и работает на мобильных устройствах, игровых приставках, телевизорах, беспилотных летательных аппаратах, камерах, автомобильных мультимедийных системах и т.д. СУБД использует множество программ: Firefox, Chrome, Safari, Skype, XnView, AIMP, Dropbox, Viber и другие. 

Как работает SQLite

Большинство СУБД используют клиент-серверную архитектуру: данные хранятся и обрабатываются на сервере, а запросы к нему посылает клиент. «Клиент» — это часть программы, с которой взаимодействует пользователь. «Сервером» может быть и отдельный процесс на том же компьютере (так называемый демон), и стороннее устройство, как в случае с сайтами.

SQLite устроена иначе и не имеет сервера. Это значит, что все данные программное обеспечение хранит на одном устройстве. СУБД встраивается в приложение и работает как его составная часть. Если установить на компьютер программу, использующую SQLite, то база данных тоже будет храниться на нем же. Формат базы — один текстовый файл, который можно прочитать на любой платформе. Такой подход повышает производительность и скорость работы.

Работать с SQLite можно как с библиотекой или через SQLite3.

Что такое SQLite3

SQLite3 — это консольная утилита для работы с SQLite от разработчиков СУБД. Она запускается и работает в командной строке, в консоли операционной системы. Можно скачать версии для Windows, Mac OS и Linux.

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

В SQLite3 можно писать SQL-код: утилита отправит запрос к ядру, получит и отобразит результат.

В чем отличия SQLite и SQL

SQL — язык запросов, с помощью которого специалисты отдают команды для управления базой данных.

SQLite — СУБД, программное обеспечение, которое поддерживает этот язык. Человек, работающий с SQLite, будет использовать для обращения к базе язык запросов SQL. Но сама по себе СУБД намного шире, чем просто обертка для языка, и предоставляет множество других функций.

Подробнее про SQL можно прочитать в статье.

Преимущества SQLite

Высокая скорость. Благодаря особенностям архитектуры SQLite работает быстро, особенно на чтение. Компоненты СУБД встроены в приложение и вызываются в том же процессе. Поэтому доступ к ним быстрее, чем при взаимодействии между разными процессами.

Хранение данных в одном файле. База данных состоит из табличных записей, связей между ними, индексов и других компонентов. В SQLite они хранятся в едином файле (database file), который находится на том же устройстве, что и программа. Чтобы при работе не возникало ошибок, файл блокируется для сторонних процессов перед записью. Раньше это приводило к тому, что записывать данные в базу мог только один процесс единовременно. Но в новых версиях это решается перенастройкой режима работы СУБД.

Минимализм. Создатели SQLite пользуются принципом «минимального полного набора». Из всех возможностей SQL в ней есть наиболее нужные. Поэтому SQLite отличают малый размер, простота решений и легкость администрирования. Для повышения базовой функциональности можно использовать стороннее программное обеспечение и расширения.

Надежность. Код на 100% покрыт тестами. Это означает, что протестирован каждый компонент ПО. Поэтому SQLite считается надежной СУБД с минимальным риском непредсказуемого поведения.

Нулевая конфигурация. Перед использованием СУБД не нужна сложная настройка или длительная установка. Для решения большинства задач ей можно пользоваться «из коробки», без установки дополнительных компонентов.

Малый размер. Полностью сконфигурированный SQLite со всеми настройками занимает меньше 400 Кб. Если использовать СУБД без дополнительных компонентов, размер можно уменьшить до 250 Кб. Он зависит только от количества загруженной информации. Несмотря на малый размер, SQLite поддерживает большинство функций стандарта SQL2 и имеет ряд собственных.

Доступность. SQLite находится в публичном доступе. На ее использование нет правовых ограничений, а владельцем считается общество. Можно открывать, просматривать и изменять исходный код установленного ПО.

Кроссплатформенность. СУБД подходит для UNIX-подобных систем, MacOS и Windows.

Автономность. Система независима от стороннего ПО, библиотек или фреймворков. Чтобы приложение с базой на SQLite работало, дополнительные компоненты не требуются. Также не обязателен доступ в интернет: вся база хранится на устройстве, получить данные можно локально.

Недостатки SQLite

Ограниченная поддержка типов данных. SQLite поддерживает только четыре типа данных, которые реализованы в SQL:

  • INTEGER — целое число;
  • REAL — дробное число;
  • TEXT — текст;
  • BLOB — двоичные данные.

Также существует особое значение NULL — отсутствие данных.

Отсутствие хранимых процедур. Так называются блоки кода на SQL, которые сохраняются в базу данных. Хранимые процедуры можно вызывать как отдельные функции, и это удобно, если нужно последовательно выполнить несколько однотипных действий. Но SQLite их не поддерживает из-за особенностей архитектуры.

Ограничения в применении. Отсутствие сервера — преимущество и недостаток одновременно. Без сервера возможности СУБД меньше. Например, к одной базе не смогут обращаться несколько разных устройств.

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

Отсутствие бесплатной техподдержки. Стоимость профессиональной технической поддержки от разработчиков — от $1500 в год. Чтобы получить информацию бесплатно, потребуется пользоваться форумами и руководствами от пользователей, а также официальной документацией.

Отсутствие встроенной поддержки Unicode. Unicode — это популярный стандарт кодирования символов. Он включает практически все существующие знаки и буквы, поэтому считается самым распространенным в мире. Без его поддержки приложение не сможет корректно работать с кириллицей, иероглифами и многими другими символами. SQLite «из коробки» не поддерживает Unicode, его нужно настраивать отдельно. Это может вызвать сложности с локализацией.

Как начать работу с SQLite

Начать работать с системой можно двумя способами:

  1. Подключить СУБД в качестве библиотеки к любому поддерживаемому языку программирования. Используются API, которые могут различаться у разных языков и фреймворков. В некоторых языках программирования, например в Python, поддержка SQLite есть по умолчанию. Также SQLite включена в операционные системы, например в мобильные ОС и Windows 10.
  2. Скачать вместе с утилитой SQLite3.

Освойте новую профессию

(рейтинг: 5, голосов: 3)
Добавить комментарий