URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 119582
[ Назад ]

Исходное сообщение
"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"

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

Подробнее: https://www.opennet.me/opennews/art.shtml?num=52238


Содержание

Сообщения в этом обсуждении
"Релиз СУБД SQLite 3.31 с поддержкой генерируемых стобцов"
Отправлено Аноним , 23-Янв-20 11:31 
> Добавлена поддержка генерируемых столбцов (вычисляемых столбцов), позволяющих при создании таблицы создать столбец, значение которого автоматически вычисляется на основе содержимого другого столбца.

Знатоки, объясните: чем представления (view) хуже? Или я не понял и это вообще про другое?


"Релиз СУБД SQLite 3.31 с поддержкой генерируемых стобцов"
Отправлено Аноним , 23-Янв-20 11:42 
Основное отличие в том, что эту штуку можно не вычислять каждый раз, записав её на диск. А с view так нельзя. Ну ещё все данные и их производные в одной таблице, не нужно писать в одну и читать из другой как это будет с view.

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых стобцов"
Отправлено Аноним , 23-Янв-20 12:32 
Спасибо, теперь стало более понятно.

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых стобцов"
Отправлено Аноним , 23-Янв-20 12:56 
>эту штуку можно не вычислять каждый раз, записав её на диск

А от VIRTUAL тогда чем?


"Релиз СУБД SQLite 3.31 с поддержкой генерируемых стобцов"
Отправлено Аноним , 23-Янв-20 13:00 
Тем, что не надо каждый раз выражение писать в select. Или делать отдельный view.

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых стобцов"
Отправлено ананим.orig , 23-Янв-20 23:32 
главное чтобы по нему можно было индекс строить

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых стобцов"
Отправлено Аноним , 23-Янв-20 12:59 
> Основное отличие в том, что эту штуку можно не вычислять каждый раз, записав её на диск. А с view так нельзя.

В "больших" СУБД есть materialized view, тоже можно не вычислять каждый раз. Надеюсь, сабжевая фича является частью плана по их включению в SQLite.


"Релиз СУБД SQLite 3.31 с поддержкой генерируемых стобцов"
Отправлено Q2W , 23-Янв-20 18:01 
Таким темпами он станет SQHeavy

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых стобцов"
Отправлено Аноним , 23-Янв-20 18:50 
Black Progressive Industrial Heavy SQL.
То, что надо!

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых стобцов"
Отправлено Аноним , 23-Янв-20 13:23 
VIEW, например, в постгресе - кошмарная и вредная конструкция, не дающая менять схему нижележащих таблиц, а для MATERIALIZED либо требующая блокировки, либо создающая кучу других проблем (в случае REFRESH CONCURRENTLY). Всё что угодно лучше этой гадости - функции, триггеры, обычные таблицы обновляемые запросом, CTE, в зависимости от того что применимо. Почему бы также и не вычисляемые столбцы, хотя по мне так их сфера применения тоже очень сильно ограничена (в основном обратной совместимостью).

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых стобцов"
Отправлено Аноним , 23-Янв-20 21:01 
С MV и в оракле тяжко, если много данных и обновление таблиц частое.

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых стобцов"
Отправлено KonstantinB , 25-Янв-20 19:50 
Чаще всего виртуальные столбцы используются для того, чтобы построить индекс по выражению.
В постгресе это можно делать и напрямую

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аноним , 23-Янв-20 11:36 
Наверное прикольно. Но когда включат поддержку icu? что бы запрос Select "Ы" like "ы" выдавал 1?
известный баг\фича))

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аноним , 23-Янв-20 12:04 
Раз не включают по умолчанию значит это никому не нужно. А полтора землекопа могут и сами себе с ICU собрать.

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено пох. , 23-Янв-20 12:07 
Если он начнет такое выдавать - да, это будет именно баг, поэтому ответ - никогда.

