The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск СУБД SQLite 3.45

21.01.2024 17:54

Опубликован релиз SQLite 3.45, легковесной СУБД, оформленной в виде подключаемой библиотеки. Код SQLite распространяется как общественное достояние (public domain), т.е. может использоваться без ограничений и безвозмездно в любых целях. Финансовую поддержку разработчиков SQLite осуществляет специально созданный консорциум, в который входят такие компании, как Bentley, Bloomberg, Expensify и Navigation Data Standard.

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

  • Все SQL-функции для работы с форматом JSON переписаны и переведены на новый внутренний формат дерева разбора JSONB, который сериализируется и может храниться в БД для исключения повторного разбора при использовании значений JSON. Новые версии функций, формирующих JSON, теперь генерируют бинарный формат JSONB вместо текстового. В функцию json_valid() добавлен необязательный второй аргумент, через который можно задать битовую маску, определяющую признаки корректного JSON (например, при указании 0x04 корректным будет признан блоб JSONB, при указании 0x01 текстовый JSON в формате RFC-8259, а при указании 0x05 оба варианта).
  • В виртуальную таблицу FTS5, применяемую для полнотекстового поиска, добавлена опция tokendata, позволяющая использовать собственные токенизаторы.
  • По умолчанию включена оптимизация SQLITE_DIRECT_OVERFLOW_READ, при которой overflow-страницы, размер которых больше стандартного размера страницы b-tree, читаются из файла напрямую, минуя кэш. Для отключения при сборке можно использовать опцию "-DSQLITE_DIRECT_OVERFLOW_READ=0".
  • В планировщике запросов повышена эффективность оптимизации транзитивных ограничений (transitive constraint) и улучшено игнорирование индексов, которые признаны низкокачественными при выполнении операции ANALYZE.
  • В интерфейсе командной строки улучшено отображение содержимого в кодировке UTF-8 на платформе Windows. Обеспечено автоматическое определение использования CLI-интерфейса при воспроизведении скриптов ".dump" и внесение соответствующих изменений в настройки, такие как ".dbconfig defensive off" и ".dbconfig dqs_dll on".
  • В определяемые на стороне приложения SQL-функции добавлено свойство SQLITE_RESULT_SUBTYPE, которое разрешает вызывать из функции sqlite3_result_subtype() для инспектирования подтипов аргументов.

Дополнительно можно отметить развитие в экспериментальных сборках SQLite нового режима ведения журнала транзакций - WAL2 ("PRAGMA journal_mode = wal2"), при котором используется два wal-файла ("database-wal" и "database-wal2") вместо одного. При записи данных в БД, выполняется добавление новых данных в первый wal-файл. Если первый wal-файл достигнет достаточно большого размера, осуществляется переключение на запись во второй файл. После переключение на второй wal-файл, первый становится доступен для фиксации изменений (checkpoint) и перезаписи. Соответственно, когда второй wal-файл достигает большого размера, осуществляется переключение на первый и т.п., что решает проблему с неконтролируемым разрастанием wal-файла в ситуациях, когда долго не фиксируется транзакция или выполняются длительные процессы чтения.

