Представлен (https://www.mail-archive.com/sqlite-announce@sqlite.org...) релиз SQLite 3.24.0 (http://sqlite.org/), легковесной СУБД, оформленной в виде подключаемой библиотеки. Код SQLite распространяется как общественное достояние (public domain), т.е. может использоваться без ограничений и безвозмездно в любых целях. Финансовую поддержку разработчиков SQLite осуществляет специально созданный консорциум, в который входят такие компании, как Adobe, Oracle, Mozilla, Bentley и Bloomberg.Основные изменения (https://sqlite.org/releaselog/3_24_0.html):
- Добавлена поддержка операции UPSERT (http://sqlite.org/lang_UPSERT.html) (добавить-или-модифицировать), реализованной через выражение "INSERT ... ON CONFLICT DO NOTHING/UPDATE". Операция позволяет игнорировать ошибку или выполнить обновление вместо вставки, в случае невозможности добавления данных через "INSERT", например, из-за нарушения условий уникальности или недопустимости значения одного из полей (т.е. если запись уже существует, вместо INSERT можно выполнить UPDATE). Реализованный синтаксис аналогичен операции UPSERT в PostgreSQL;
- В CLI-интерфейсе с использованием ASCII-графики реализован наглядный отчёт с анализам плана выполнения запроса, выводимый при выполнении команды "EXPLAIN QUERY PLAN (https://sqlite.org/eqp.html)" (CLI автоматически преобразует raw-вывод команды в наглядную форму). Также расширена информация, выдаваемая в raw-выводе "EXPLAIN QUERY PLAN", например, добавлены сведения о связях между элементами плана выполнения запроса.
- В CLI-интерфейс добавлена новая команда ".dbconfig". В команду ".backup" добавлена опция "--append" для дополнения вместо перезаписи. Обеспечена интерпретация строк, начинающихся с символа '#', как комментариев;
- В таблицах r-tree обеспечена (https://sqlite.org/rtree.html#auxcol) возможность определения вспомогательных столбцов для хранения произвольных данных;
- В API для языка Си добавлены функции для определения поддержки заданных ключевых (sqlite3_keyword_count(), sqlite3_keyword_name(), sqlite3_keyword_check()), а также использования динамических строк
на основе объекта sqlite3_str;- В выражении "ALTER TABLE" обеспечена возможность использования аргументов "true" и "false" в секции DEFAULT;
- Добавлена включаемая на этапе сборки оптимизация сортировки ссылок (включается при указании SQLITE_ENABLE_SORTER_REFERENCES).URL: https://www.mail-archive.com/sqlite-announce@sqlite.org...
Новость: https://www.opennet.me/opennews/art.shtml?num=48737
>Добавлена поддержка операции UPSERTа в чем отличие от уже существующей INSERT OR REPLACE?
Это для совместимости с PostgreSQL. Там такая команда есть.
Нет такой команды в PostgreSQL.
https://www.sqlite.org/lang_UPSERT.html
UPSERT in SQLite follows the syntax established by PostgreSQL.
А с какой целью совместимость? Для удобства разработчиков? С трудом представляется, что что-то вдруг начнут переносить с постгре на скуэльлайт.
А если с Sqlite на PostgreSQL?
> А если с Sqlite на PostgreSQL?Хм.. все равно - вот у вас было ПО, надо полагать, что когда вы начали его разработку, вы примерно понимали какой объем данных будет, нужен ли отдельный сервак под БД. В моем понимании sqlite - это типа журнал посещений в браузере хранить, ограничение в фурифоксе по дефолту - 350 мб - как я понимаю это и есть типичный размер БД на этой СУБД. Не сравнить с постгре. Хотя В КДЕ же, вроде, для какой-то хрени можно использовать майскуэль (на выбор склайт тоже есть) - какая-то непомук - аконади. Но, правда, мб, это сделано, чтобы конфиги всех юзеров хранить на одном серваке. Но в каком-то дистрибе, вроде по дефолту майскуэль в демонах уже был запущен.
Классический пример - всякие бухгалтерии времён дельфей. Один бухгалтер - используем встроенный firebird. Несколько - подняли серверный вариант. Здесь можно то же самое провернуть. Для вебовских движков - тоже милое дело, если сайти мелкий на три посетителя в час - sqlite хватит, если большое - ставим постгре. Даже смигрироваться можно при нужде.
Постгрес.
Не постгре, а постгрес.
> А если с Sqlite на PostgreSQL?это возможно. Прототипирование - распространенная пактика.
> С трудом представляется, что что-то вдруг начнут переносить с постгре на скуэльлайт.это "в силу того, что ваши представления ограничены".
Вот этот чувак: https://www.opennet.me/~MBG мог бы, при желании, кое-что тебе рассказать.
(он довольно легко гуглится, не так много людей могут похвастаться тем, что существенно что-то улучшили в sqlite)
Как пример сервис с реалтайм траффиком:http://136.243.57.100:8080/#map=12/52.5186/13.4239
Обрабатывается около 100Гб данных в сутки, поступает несколько миллионов записей ежеминутно (уникальный идентификатор автомобиля - данные GPS и проч.). Да, основная база - эскулайт с расширением spatialite, администрирование не требуется вообще. Используется полнотекстовый поиск для потайловой выборки данных, хранятся как сырые данные, так и агрегированные потайлово для тайлов всех уровней масштаба. Сервер - Intel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz (4 ядра и 8 потоков), использовано 3ГБ ОЗУ, Load average: 3.10.
В наличии ON CONFLICT DO NOTHING ?
INSERT это INSERT. REPLACE это всегда тупо DELETE и INSERT.
UPDATE-ом тут и не пахнет.
А UPSERT это или UPDATE или INSERT.
Так понятнее?
P.S. INSERT ON DUPLICATE KEY UPDATE это тоже не аналог UPSERT.
1 Отдельно нужно указывать что и чем обновлать в случае нарушения уникальности.
2 В случае, если поле NOT NULL и не содержит DEFAULT то INSERT выдаст ошибку при отсутствии значения такому полю, даже если мы хотим обновить его. При UPDATE такого не происходит.
Не подскажет никто gui/webgui для просмотра базы?
https://sqlitebrowser.org/
sqlitebrowser
Sqlitestudio
Поддерживаю, пока ничего удобнее чем SQLiteStudio не встречал: https://sqlitestudio.pl
dbeaver
плюсую. Добротное и универсальное ПО.
Фуррифокс, внезапно. С дополнением SQLite Manager:https://github.com/lazierthanthou/sqlite-manager
https://addons.mozilla.org/addon/sqlite-manager
Not compatible with Firefox Quantum
tksqlite forever.
Какой-то китайский ужос.
Copyright (c) 2004 - 2013 OHTSUKA, Yoshio, его прадед на китайцах катану испытывал.
И главное - ни в коем случае не смотри в исходники самой sqlite. (нет, тебя нае...обманули. sqlite3.c это не исходник, sqlite-autoconf-3240000.tar.gz - тоже не содержит исходников)