А поддержка upper/lower - существует, но, поскольку это embedded db, collate function ты ей должен предоставить сам - https://sqlite.org/c3ref/create_collation.html - можешь себе "включить поддержку icu", если умеешь.

Для "неумеющих кодить" существует postgres.


"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аноним , 23-Янв-20 13:15 
> Для "неумеющих кодить" существует postgres.

Домино — это вам не шахматы, тут думать надо.


"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аномномномнимус , 23-Янв-20 13:00 
Поддержка включена если собрать правильно

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аноним , 23-Янв-20 17:57 
это не та поддержка, которую хочет аноним (если мы правильно понимаем его пример - он, вероятно, хотел все же не безусловно и во всех случаях чтобы Ы было like ы, а работающий collation ?)

Это поддержка в cli, без которой предложенную им строку вообще набрать, скорее всего, не получится.


"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аноним , 24-Янв-20 02:08 
Никогда, в SQL like --- _регистрозависимый_.

Для поиска независимо от регистра используют UPPER/LOWER или бывает делают ilike, но ilike нет в стандарте SQL, это расширение на усмотрение авторов СУБД.


"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено PavloT , 23-Янв-20 11:42 
Просто удобство. Не всегда хочется создавать отдельную сущность в виде view. В принципе можно и запросом разрулить.

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аноним , 23-Янв-20 12:05 
Имхо творят сущностный для видимости деятельности. Ничем хорошим это обычно не заканчивается.

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аноним , 23-Янв-20 13:01 
Полагаю, в этом случае закончится поддержкой materialized views, что неплохо.

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аноним , 23-Янв-20 12:14 
SQLite - хороший, годный продукт. Но кажется легковесность потихоньку улетучивается.

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено пох. , 23-Янв-20 12:27 
embedded db не обязана быть "легковесной", ей надо быть - embeddable.

А дальше, в случае sqlite все зависит от тебя - часть фич включается только по запросу, часть можно отключить. Но для этого его надо пересобирать, причем в некоторых случаях - из исходников.
Нет, sqlite-autoconf-3310000.tar.gz - это не исходник, и конфигурируется там не всё.


"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аноним , 24-Янв-20 12:28 
lite тоже не значит легковесный?

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аноним , 24-Янв-20 12:29 
lite тоже не значит легковесный?

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Alexey , 24-Янв-20 21:50 
По объему он все еще очень легкий

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено ыы , 23-Янв-20 12:55 
бизнес-логика встраиваемая прямо в таблицы... каша будет...

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аноним , 23-Янв-20 13:02 
Устраивать или нет кашу — выбор разработчика.

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено ыы , 23-Янв-20 13:04 
Да, есть такие любители - выдать толпе мыло, веревку и посмотреть что получится в итоге...
а получится как в расте (недавно), получится как в вордпрессе (перманентно)

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аноним , 23-Янв-20 13:13 
В расте получился способ ускорить работу, отключая всякие проверки. В результате можно догнать по производительности такие языки, как C и C++.

> получится как в вордпрессе (перманентно)

Если вас беспокоит безопасность — не пользуйтесь вордпрессом.


"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено ыы , 23-Янв-20 13:16 
У вас на все есть ответ :)

а как потом выгружить такие столбцы для переноса в другую базу? mysql например?


"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аноним , 23-Янв-20 13:29 
Также как из MySQL выгружать в PostgreSQL, а из оного - в Oracle, а оттуда в Redis. т.е. со всей логикой ровно никак - это разные базы с разными фичами, не прозрачно взаимозаменяемы и не должны такими быть. А если только данные, то брать и выгружать, и вычисляемые столбцы в этом только помогают, потому что помогают обеспечить совместимость и прозрачную конвертацию схемы. Собственно, никакую другую сложную бизнес логику в них и не запихнуть.

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аноним , 23-Янв-20 16:50 
> У вас на все есть ответ :)

Нас, анонимов, много. Хоть кто-нибудь, да ответит.

> а как потом выгружить такие столбцы для переноса в другую базу? mysql например?

Почему бы вам не спросить, как переносить из MySQL в SQLite пользователей и их права доступа, например?


"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аноним , 23-Янв-20 16:46 
Подскажите, что там с внедрением столбцов с типом DATETIME, DATE, TIME? Хочу искать по индексу по таким полям.

Не понял, что с UUID можно ли делать PK поле с UUID? Можно ли его генрить автоматический и получать на INSERT?

Будет ли когда нибудь обратный индекс для текста?


"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Q2W , 23-Янв-20 18:06 
А чем integer не устраивает в плане индексирования?

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аноним , 24-Янв-20 16:48 
Тем, что нужно делать [mYear, mMonth, mDay, mHour, mMinute, mSecond] по шесть полей на одну дату (и то если повезло и они в UTC), а если дат несколько, то это просто какой-то кошмар их создавать.

В целом конечно можно и с UnixTime немного погеммороиться, но было б удобнее.


"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Q2W , 25-Янв-20 11:42 
С unixtime, имхо, будет достаточно удобно, если для преобразования даты/времени в unixtime и обратно юзать какую-нибудь либу.

В остальном - это же sqLITE. Преимущество должно быть в т.ч. в простоте.


"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено MBG , 25-Янв-20 17:59 
Зачем? Еесть нативная поддержка, зачем юзать какую-то либу? Только чтобы не читать документацию?:)

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Q2W , 25-Янв-20 22:31 
Нет нативной поддержки, об том и тред.

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено MBG , 26-Янв-20 08:51 
Понял, «чукча не читатель, чукча писатель», в документацию религия не позволяет. Итак, смотрим https://www.sqlite.org/lang_datefunc.html

Compute the date and time given a unix timestamp 1092941466.
SELECT datetime(1092941466, 'unixepoch');
Compute the date and time given a unix timestamp 1092941466, and compensate for your local timezone.
SELECT datetime(1092941466, 'unixepoch', 'localtime');
Compute the current unix timestamp.
SELECT strftime('%s','now');
the date and time given a unix timestamp 1092941466.
SELECT datetime(1092941466, 'unixepoch');
Compute the date and time given a unix timestamp 1092941466, and compensate for your local timezone.
SELECT datetime(1092941466, 'unixepoch', 'localtime');
Compute the current unix timestamp.
SELECT strftime('%s','now');

И так далее, еще много всего.

Сразу добавлю, что функции эти существуют давно и надо было только документацию открыть.


"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено пох. , 27-Янв-20 10:27 
это все же не тип данных DATE или DATETIME, это преобразования (впрочем, теперь вот их можно сложить в генерируемый столбец, только непонятно, для чего)

Но, учитывая, что внутри самой sqlite существуют на самом деле только два типа данных - integer и string ;-) - совершенно непонятно, зачем эта имитация анониму.


"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аноним , 23-Янв-20 21:13 
>Подскажите, что там с внедрением столбцов с типом DATETIME, DATE, TIME? Хочу искать по индексу по таким полям.

Не будет. Есть integer. Если нужно искать только по времени, и времена уникальны, то кодируешь в число и засовываешь в integer primary key, будет сверхбыстрый поиск, ибо integer primary key идёт в rowid.

Если нужно искать по нескольким primary, то прикидываешь сколько бит нужно на каждый primary нужно и кодируешь всё в один rowid с помощью битовых операций. Поиск будет нормальный, нужно просто правильно запрос синтезировать. Единственный недостаток - слишком много надо ручками делать. Давно бы запилил то что нужно, но там PR принципиально не принимают, а значит любой вклад в эту базу - это зря потраченный труд и время.


"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено пох. , 23-Янв-20 21:33 
индекс-то создать по стольким полям, сколько нужно, и не лезть в rowid - коран не велит?

Обязательно заниматься неведомой херней?

Правильно они такие PR не принимают - эта проблема в голове у оверинжинирнутого разработчика, а не в софте, который вполне последовательно реализует sql, а не костыли.


"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аноним , 24-Янв-20 01:31 
>индекс-то создать по стольким полям, сколько нужно, и не лезть в rowid - коран не велит?

любые индексы будут медленнее rowida. Их ещё добавлять и удалять надо, ибо со включёнными индексам вставки будут очень медленные. rowid же используется самой базой и связан с низкоуровневым представлением на HDD, поэтому последовательный доступ и поиск при кодировании в rowid будет быстрым.

Если у вас база в ведроприложении на несколько мегабайт, то вам пофиг. Если у вас многогоговая база на жёстких дисках, то вам не пофиг, будут импортироваться в неё данные неделю или 2 недели и будет 1 запрос идти минуту или 20 минут.


"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено пох. , 24-Янв-20 10:49 
если у вас "многогиговая база на жестких дисках" не может работать банально с индексами потому что "вставки очень медленные", и вы вынуждены заниматься наколеночной "оптимизацией" с ручным складыванием битиков - вы что-то уже понапроектировали явно не то. Может вам вообще не нужен был sql (вручную битики перекладывать - вообще не то, для чего его задумали)?

Возможно, именно sqlite для этого применения не очень подходил, хотя видел я немногогиговые (5-8 это ведь немного?) базы аж с FTS и весьма интенсивным добавлением данных в realtime - и ничего, жили.

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


"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено MBG , 25-Янв-20 07:52 
Ну-ну, ври, да не завирайся (с) Если обосновать полезность и реализуемость фичи - сделают. Да, код напишут сами по лицензионным соображениям. В свое время я предложил добавить компрессию для расширения FTS - показал результаты тестов с компрессией и без, прислал свою реализацию для проверки. В итоге идею приняли и компрессию добавили. Так что если вы измеряете результат полезностью - все отлично, если же вам попиариться принятым в апстрим кодом - тогда вон в кде шлите, там имхо вообще все принимают (в качестве подтверждения можете нагуглить мою давнюю переписку с разработчиками akonadi).

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аноним , 25-Янв-20 13:00 
у них mailing list без TLS. отказываюсь таким пользоваться.

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено MBG , 25-Янв-20 18:02 
Или крестик сними ими или трусы одень (с) нет проблем написать напрямую на почту DRH - не припомню случая, чтобы он мне не ответил. Ах да, попиариться не выйдет :)

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Ivan_83 , 23-Янв-20 23:43 
Лучше бы сборочную систему поправили, а то даже pread() и прочие фишки детектить не умеет, зато код их юзать умеет, если ручками задать дефайны при сборке.
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=241385

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аноним , 24-Янв-20 08:21 
Тоже думаю что def это не простые фаилы если вы сможете собрать именно с этими дефами https://github.com/Griggorii/wine_d3d_def_source ваин то вот и напишите мне на почту гмаил ком ник тот же.
Считаю что есть такие инструменты программирования которые ты считаешь мусором потому что просто не знаешь как применять.

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено пох. , 24-Янв-20 10:55 
> Лучше бы сборочную систему поправили

она ж целиком вторична и делается на от..сь.

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

P.S. соберешься править - сделай еще параметры для WAL и синхронной записи при нем - а то и их приходится вручную определять. Причем bsdшный мэйкфайл такому тоже не обучен.

P.P.S. мне лень, у меня и так все работает, да.


"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено Аноним , 24-Янв-20 16:50 
А для meson как подпроект кто-то уже сделал версию для встраивания?

"Релиз СУБД SQLite 3.31 с поддержкой генерируемых столбцов"
Отправлено iZEN , 27-Янв-20 14:56 
Этот релиз SQlite3-3.31.0 приводит к ошибке сегментации Thunderbird и Firefox - пришлось откатываться на предыдущую версию и восстанавливать профили пользователя.