Дополнение: Изменение в JSON привели к нарушению обратной совместимости и прекращению работы конструкций для загрузки JSON-данных из файлов таких как "select readfile('data.json') -> 1" и "select * from json_each(readfile('data.json'));", так как функция readfile возвращает данные с типом BLOB, с которым теперь не работают новые функции обработки JSON. В качестве решения предлагается явно преобразовывать BLOB в тип TEXT, например "select CAST(readfile('data.json') AS TEXT) -> 1;".

  1. Главная ссылка к новости (https://www.sqlite.org/release...)
  2. OpenNews: Выпуск СУБД SQLite 3.44
  3. OpenNews: Выпуск DuckDB 0.9.0, варианта SQLite для аналитических запросов
  4. OpenNews: Проекты CBS и sqld развивают облачный и серверный варианты SQLite
  5. OpenNews: CG/SQL с реализацией хранимых процедур для SQLite
  6. OpenNews: Разработчики SQLite развивают бэкенд HC-tree с поддержкой параллельных операций записи
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60460-sqlite
Ключевые слова: sqlite
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (68) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 18:17, 21/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Давным-давно Far Manager читал настройки из реестра и запускался мгновенно с жёсткого диска. А новый работает с SQLite и бывает пару секунд загружается с SSD.
     
     
  • 2.3, Витюшка (?), 18:29, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если настройки читаются с дискеты 3.5, то возможно.
     
     
  • 3.7, Аноним (7), 18:33, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Так а вы, батенька, экстрасенс?
     
     
  • 4.10, Витюшка (?), 19:08, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Опыт.
     
  • 4.52, Аноним (52), 02:17, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Так а вы, батенька, экстрасенс?

    Какой же Нортон^Wfar без дискеты?

     
  • 2.11, Аноним (11), 19:25, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    и никто не сказал, что Far manger это Windows only... ты стареешь, опеннет
     
     
  • 3.13, merv (?), 19:37, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    https://github.com/elfmz/far2l
     
     
  • 4.63, Аноним (63), 09:47, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Linux fork of FAR Manager v2
    > v2
     
  • 2.12, Аноним (12), 19:32, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Far из-за обилия плагинов на старте сильно тормозит. Попробуйте перезапустить без них и удивитесь.
     
  • 2.15, Аноним (15), 19:43, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А новый работает с SQLite и бывает пару секунд загружается с SSD.

    С чего вы взяли, что проблема именно в SQLite? Он на миллионах устройств работает молниеносно.

     
     
  • 3.19, Аноним (7), 20:12, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • –8 +/
    В вашем воображении? Скулайт тормозит и теряет данные. Вот две его основные способности.
     
     
  • 4.21, Аноним (-), 20:22, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Пруфов, конечно же, не будет.
     
     
  • 5.24, Вы забыли заполнить поле Name (?), 21:21, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Он хранит пруфы в sqlite, поэтому нет.
     
  • 5.31, Аноним (7), 21:40, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Каких фаерфокс теряет данные скулайте если заканчивается место на диске.
     
     
  • 6.41, Tron is Whistling (?), 22:42, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А ты хотел бы, чтобы новые данные сохранялись на диск, на котором закончилось место?
    Цэ, батенька, из области фантастики.
     
     
  • 7.64, Аноним (7), 11:29, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Попытайся в голову зачем продолжать писать если место кончилось делай отказ, но сохрани данные.
     
     
  • 8.78, Tron is Whistling (?), 22:02, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Куда сохранять-то ... текст свёрнут, показать
     
  • 6.42, Аноним (42), 22:43, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Каких фаерфокс теряет данные скулайте если заканчивается место на диске.

    Sqlite как раз не теряет, теряет leveldb и та дрянь которая у него ещё используется.

     
  • 4.45, Аноним (42), 22:47, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > В вашем воображении? Скулайт тормозит и теряет данные. Вот две его основные
    > способности.

    Ты просто не понимаешь, в чём суть проблемы тормозов sqlite. Она не связана с производительностью дб. Она связана с объёмами хранимой информации (и очень необходимой по мнению разработчиков, чёрт бы их побрал) и тормозами IO. Ещё иногда индексы не настроены, а выборки используются совершенно дикие, и, конечно, они будут тормозить.

     
     
  • 5.65, Аноним (7), 11:30, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ты правильно мыслишь ну не подходит скулайт для задачи зачем его пихать то везде. Больше того он почти никогда не нужен.
     
     
  • 6.69, Аноним (42), 12:21, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Скулайт абсолютно универсальный для любых конфигов и логов, легко взять и легко использовать, при этом, он вполне себе гарантирует, что с успешно записанными данными ничего не случится при падении программы, отключении питания, или там при "кончившемся месте", а сама библиотека достаточно хорошего уровня (и предсказуемая).
     
  • 4.49, амоним (?), 02:06, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    использовал во многих проектах. причем начиная с версии, ктторая под WinCE была. Использовал с fluttet, .net, go, rust...
    вот чего НИКОГДА не было замечено, так это поломки базы без причины. бывали иногда баги, бывали проблемы с биндингами, иногда хотелось нормальные типы данных. но вот терять данные и тормозить - никогда.
     
     
  • 5.66, Аноним (7), 11:32, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Зайди в браузер например ФФ прочисти всё что хранится в скулайтах. И увидишь как браузер начинает летать и да это на ссд.
     
     
  • 6.68, амоним (?), 12:14, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    это конечно шикарно, но это точно sqlite, или ff все таки
     
  • 6.77, Аноним (12), 20:48, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ОС ещё переустановить можно. Тоже, говорят, всё летать начинает.
     
  • 4.76, Аноним (76), 17:55, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    тормозит - да.
    теряет данные - и да, и нет.

    Проблема в том, что SQLite не теряет данные. Это журналируемый калл. Из-за этого vacuum жрёт вдвое больше места и потребляет i/o и изнашивает диск. И имеет все шансы прерваться посередине. Есть официальный воркараунд на правах демки - отдельный бинарь, делающий вакуум, но in-place без гарантий сохранности. Так как для важных баз и так есть бэкапы, пользуюсь им.

    По-умолчанию каждая операция в своей транзакции, оттого и медленно - каждая операция проходит сначала журнал, а потом файл базы. Чтобы снизить i/o нужно сгруппировать все операции записи настроек в одну транзакцию.

    База ломается когда wal-файлы или файлы журнала были удалены.

     
  • 3.34, Аноним (34), 21:52, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Открывает базу медленно. Дальше побыстрее дело идёт.
     

  • 1.8, InuYasha (??), 18:35, 21/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Хочется высказаться, как они достали со своим JSONом, но снизу послучал YAML...
     
     
  • 2.14, Аноним (15), 19:40, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Хочется высказаться, как они достали со своим JSONом, но снизу послучал YAML.

    А тебе-то какое дело? Как именно они достали лично *тебя* JSONом?

     
     
  • 3.18, Аноним (18), 20:11, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Возможно он нашёл на помойке методичку MS из нулевых, про то что тормозной XML и SOAP - его светлое будущее)
     
     
  • 4.29, InuYasha (??), 21:25, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не любитель ломать глаза, но на XMPP народ сидит - и не обламывается. А под капотом у него...
     
     
  • 5.39, Аноним (18), 22:33, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Фишка XMPP не в XML. То что он по историческим причинам его использует - это вообще не плюс. А дыры заложенные в XML by design вообще прекрасны
     
     
  • 6.70, _oleg_ (ok), 13:50, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А какие у него дыры?
     
  • 5.54, Аноним (52), 02:20, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Не любитель ломать глаза, но на XMPP народ сидит - и не обламывается. А под капотом у него...

    На кубике сидит в тысячи раз больше народа и ещё более не обламывается, а там Джейсон на Фредди^Wямле и CUE-м погоняет.

     
  • 4.50, амоним (?), 02:09, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    к слову, сервисно ориентированная архитектура стала будущим, да и текстовый формат обмена данными. напомню, вместо монолитов того времеги, и повсюду распространненной бинарной сериализации.
     
     
  • 5.53, Аноним (52), 02:18, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Кто сказал "GRPC"?
     
     
  • 6.60, амоним (?), 04:05, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    я тоже его люблю, но кодогенерация на основе OpenApi вне конкуренции по популярности, простоте реализации и отлаживаемости.
     
  • 2.25, Вы забыли заполнить поле Name (?), 21:23, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > но снизу послучал YAML...

    К yaml линейка прилагается, чтобы оступ измерять?

     
     
  • 3.27, InuYasha (??), 21:23, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >> но снизу послучал YAML...
    > К yaml линейка прилагается, чтобы оступ измерять?

    Вот ей, похоже, и постучали. )

     
  • 3.44, Tron is Whistling (?), 22:44, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да, значимое количество пробелов в текстовом формате - это полный питон конечно.
     
  • 3.55, Аноним (52), 02:21, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > К yaml линейка прилагается, чтобы оступ измерять?

    А я думал, его можно открыть в текстовом редакторе, который сам всё померит...

     
     
  • 4.58, Вы забыли заполнить поле Name (?), 03:18, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >> К yaml линейка прилагается, чтобы оступ измерять?
    > А я думал, его можно открыть в текстовом редакторе, который сам всё
    > померит...

    ЕМНИП в yaml стандарт де-факто в 2 пробела. Удачи тебе, зоркий глаз.

     
     
  • 5.71, Аноним (52), 14:11, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Мне-то зачем? Я же не на бумажке пишу, а в редакторе.
     

  • 1.9, Аноним (42), 18:56, 21/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    C wal2 можно будет дёргать из розетки без значительных повреждений?
     
     
  • 2.20, Аноним (7), 20:14, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Если коротко, то нет.
     
     
  • 3.40, Аноним (42), 22:41, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Печаль, придётся и дальше сидеть на журнале.
     
     
  • 4.47, OpenEcho (?), 01:11, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > придётся и дальше сидеть на журнале.

    Чтоб сидеть как на стуле, надо наверное много журналов ;)

     
     
  • 5.73, Аноним (52), 14:15, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Профи подкладывают журнал на стул.
    Таким образом, сочетаются плюсы сидения на стуле и на журнале.
     
     
  • 6.75, OpenEcho (?), 16:03, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Профи подкладывают журнал на стул.
    > Таким образом, сочетаются плюсы сидения на стуле и на журнале.

    Главное в таком случае, чтоб стул был твердым, - не жидким

     

  • 1.28, Вы забыли заполнить поле Name (?), 21:24, 21/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Либа то хорошая. Но развивает один челик со своим внутренним вектором. Не дело это.
     
     
  • 2.30, Аноним (30), 21:36, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Но его продукт невероятно успешен, а это означает, что он все делает правильно.
     
     
  • 3.32, Аноним (7), 21:42, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Электрон успешен они всё делают правильно.
     
     
  • 4.46, Аноним (15), 00:19, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Электрон успешен они всё делают правильно.

    Так и есть, без шуток.

     
     
  • 5.56, Аноним (56), 02:53, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это те, кто на электроне приложения делают, делают неправильно.
     
     
  • 6.67, Аноним (7), 11:34, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так же и и со скулайтом, кто им пользуется делает это неправильно.
     
     
  • 7.72, Аноним (52), 14:13, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так-то и сишка — неплохой язык, просто им пользуются неправильно (динамически аллоцируют произвольные объемы памяти и работают с указателями, вместо того, чтобы ограничиваться типами фиксированного размера и обращаться к переменным только напрямую).
     
  • 3.33, Вы забыли заполнить поле Name (?), 21:42, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Но его продукт невероятно успешен, а это означает, что он все делает
    > правильно.

    js и npm тоже успешны. Согласись, что в твоем умозаключении ошибка.

     
     
  • 4.51, амоним (?), 02:13, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    гм... а что неправильного они делают?
    js улучшается, есть ts, npm становится удобнее, node - быстрее.
    пользователей все больше.. кода написанного на js/ts тоже.
    популярности платформы можно позавидовать.
    никто не смог сделать ничего и близко сравнимого.
    они точно ошибаются?
     
     
  • 5.59, Вы забыли заполнить поле Name (?), 03:22, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > гм... а что неправильного они делают?
    > js улучшается, есть ts, npm становится удобнее, node - быстрее.
    > пользователей все больше.. кода написанного на js/ts тоже.
    > популярности платформы можно позавидовать.
    > никто не смог сделать ничего и близко сравнимого.
    > они точно ошибаются?

    Да, потому что все что ты написал - ложь. Все что происходит - это исправление костылей изначально кривого языка и платформы, латание дыр на лету. Да, плывет, но экипажу неудобно и сыро.

    > популярности платформы можно позавидовать

    Популярность - вовсе не означает правильность выбранного пути. Возможно новое поколение думает именно так и тогда тебе стоит стать популярным блохером, а не ученым.

     
     
  • 6.61, амоним (?), 04:09, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    но ведь оно про инженерию.
    а тут простите, но постоянный компромис, между качеством и затратами.
    потому, что все не ради науки, а ради денег.
    и тут нода разорвала все грелки.
     
     
  • 7.74, Аноним (52), 14:18, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Только при условии, что считаются затраты "в короткую".
    Нода — это инструмент для быстрого сляпывания сырого прототипа.
    Как только расходы от поддержки такого прототипа считаются "в долгую" — рвут уже ноду.
     
     
  • 8.79, амоним (?), 22:44, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    да, начинается все именно с того, что надо быстро съесть рынок... текст свёрнут, показать
     
  • 2.36, Аноним (34), 21:54, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Какой один человек, там целая контора!
    Да, там есть лидер - он как Торвальдс принимает ключевые решения, но работает над проектом очень много людей.
     
     
  • 3.48, OpenEcho (?), 01:15, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > но работает над проектом очень много людей.

    Ну, чтоб быть обьективным, то не так уж и много. К ним проломиться с пул реквестом, надо пуд соли сьесть и то не факт что мержнут, может поэтому кстати и качество, что не пихают все что не попадя

     

  • 1.35, Аноним (35), 21:53, 21/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    >JSONB is a binary representation of JSON used by SQLite and is intended for internal use by SQLite only. Applications should not use JSONB outside of SQLite nor try to reverse-engineer the JSONB format.

    Наизобретают велосипедов. Формат судя по намёкам в доке не оптимизирован для поиска, в отличие от postgres. Зачем тогда кастомный формат? Почему не хранить CBOR? Я вот в базе храню CBOR.

     
     
  • 2.37, Аноним (34), 21:58, 21/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    jsonb покомпактрее json'а, и работать с ним быстрее только из-за этого используют.
    Да, другой похожий формат может был бы лучше. Не исключено, что jsonb выкинут.
     

  • 1.57, Аноним (57), 02:55, 22/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А когда уже mongo на движке SQLite
    вместо постгреса?
     
     
  • 2.62, амоним (?), 04:13, 22/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    уже тут

    https://docs.ferretdb.io/understanding-ferretdb/#sqlite

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру