The OpenNET Project / Index page

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

Выпуск СУБД SQLite 3.42 и DuckDB 0.8.0. CG/SQL с реализацией хранимых процедур для SQLite

19.05.2023 10:15

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

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

  • Для полнотекстовых индексов FTS5 реализована команда secure-delete, производящая полную чистку всех остаточных данных после удаления.
  • В функциях для обработки данных в формате JSON реализована поддержка расширений JSON5.
  • Улучшен планировщик запросов. По умолчанию включена оптимизация "count-of-view". Исключена обработка неиспользуемых столбцов в подзапросах. Улучшена реализация оптимизации push-down.
  • В интерфейс командной строки добавлена опция "--unsafe-testing", позволяющая использовать некоторые опасные команды, такие как ".testctrl", предназначенные для применения при тестировании. В безопасном режиме ("--safe") разрешено использование команд ".log on" и ".log off". Добавлена поддержка разделителя "--", для аргументов после которого отключается обработка опций. Добавлены параметры ":inf" и ":nan", связанные со значениями бесконечность и NaN.
  • В именах определяемых на стороне приложения SQL-функций разрешено пересечение с ключевыми словами CROSS, FULL, INNER, LEFT, NATURAL, OUTER и RIGHT.
  • Расширены возможности PRAGMA integrity_check. Добавлена проверка указания значения NaN в столбцах с условием NOT NULL. Улучшена информативность сообщений об ошибках.
  • В дополнении session разрешён перехват изменений из таблиц без ROWID.
  • В функции для работы со временем и датами добавлен модификатор "subsec" для использования долей секунд.
  • Глубина рекурсии для массивов и объектов JSON по умолчанию уменьшена с 2000 до 1000.



Кроме того, сформирован выпуск СУБД DuckDB 0.8.0, развивающей вариант SQLite, расширенный возможностями и оптимизациями для выполнения аналитических запросов, охватывающих значительную часть хранимых данных, например, выполняющих агрегирование всего содержимого таблиц или слияние нескольких больших таблиц. Предоставляется расширенный диалект языка SQL, включающий дополнительные возможности для обработки очень сложных и длительно выполняемых запросов, а также поддерживающий сложные типы (массивы, структуры, объединения), одновременное выполнение нескольких запросов и выполнение запросов напрямую из файлов в формате CSV, JSON и Parquet. Имеется возможность импорта из СУБД PostgreSQL.

Помимо кода оболочки из SQLite проектом используется вынесенный в отдельную библиотеку парсер из PostgreSQL, компонент Date Math из MonetDB, своя реализация оконных функций (на базе алгоритма Segment Tree Aggregation), обработчик регулярных выражений на основе библиотеки RE2, собственные оптимизатор запросов, MVCC-механизм управления одновременным выполнением заданий (Multi-Version Concurrency Control), а также векторизированный движок выполнения запросов на базе алгоритма Hyper-Pipelining Query Execution, позволяющий в одной операции разом обрабатывать большие наборы значений. Код проекта распространяется под лицензией MIT.

В новой версии DuckDB:

  • Добавлены новые выражения "PIVOT" и "UNPIVOT" для трансформации строк в столбцы и наоборот.
  • Улучшено распараллеливание при импорте и экспорте данных. По умолчанию реализовано чтение из файлов в формате CSV в несколько потоков и многопоточная запись при использовании форматов Parquet, CSV и JSON.
  • Добавлен оператор "**" для рекурсивного перебора каталогов при определении файловых путей (например, FROM "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Добавлена поддержка операций слияния (JOIN) для данных в форме временного ряда (срезы значений параметров через заданные промежутки времени), в которых в качестве критерия слияния записей используется не точное, а приблизительное совпадение значений в поле со временем (например, можно объединить записи, время которых отличается не больше, чем на 1 минуту).
  • Реализована отложенная загрузка метаданных БД, позволившая в десятки раз ускорить запуск СУБД.
  • Добавлена поддержка подключения пользовательских функций на языке Python.
  • Добавлена поддержка API ADBC (Arrow Database Connectivity) для передачи данных с использованием Apache Arrow.
  • Реализована привязка для интеграции с кодом на языке Swift.
  • Изменено поведение оператора деления ("/"), который теперь по умолчанию выполняет вычисления с плавающей запятой вместо целочисленных операций. Для целочисленного деления предложен новый оператор "//". Старое поведение можно вернуть настройкой "SET integer_division=true;".
  • Метод учёта нулевых записей при сортировке изменён с "NULLS FIRST" на "NULLS LAST", т.е. значения NULL теперь будут выводиться в конце, а не начале списка. Старое поведение можно вернуть настройкой "SET default_null_order='nulls_first';".



Дополнительно можно отметить развиваемый компанией Facebook проект CG/SQL, предоставляющий генератор кода для использования хранимых процедур с SQLite. CG/SQL позволяет оформить хранимые процедуры на специальном диалекте T-SQL (Transact-SQL), допускающем вызов функций стандартной Си-библиотеки и обращение к данным в SQLite. Созданные хранимые процедуры компилируются в код на языке Си, использующий SQLite C API для выполнения заданных действий и обработки сложных запросов. Скомпилированные хранимые процедуры могут подключаться к программам на языках Си, Java и Objective-C. Код проекта написан на языке Си и распространяется под лицензией MIT.

  1. Главная ссылка к новости (https://sqlite.org/releaselog/...)
  2. OpenNews: Выпуск СУБД SQLite 3.41
  3. OpenNews: Разработчики SQLite развивают бэкенд HC-tree с поддержкой параллельных операций записи
  4. OpenNews: Выпуск rqlite 7.0, распределённой отказоустойчивой СУБД на основе SQLite
  5. OpenNews: Опубликован проект Litestream, реализующий систему репликации для SQLite
  6. OpenNews: Проект libSQL начал развитие форка СУБД SQLite
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/59157-sqlite
Ключевые слова: sqlite, duckdb, cgsql
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (46) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 11:08, 19/05/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –17 +/
    Ну и где это любители хранить 10 своих ценных настроек приложения в sqlite? Чтобы их приложуха была ого как у больших. И тормозила как у больших.
     
     
  • 2.5, Аноним (5), 11:29, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Хотя бы не обнуляются по каждому чиху, как у веб-браузеров (привет хромому).
     
     
  • 3.10, Аноним (1), 11:56, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Если у тебя 10 настроек храни их в текстовом файле. И не надо выпендриваться. Никуда файл по чиху не денется.
     
     
  • 4.12, Аноним (5), 12:15, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Тебе наверно нравится, когда твои пользователи тебя проклинают? А, да, какие пользователи, никаких, конечно. А гугловцам вот нравится очевидно.
     
     
  • 5.14, Аноним (1), 12:25, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    За то что ты сделал все нормально? Ты с головой поссорился? Даже если у тебя 100 настроек зачем тебе sqlite ты их каждую секунду опрашиваешь и делаешь сложные запросы с сортировками? Сделай просто нормальное приложение и всё.
     
     
  • 6.17, Аноним (5), 12:45, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Что нормального в том, что пользовательские данные регулярно обнулятся, а в каком месте, это как повезёт? Сложные запросы это про надёжное хранение стейта и операции над ним или что-нибудь подобное, но тут уже заметно что это мать его sqlite и не полноценная бд. А вот надёжное хранение конфигов самое то для sqlite, на большее она не годится.
     
     
  • 7.18, Аноним (1), 13:12, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Да что вы все такое делаете что у вас у всех данные в файлах обнуляются? Может дело не в надежности, а просто в неумении проектировать приложения?
     
     
  • 8.20, Аноним (5), 13:25, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Топ 3 ситуаций, приводящих к невосполнимым потерям и повреждению данных потеря ... текст свёрнут, показать
     
     
  • 9.28, Tron is Whistling (?), 14:57, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Может стоит в journal_mode WAL попробовать ... текст свёрнут, показать
     
  • 9.29, Tron is Whistling (?), 14:58, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Или вы тут про текстовые файлы С текстовыми файлами надо в create-fsync-rename ... текст свёрнут, показать
     
     
  • 10.30, Аноним (5), 15:30, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Около 100 софта на этом сыпется ... текст свёрнут, показать
     
  • 9.58, Аноним (58), 11:35, 20/05/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Запуск второй копии программы, которая изменит часть текстовых данных, а первая ... текст свёрнут, показать
     
     
  • 10.70, Neon (??), 06:22, 28/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А кто мешает сделать так программу, чтобы нельзя было запускать вторую копию ... текст свёрнут, показать
     
  • 9.69, Neon (??), 06:21, 28/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    И как локальная БД спасет от потеря питания паника, исчерпание места на диске, ... текст свёрнут, показать
     
     
  • 10.71, Аноним (5), 13:32, 28/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Поинтересуйся на досуге, что такое ACID, и как оно работает ... текст свёрнут, показать
     
  • 8.27, Tron is Whistling (?), 14:56, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Используют какие-нибудь замечательные варианты использования файловых систем, с ... текст свёрнут, показать
     
     
  • 9.32, Аноним (5), 15:36, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Дело не в барьёрах, это вообще фс рассыпаться будет наверно Например, data writ... текст свёрнут, показать
     
     
  • 10.46, Tron is Whistling (?), 21:52, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Writeback - так себе затея для ценных данных вообще, минимум ordered, а без барь... текст свёрнут, показать
     
  • 10.47, Tron is Whistling (?), 21:53, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В целом я как раз об этом - о безумных вариантах использования, где by design им... текст свёрнут, показать
     
  • 7.23, Амомин (?), 13:35, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Sqlite на чтения отмасштабироваться может ровно настолько насколько есть памяти и процессора в пределах машины на которой работает, на запись да, есть решаемые ограничения обход которых вроде как в процессе.
     
     
  • 8.24, Аноним (5), 14:03, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Да, я уже привык к database is locked по поводу и без Малейший свопинг не даёт ... большой текст свёрнут, показать
     
  • 2.21, Амомин (?), 13:30, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Для альтернативно одаренных документ написан https://www.sqlite.org/appfileformat.html зачем и почему стоит рассмотреть как хранилище состояния и настроек
     
     
  • 3.43, Аноним (43), 21:37, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    алло, ты о чем вообще? вот эти сверху, иксперды опеннета, что минусуют и советуют настройки в файле хранить, сроду ничего не читали и не разрабатывали ни одного приложения
     
  • 3.48, Аноним (1), 21:58, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ну все какой-то рекламный наброс всё выключаем голову и везде где не надо суем скуль. Потому что программы мы писать не умеем только копипастим из инета.
     
     
  • 4.54, Аноним (43), 22:08, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Потому что программы мы писать не умеем только копипастим из инета

    хорошо, что признался

     

  • 1.2, Tron is Whistling (?), 11:17, 19/05/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Хто мне блджад расскажед, зойчем хронимые пирацедуры в эмбедовом двиге, который априори обвязан логикой аппликухи? Маразм?
     
     
  • 2.3, Tron is Whistling (?), 11:18, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    (это я про CG/SQL)
     
  • 2.4, пох. (?), 11:23, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Маразм?

    Facebook!

     
  • 2.22, Аноним (22), 13:35, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    В жизни большинства так называемых профессиональных программистов наступает момент, когда они перестают себе доверять окончательно. Мир для них распадается на более хорошие технологии и менее хорошие. Более хорошие - там где он исторически делал меньше позорных ляпов. Одно дело хранимка на экран, и другое дело переусложненный код, который он привык писать обычно. Кажется безопаснее.
     
     
  • 3.25, Tron is Whistling (?), 14:46, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > В жизни большинства так называемых профессиональных программистов наступает момент, когда
    > они перестают себе доверять окончательно.

    Именно в этот момент их надо метлой гнать из профессии.

     
     
  • 4.55, Аноним (43), 22:10, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    надеюсь, с тобой поступили в соответствии с твоими же рекомендациями
     
     
  • 5.56, Tron is Whistling (?), 22:42, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Меня за щито? Я себе доверяю. Не полностью, но таки да.
     
  • 2.61, Аноним (61), 14:27, 20/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > CG/SQL позволяет оформить хранимые процедуры на специальном диалекте T-SQL (Transact-SQL), допускающем вызов функций стандартной Си-библиотеки и обращение к данным в SQLite.

    Ну каг для чего? Неужели ты не хочешь на T-SQL написать вебсервер, который можно будет стартонуть специальным запросом? Подобалять в него потом коллбеков с бузинесс-логикой твоего приложения и сделать настолько дичайшую дичь, подпёртую базой, что все кто увидит код, будут убегать из конторы в жэстачайшэм афиге. Всякие тарантулы и нжинкс-юниты - просто курят в сторонке.

     
     
  • 3.62, Tron is Whistling (?), 18:50, 20/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    пох, перелогинься :)

    Вот что да, то да. Обязательно этим займусь, когда выйду на пенсию и окончательно впаду в дичайшее уныние по головному контуру :D

     
     
  • 4.66, Аноним (66), 19:45, 20/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Я не пох и ничего не имею с ним общего.

    > когда выйду на пенсию и окончательно впаду в дичайшее уныние по головному контуру :D

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

     
     
  • 5.67, Tron is Whistling (?), 19:49, 20/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >> когда выйду на пенсию и окончательно впаду в дичайшее уныние по головному контуру :D
    > Это уже не будет иметь особого смысла.

    Пайчему. Стану работающим пенсионером, устроюсь незаменимым специолиздом, буду пить смузи.

     

  • 1.31, Аноним (31), 15:34, 19/05/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Adobe, Oracle, Mozilla, Bentley и Bloomberg

    А Google где? Они во всю sqlite в своем ведроиде используют и даже копеечкой не поделились

     
     
  • 2.36, Tron is Whistling (?), 15:55, 19/05/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    MS с гуглом кмк просто попросили их не палить :D
     

  • 1.57, Том Круз (?), 00:36, 20/05/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Думаю CG/SQL тут не уместен, т.к. sqlite это удобная встраиваемая записная книжка. Функции это про реализацию логики на стороне БД, это хорошо на базе Postgres делать, где БД как сервер который отвечает на запросы от соединений. Там и тригеры уместны и другие плюшки. В эмбедед все это не нужно т.к. способна дообработать полученную выборку непосредственно в коде, и это тоже самое по затратам что в sql запросе передавать данные в функцию расширения. Как говорят тайцы сэйм сэй бат дифирент.
     
     
  • 2.59, Tron is Whistling (?), 13:31, 20/05/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Перечитал. Они там компилятор хранимок сделали в код, для макак, которые с хранимок слезть не могут.
     
     
  • 3.60, Павел (??), 14:18, 20/05/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Представьте, что в каком-нибудь столбце у вас сложный хеш, который штатными средствами скулайт не вычислить. Писать через код приложения - это select, а по результатам update, а значит лишние действия. А если этот хеш написать хранимкой на C, то не надо select делать. Да мало ли еще применений? Кто-кто почту по триггеру отправляет из хранимок, кто-то в active directory ходит.
     
     
  • 4.63, Tron is Whistling (?), 18:52, 20/05/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > А если этот хеш написать хранимкой на C, то не надо select делать

    Чо. Данные магически из базы выберутся через атсpал?

    > Кто-кто почту по триггеру отправляет из хранимок, кто-то в active directory ходит.

    Кто-то трусы через голову надевает, но это не повод...

     
  • 4.64, Tron is Whistling (?), 18:55, 20/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Или это было про постпроцессинг данных в одном запросе?
    Ну разве что, потому что в нормальные курсоры оно не умеет :(
     
  • 4.65, Tron is Whistling (?), 18:56, 20/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Плюсанул за пример с обсчётом внутри запроса, вполне валидно, да.
     
     
  • 5.68, Tron is Whistling (?), 10:17, 21/05/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Другое таки дело, что я не вижу смысла считать сложный хеш внутри UPDATE, ну да ладно.
     

  • 1.72, Аноним (72), 16:01, 28/06/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    как DuckDB подружить с Delphi ?
     

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



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

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