SQLite

Продукт
Разработчики: Ричард Хипп
Дата последнего релиза: 2016/08/09
Технологии: СУБД

Содержание


СТАТЬИ (2)

О продукте

SQLite — облегченная встраиваемая реляционная база данных. Исходный код библиотеки передан в общественное достояние. В 2005 году проект получил награду Google-O’Reilly Open Source Awards.

SQLite не использует парадигму клиент-сервер, то есть движок SQLite не является отдельно работающим процессом, с которым взаимодействует программа, а предоставляет библиотеку, с которой программа компонуется и движок становится составной частью программы. Таким образом, в качестве протокола обмена используются вызовы функций (API) библиотеки SQLite. Такой подход уменьшает накладные расходы, время отклика и упрощает программу. SQLite хранит всю базу данных (включая определения, таблицы, индексы и данные) в единственном стандартном файле на том компьютере, на котором исполняется программа. Простота реализации достигается за счёт того, что перед началом исполнения транзакции записи весь файл, хранящий базу данных, блокируется; ACID-функции достигаются в том числе за счёт создания файла журнала.

Несколько процессов или потоков могут одновременно без каких-либо проблем читать данные из одной базы. Запись в базу можно осуществить только в том случае, если никаких других запросов в данный момент не обслуживается; в противном случае попытка записи оканчивается неудачей, и в программу возвращается код ошибки. Другим вариантом развития событий является автоматическое повторение попыток записи в течение заданного интервала времени.

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

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

Версии

SQLite 3.7.0

Изменения:

  • Для корректной работы в системах без ftruncate () размер БД сохраняется в заголовке.
  • Дерективы GROUP BY и ORDER BY не будут принимать значение (noop) при указании друг на друга.
  • Функция sqlite3_db_status (), код возврата SQLITE_DBSTATUS_CACHE_USED
  • Ускорена обработка запросов к базе данных, включена поддержка логирования.
  • Существенно сокрашено время на обработку запроса на построение индексов в базе данных благодаря использованию фонового построения.

SQLite 3.7.10

Осуществлен переход на использование по умолчанию 4 версии формата схемы данных, что подразумевает также включение по умолчанию более нового формата убывающих индексов и нарушение совместимости с БД SQLite версии ниже 3.3.0 (выпущенных до 2006 года).

Некоторые другие изменения:

  • Объявлена устаревшей структура sqlite3_pcache_methods, а также опции конфигурации SQLITE_CONFIG_PCACHE и SQLITE_CONFIG_GETPCACHE, вместо которых следует использовать sqlite3_pcache_methods2, SQLITE_CONFIG_PCACHE2 и SQLITE_CONFIG_GETPCACHE2;

  • В VFS-интерфейс добавлена поддержка режима защиты от потери данных в случае неожиданного отключения питания, который включается через опцию на этапе сборки SQLITE_POWERSAFE_OVERWRITE и через параметр "psow=BOOLEAN" в URI. Дополнительно исправлена недоработка, которая могла теоретически привести к повреждению базы при экстренном отключении питания;

  • Добавлены новые интерфейсы: sqlite3_db_release_memory(), sqlite3_db_filename(), sqlite3_stmt_busy(), sqlite3_uri_boolean() и sqlite3_uri_int64();

  • Возможность указания отрицательных значений в PRAGMA cache_size, которые будут указывать на необходимость уменьшения размера кэша на -1024*N байт относительно размера страницы памяти;

  • Улучшена используемая по умолчанию система распределения памяти;

  • Планировщик запросов улучшен в направлении задействования индексов при запросе диапазонов значений для rowid, обработке "UNION ALL" и в некоторых других ситуациях;

  • Улучшена реализация блокировок для "unix-dotfile" VFS (вместо open()/unlink() теперь используется mkdir()/rmdir());

  • Различные улучшения в реализации unix и windows VFS.

Языки программирования

2016

SQLite 3.14.0

9 августа 2016 года стал доступен релиз SQLite 3.14.0.

Логотип версии, (2016)

Добавленные возможности и функции [1]:

  • Возможность создавать виртуальные таблицы без идентификаторов строк (режим "WITHOUT ROWID");
  • В планировщик запросов внесены изменения, позволившие задействовать оптимизации выражения "OR" в виртуальных таблицах при наличии нескольких операторов LIKE, GLOB, REGEXP и MATCH;
  • Добавлена виртуальная таблица CSV для упрощения импорта файлов в формате CSV;
  • Добавлена функция carray();
  • Добавлено загружаемое расширение vfsstat.c с VFS-прослойкой для сбора статистики о параметрах ввода/вывода;
  • Улучшен алгоритм выполнения запросов, содержащих выражения "ORDER BY" и "LIMIT";
  • Добавлен VFS "win32-none", который аналогичен "win32" за исключением того, что не использует блокировку файла;
  • Добавлена новая утилита командной строки dbhash для вычисления хэша SHA1 для схемы данных и содержимого БД;
  • Добавлена SQL-функция json_quote().

SQLite 3.10.0

6 января 2015 года состоялся релиз SQLite 3.10.0, оформленной в виде подключаемой библиотеки[2].

Основные изменения

  • Обеспечена возможность использования операторов LIKE, GLOB и REGEXP с виртуальными таблицами;
  • В утилиту sqldiff добавлена опция "--transaction";
  • Реализованы новые интерфейсы sqlite3_db_cacheflush() и sqlite3_strlike();
  • При открытии символической ссылки на БД, обеспечивающие журналирование файлы теперь создаются в привязке к реальному имени файла, а не имени символической ссылки;
  • При использовании ввода/вывода с применением отображения в память (memory-mapped I/O), отображение теперь производится в режиме только на чтение, что не даёт возможности случайно изменить БД в случае переполнения буфера в приложении или проблем с указателями;
  • В расширение для работы с форматом JSON добавлены новые SQL-функции json_group_array() и json_group_object();
  • Добавлена сборочная опция SQLITE_LIKE_DOESNT_MATCH_BLOBS;
  • Внесена оптимизация производительности, ускорившая работу с БД на 2-3%;
  • В интерфейс командной строки добавлены новые команды ".changes ON|OFF" и ".vfsinfo".

2015: Вышла версия СУБД SQLite 3.8.11

30 июля 2015 года стало известно о публикации релиза SQLite 3.8.11[3].

Вслед за ним вышел корректирующий релиз 3.8.11.1 для легковесной системы управления базами данных, оформленной в виде подключаемой библиотеки.

Тестирование нагрузки SQLite на ЦП, 2015

В новом релизе:

  • Добавлено экспериментальное расширение RBU (Resumable Bulk Update), предназначенное для организации быстрых инкрементальных обновлений больших наборов данных;
  • Добавлено экспериментальное расширение FTS5 с новой реализацией системы полнотекстового поиска;
  • В расширение spellfix1 добавлена поддержка выражения "ON CONFLICT";
  • В операторе "IS" реализована возможность использования индексов;
  • Улучшена работа планировщика запросов в плане автоматической индексации подзапросов, заданных в блоке FROM;
  • Добавлена команда "PRAGMA cell_size_check" для выявления повреждения файла БД на ранней стадии;
  • В полнотекстовом движке FTS3 в функции matchinfo() появился новый флаг сопоставления "b";
  • Добавлена программа fuzzcheck для качественного fuzz-тестирования БД. Программа автоматически вызывается при выполнении "make test";
  • Увеличена эффективность работы страничного кэша и реализовано предварительное выделение памяти для кэша. В тестах изменение позволило поднять производительность на 5% при типовых применения СУБД. Внесены разнообразные микрооптимизации, которые позволили выполнить на 22.3% больше работы в рамках тех же циклов CPU. В сумме, по производительности выпуск 3.8.11 в два раза быстрее 3.8.0 и в три раза быстрее 3.3.9 (при тестировании cachegrind и speedtest1.c в Ubuntu 14.04 x64 при сборке в gcc 4.8.2 с флагом -Os).

Примечания



Подрядчики-лидеры по количеству проектов

За всю историю
2014 год
2015 год
2016 год

Распределение вендоров по количеству проектов внедрений (систем, проектов) с учётом партнёров

За всю историю
2014 год
2015 год
2016 год

  Oracle (79, 181)
  SAP SE (41, 103)
  Microsoft (40, 99)
  PostgreSQL Global Development Group (9, 34)
  IBM (17, 14)
  Другие (214, 78)

  Microsoft (7, 18)
  Oracle (5, 8)
  SAP SE (2, 8)
  Vertica (1, 2)
  Imperva (1, 2)
  Другие (7, 7)

  Oracle (12, 28)
  SAP SE (2, 14)
  Microsoft (3, 9)
  PostgreSQL Global Development Group (1, 7)
  HFLabs (HumanFactorLabs) ХФ Лабс (1, 2)
  Другие (1, 1)

  Oracle (7, 20)
  SAP SE (6, 16)
  PostgreSQL Global Development Group (1, 8)
  Microsoft (3, 7)
  Apache Software Foundation (3, 3)
  Другие (10, 11)

Распределение базовых систем по количеству проектов, включая партнерские решения

За всю историю
2014 год
2015 год
2016 год

TAdviser рекомендует

28 апреля, Пт.

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

Добавить: