Представлен (http://permalink.gmane.org/gmane.comp.db.sqlite.announce/38) релиз SQLite 3.8.7 (http://sqlite.org/releaselog/3_8_7.html), легковесной базы данных, оформленной в виде подключаемой библиотеки. Код SQLite распространяется как общественное достояние (public domain), т.е. может использоваться без ограничений и безвозмездно в любых целях. Финансовую поддержку разработчиков SQLite осуществляет специально созданный консорциум, в который входят такие компании, как Adobe, Oracle, Mozilla, Bentle и Bloomberg.В новом выпуске:
- Проведена большая работа по оптимизации производительности, которая затронула многие части кодовой базы. В результате, по сравнению с прошлой версией удалось добиться выполнения на 20.3% больше работы на том же числе CPU. Тестирование проводилось с измерением результатов работы нагрузочного сценария speedtest1.c через прокси cachegrind в 64-разрядной сборке Ubuntu 13.10 с gcc 4.8.1 и при указании флага оптимизации "-Os". В реальных приложениях увеличение скорости ожидается на уровне 10%. За последний год отмечается большой прогресс в оптимизации кодовой базы SQLite, например по сравнению с выпуском 3.8.0 при выполнении синтетических тестов производительность возросла на 61%.
- В сортировщик добавлена поддержка использования вспомогательных обработчиков, выполняемых в отдельных нитях, что позволяет добиться сокращения времени отклика при выполнении сложных запросов. По умолчанию данная возможность отключена и должна быть активирована через PRAGMA threads (http://www.sqlite.org/pragma.html#pragma_threads) или через сборку с опцией SQLITE_DEFAULT_WORKER_THREADS (http://www.sqlite.org/compile.html#default_worker_threads). Для ограничения числа нитей следует использовать опцию SQLITE_LIMIT_WORKER_THREADS (http://www.sqlite.org/c3ref/c_limit_attached.html#sqlitelimi...) в sqlite3_limit();- Расширены оптимизации пропуска элементов при сканировании (skip-scan (http://www.sqlite.org/optoverview.html#skipscan)), добавлена возможность пропуска записей в середине индекса, а не только в его начальной части;
- Улучшена производительность операторов преобразования типов (http://www.sqlite.org/lang_expr.html#castexpr);
- Внесены улучшения в метод использования статистики sqlite_stat4 (http://www.sqlite.org/fileformat2.html#stat4tab) при планировании выполнения запроса;- Добавлены новые программные интерфейсы, оперирующие 64-разрядными значениями: sqlite3_malloc64() (http://www.sqlite.org/c3ref/free.html),
sqlite3_realloc64() (http://www.sqlite.org/c3ref/free.html),
sqlite3_bind_blob64() (http://www.sqlite.org/c3ref/bind_blob.html),
sqlite3_result_blob64() (http://www.sqlite.org/c3ref/result_blob.html),
sqlite3_bind_text64() (http://www.sqlite.org/c3ref/bind_blob.html) и
sqlite3_result_text64() (http://www.sqlite.org/c3ref/result_blob.html);
- Добавлен новый программный интерфейс sqlite3_msize() (http://www.sqlite.org/c3ref/free.html), который возвращает размер памяти, выделенной через sqlite3_malloc64() и подобные функции;
- В расширении spellfix1 (http://www.sqlite.org/spellfix1.html) представлена возможность явного приведения rowid для каждой операции INSERT.
- Добавлено новое расширение user-auth (http://www.sqlite.org/src/doc/trunk/ext/userauth/user-auth.txt), позволяющее обеспечить применение аутентификации пользователей при доступе к БД;
- Прекращена поддержка опции SQLITE_ENABLE_TREE_EXPLAIN, вместо которой следует использовать механизм трассировки запроса SELECTTRACE, предоставляющий больше диагностических данных;
- В интерфейс командной строки добавлены новые опции "--pagecache", "--lookaside" и "--scratch" для настройки использования дополнительной памяти.URL: *http://permalink.gmane.org/gmane.comp.db.sqlite.announce/38
Новость: http://www.opennet.me/opennews/art.shtml?num=40865
Отличные новости! SQLite одна из самых лучших встраиваемых БД!
Легко быть лучшим при отсутствии конкурентов. В смысле, остальные вообще не занимаются встраиванием SQL баз. Ну разве что sleepycat'овская база, более жирная и вообще странная.
http://en.wikipedia.org/wiki/Embedded_database
Вот неполный список встраиваемых БД (возможно половина уже мертва):
Accuracer Database System
Advantage Database Server
Oracle Berkeley DB
CSQL
EffiProz
ElevateDB
Empress Embedded Database
Extensible Storage Engine
eXtremeDB
Встраиваемая версия Firebird
HSQLDB
InfinityDB
Встраиваемая версия Informix Dynamic Server
Встраиваемая версия InnoDB
Встраиваемая версия InterBase
ITTIA DB
Kyoto Cabinet
Встраиваемая версия MySQL Embedded
NexusDB
RDM Embedded
ScimoreDB
SolidDB
SQLite
Microsoft SQL Server Compact
TurboDB
Valentina DB
VistaDBТо с чем я работал: Sqlite, Mysql embedded, valentina db, Berkeley DB, leveldb, mssql server compact
ещё бы понял что из всего этого реляционные БД c SQL. Ещё потом понял бы насколько остаток реально куда-то впилить без мозготраха с лицензированием и проблем прикручивания блоба. Реальных конкурентов у SQLite действительно нет.
firebird
полноценная SQL, и без проблем лицензирования
И при надобности можно перескочить на использование полноценного сервера, поменяв лишь параметры подключения
> Вот неполный список встраиваемых БД (возможно половина уже мертва):Молодец, хаотично надергал список наобум, с самыми разными экспонатами. Ну скажи мне, чувак, чего по твоему мнению общего у Microsoft SQL Server Compact и Berkeley DB? Или там какого-нибудь Tokyo Cabinet.
> То с чем я работал: Sqlite, Mysql embedded, valentina db, Berkeley DB,
> leveldb, mssql server compactПоздравляю. Тогда вдвойне позорно что ты не понимаешь отличий например между простыми и быстрыми базами key-value и полновесным SQL и валишь в одну кучу напрочь разные экспонаты без какой либо классификации и попыток понять насколько то куда они целятся совпадает с нишей на которую заточен скулайт.
Я не спец по БД и незнаю всех тонкостей и различий. Но отличить k-l хранилища от бд вроде могу. Выше я просто написал с чем работал
>Легко быть лучшим при отсутствии конкурентов. В смысле, остальные вообще не занимаются встраиванием SQL баз. Ну разве что sleepycat'овская база, более жирная и вообще странная.Ну почему же? Громоптица (firebird) очень неплоха.
>Отличные новости! SQLite одна из самых лучших встраиваемых БД!Да и как нормальная БД на сервере работает отлично, особенно если нагрузка не больше 10000 человек в день
Спасибо, поржал. Кто пустил нуба на Опеннет?!
Во-первых: у встраиваемых БД совсем другое назначение; Во-вторых: нагрузка на СУБД измеряется не в человеках в день; И кроме того: 10000 "человек в день" выдержит любая СУБД, если всё сделано прямыми руками.
> Спасибо, поржал. Кто пустил нуба на Опеннет?!Наверное, сам пришел. Фэйс контроль отсутствует. Как обычно, ваш Капитан.
> Во-первых: у встраиваемых БД совсем другое назначение;
Ряд серверных софтин вполне себе юзает скулайт. В общем то реальных ограничений у него два: не удастся вынести на отдельную машину и writer может быть только 1. Ну ок, еще базы крупнее пары десятков гигз могут быть менее оптимальны по скорости, хотя при прямизне рук - до ~100 гигз нормально - чувак с sql.ru проверял.
> writer может быть только 1.См. WAL.
Есть и ряд других ухищрений. Правда, в ряде случаев, теряется атомарность транзакции.
Миграция сервера с одного движка на другой - не такая уж и проблема, если гвоздями не прибито. Разрабы по этому поводу особо не напрягаются.
Если я не ошибаюсь, то Thunderbird использует эту БД.
> Если я не ошибаюсь, то Thunderbird использует эту БД.И файрфокс. Да на самом деле много кто.
Ну, так Mozilla совсем не зря член того же консорциума. Им сейчас без SQLite никак не прожить.
> без SQLite никак не прожить.Да вообще-то жили кучу времени, а теперь вот с внедрежкой - стали пхать туда больше хлама чем MS в реестр. Так что лис зачастую в скулайт и упирается, что и вызывает его тормоза.
Я в курсе, потому и говорю о серьезной зависимости. Они уже привыкли все решать через БД, теперь, чтобы сменить технологию, половину кода придется переписать.
>> без SQLite никак не прожить.
> Да вообще-то жили кучу времени, а теперь вот с внедрежкой - стали
> пхать туда больше хлама чем MS в реестр. Так что лис
> зачастую в скулайт и упирается, что и вызывает его тормоза.Про тормоза обоснуйте. Где баги, бенчмарки?
Если делать корректно - то sqlite работает просто моментально, и упереться там, когда база используется конкурентно одним приложением (как в случае ФФ), крайне сложно.
Сложно - но можно. Firefox afaik до сих пор не выполняет обслуживание БД (VACUUM). Пишет-трёт, пишет-трёт... Ну и в итоге раздутый файл с дикой фрагментацией.upd. Спросил гугла - для этого плагин написали "places-maintenance".
Skype, Chrome, Android, iOS, много их....
Т.е. ждем ускорения)
В sqlite4 будет LSM.
А зачем когда есть leveldb?
> А зачем когда есть leveldb?хотя бы затем, что leveldb — не sql. к тому же на крестах.
Два огромных плюса.
> Два огромных плюса.Leveldb - кусок горбыля какой-то, как обычно у гугли. Если уж SQL не надо - токийский кабинет или накрайняк беркелеевская база - будут куда как поприятнее этой гуглевской cpaни.
> Leveldb - кусок горбыля какой-то, как обычно у гугли. Если уж SQL
> не надо - токийский кабинет или накрайняк беркелеевская база - будут
> куда как поприятнее этой гуглевской cpaни.я так понимаю, к нам на огонёк зашёл эксперт по key/value базам. уважаемый, а где можно почитать ваши статьи с детальными сравнениями и пояснениями? а то вы говорите так, как будто ваши слова — аксиома, а не теорема.
Лишь бы не переросла в монструозную поделку, как стало с MySQL :(
Тебе для чего ее в паблик домейн перевели? Чтобы ты смог даже не форкать, а просто взять и сделать по-своему (и даже закрыть сырцы), если тебе не понравится вектор ее развития.
>сделать по-своему (и даже закрыть сырцы), если тебе не понравится вектор ее развития.И я бы добавил, никому бы их не показывал. Никогда. Лучший ваирант развития многих форков в опенсорсе
>>сделать по-своему (и даже закрыть сырцы), если тебе не понравится вектор ее развития.
> И я бы добавил, никому бы их не показывал. Никогда. Лучший ваирант
> развития многих форков в опенсорсеЛучший вариант развития подавляющего большинства форков. ЧСВ чесать надо одному и в ванной.
я б не назвал +10-20% прироста "значительными оптимизациями производительности"
По современным меркам, когда софт почти вообще не оптимизируют это очень даже хорошая цифра. А если учесть что к sqlite уделяется много внимания, полное покрытие тестами и то что она используется многими приложениями, то профит в 10-20% очень даже хорошо :) Учитывая что ты скорее всего ни строчки кода не написал для sqlite
Многий софт оптимизируют, просто наращивают его возможности, а вместе с ними и прожорливость, значительно быстрее
Как с оптимизировать оптимизированное?
> я б не назвал +10-20% прироста "значительными оптимизациями производительности"Ну это потому что когда учитель правит что то в _твоих_ поделках они начинают лететь не на проценты а в десятки раз быстрее. У взрослых - УВЫ, всё не так просто :)
> я б не назвал +10-20% прироста "значительными оптимизациями производительности"Наоборот, с учётом возраста и применяемости проекта, очень подозрительно...
Приглядитесь к формулировке. Прирост отмечается на "том же количестве процессоров".
Проще говоря, оптимизировались алгоритмы распараллеливания.
> Приглядитесь к формулировке. Прирост отмечается на "том же количестве процессоров".
> Проще говоря, оптимизировались алгоритмы распараллеливания.Угу вероятно придумали хитрый способ как распараллелить запись на диск :) Главное что-бы потом откатов небыло...
Смех смехом, но действительно не исключено, что предыдущая реализация параллельной работы мешала сделать вменяемое кэширование дисковых операций. Прирост-то значительный.
когда проект уже переименуют? какой он, нафиг, lite сейчас?!
Это стоит расценивать как lite=embedded :) Или потому что имеет не полный синтаксис sql (в 3.6 добавили поддержку sql-99)
ну дай поехидничать!
1.91Mb архив исходников - просто сравни с MySQL (44.4Mb v5.7.5-m15) или PostgreSQL (21.7Mb v9.4b3), или пресловутый Firebird (~20Mb v2.5.3 - если прикинуть конверсию bz2->gz).Разница не то, что в разы - на десятичный порядок минимум. Так что лайт.
> 1.91Mb архив исходниковэто не «лайт», это «нифига ж себе монстр!»
>> 1.91Mb архив исходников
> это не «лайт», это «нифига ж себе монстр!»Там не только сами исходники sqlite. Подробнее здесь:
https://sqlite.org/download.html
https://sqlite.org/amalgamation.html
>>> 1.91Mb архив исходников
>> это не «лайт», это «нифига ж себе монстр!»
> Там не только сами исходники sqlite. Подробнее здесь:я как-то в курсе. речь, однако, шла об утверждении, высказаном в #37: что почти два мегабайта заархивированых исходников — это «лайт». это не «лайт» ни разу.
> когда проект уже переименуют? какой он, нафиг, lite сейчас?!Как ни странно - размер либы все еще достаточно скромный по сравнению с многими иными.
>> когда проект уже переименуют? какой он, нафиг, lite сейчас?!
> Как ни странно - размер либы все еще достаточно скромный по сравнению
> с многими иными.то есть, жиробас весом сто пятьдесят килограммов на самом деле вовсе не жиробас, потому что есть жиробасы весом триста килограммов?
Не совсем так. Потому что есть жиробасы весом полторы тонны :)ЗЫ Не могу сказать определенно за исходник (ветка 2.х содержала не так много левого хлама в архиве исходников), но экзешник вполне себе небольшой даже по десятилетней давности временам. Опять же, вспоминаю многомегабайтные исходники MySQL даже 3.х (парсер SQL там сначала генерился из грамматик, а потом собирался дооолго так).
тут тоже генерируется, аднака. я, кстати, lemon'ом пользовался, он удобный. особенно когда не хочется таскать с собой нагенерённое, и не с руки требовать наличия бизона.
> когда проект уже переименуют? какой он, нафиг, lite сейчас?!lite не только в размере, но и в функционале...
>> когда проект уже переименуют? какой он, нафиг, lite сейчас?!
> lite не только в размере, но и в функционале...который тоже уже давно не «лайт».
>>> когда проект уже переименуют? какой он, нафиг, lite сейчас?!
>> lite не только в размере, но и в функционале...
> который тоже уже давно не «лайт».Вас не нравится бОльшая функциональность? 2.8 вроде и мельче, и до сих пор актуален. Спасибо хоть на том, что вообще об оптимизации думают (задумчиво кошусь на жрущий под 300мб файрфокс 33 с двумя вкладками).
> Вас не нравится бОльшая функциональность?мне название не нравится. мучает мою эстетскую жилку.
> какой он, нафиг, lite сейчас?!...литий-теллуровый!
> когда проект уже переименуют? какой он, нафиг, lite сейчас?!А когда "микрософт" переименуют? Они уже лет 20 ничего "микро" не пишут^wпродают.
> А когда "микрософт" переименуют? Они уже лет 20 ничего "микро"
> не пишут^wпродают.неправда твоя, куча софта у них «микро». то микроработоспособность, то микробезглючность, то микроудобность…
Вы им льстите. Начиная с Семерки, MS взяла курс на нано-технологии!
> Вы им льстите. Начиная с Семерки, MS взяла курс на нано-технологии!развиваются!