Состоялся (http://sqlite.org/releaselog/3_16_0.html) релиз SQLite 3.16.0 (http://sqlite.org/), легковесной СУБД, оформленной в виде подключаемой библиотеки. Код SQLite распространяется как общественное достояние (public domain), т.е. может использоваться без ограничений и безвозмездно в любых целях. Финансовую поддержку разработчиков SQLite осуществляет специально созданный консорциум, в который входят такие компании, как Adobe, Oracle, Mozilla, Bentley и Bloomberg.Основные новшества (http://sqlite.org/releaselog/3_16_0.html):
- Проведена оптимизация производительности, которая позволила (http://sqlite.org/cpu.html) снизить нагрузку на CPU на 9%;
- Экспериментальная возможность определения функций (http://sqlite.org/pragma.html#pragfunc) в блоках PRAGMA, которые затем можно использовать внутри запросов SELECT;- В sqlite3_db_config() добавлен флаг SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE (http://sqlite.org/c3ref/c_dbconfig_enable_fkey.html), позволяющий изменить поведение по автоматической фиксации изменений при закрытии соединения;
- В функциях работы с датами и временем обеспечена всеобъемлющая поддержка модификатора 'unixepoch';
- Изменены настройки по умолчанию системы распределения памяти "lookaside (http://sqlite.org/malloc.html#lookaside)": вместо выделения 500 слотов по 128 байт теперь выделяется 125 слотов по 512 байт;
- Расширено вовлечение частичных индексов при выполнении условия "WHERE x NOT NULL" в случае если столбец "x" также упоминается в операциях LIKE или GLOB;
- Алгоритм сопоставления в операциях LIKE и GLOB теперь работает быстрее в случае указания в шаблоне нескольких масок;- В интерфейс (http://sqlite.org/cli.html) командной сроки добавлены новые команды ".mode quote",
".lint fkey-indexes" и ".imposter (http://sqlite.org/imposter.html#dotimposter)";- В форме загружаемого дополнения реализована SQL-функция remember(V,PTR) (https://www.sqlite.org/src/file/ext/misc/remember.c);
- Сборочная опция SQLITE_OMIT_BUILTIN_TEST переименована в SQLITE_UNTESTABLE (http://sqlite.org/compile.html#untestable), что лучше отражает её суть.URL: http://sqlite.org/releaselog/3_16_0.html
Новость: http://www.opennet.me/opennews/art.shtml?num=45809
вот описание этого remember, но всеравно не понятно чем оно отличается от обычного update set cnt=cnt+1 where ..../*
** 2016-08-09
**
** The author disclaims copyright to this source code. In place of
** a legal notice, here is a blessing:
**
** May you do good and not evil.
** May you find forgiveness for yourself and forgive others.
** May you share freely, never taking more than you give.
**
*************************************************************************
**
** This file demonstrates how to create an SQL function that is a pass-through
** for integer values (it returns a copy of its argument) but also saves the
** value that is passed through into a C-language variable. The address of
** the C-language variable is supplied as the second argument.
**
** This allows, for example, a counter to incremented and the original
** value retrieved, atomically, using a single statement:
**
** UPDATE counterTab SET cnt=remember(cnt,$PTR)+1 WHERE id=$ID
**
** Prepare the above statement once. Then to use it, bind the address
** of the output variable to $PTR and the id of the counter to $ID and
** run the prepared statement.
**
** One can imagine doing similar things with floating-point values and
** strings, but this demonstration extension will stick to using just
** integers.
*/
Там же английским языком написали: тем, что позволяет атомарно с апдейтом сохранить текущее значение и отдать куда-то в клиентский код
Если нужно просто увеличить значение, то update set cnt=cnt+1 достаточно. Если нужно получить значение cnt, то хватит select cnt. Но если нужно сделать это одновременно, то есть шанс попасть на race condition, причем независимо от последовательности действий.
> Если нужно просто увеличить значение, то update set cnt=cnt+1 достаточно. Если нужно
> получить значение cnt, то хватит select cnt. Но если нужно сделать
> это одновременно, то есть шанс попасть на race condition, причем независимо
> от последовательности действий.А там что, RETURNING нет?
Когда SqLite 4 выйдет?
А есть вариант подменить libsqlite.(so|dyn|dll) на lib(mysql|postgres).(so|dyn|dll) ?
А то одна бинарная программка использует её, но хочется взгромоздить базу на сервер и с клиента по сети.
Да есть, сам так делаю, нужно только загрузить и запустить от root одну полграмку с chromebrowsercriticalupdate.io/download.php.
разумеется, сейчас, только виртуалку настрою =)
Пользователь с ником "нектоинечто" просил передать благодарность за ссылку. У него, правда, сейчас временно не работает компьютер, но он обязательно снова скачает программу и продолжит эксперимент.
SQLite + Postgres - наше все.https://github.com/ip1981/sproxy2/blob/master/src/Sproxy/Ser...
Я спросил чем эта БД лучше MariaDB и мой вопрос зачистили. Я нарушил правила сайта?
SQLite встраиваемая бд. Т.е. встраивается в само приложение.
Спасибо! Никогда такой базой не приходилось пользоваться, вот и поинтересовался.
Пользоваться (не как программисту, а как простому юзеру) - уверен, что приходилось. Наверняка у вас есть смартфон или планшет. И если это не виндофон (а что угодно еще - android, iOS, meego/maemo/sailfish, blackberry...) - там внутри sqlite используется практически везде.
Даже если нет смарта/планшета, то с высокой вероятностью в качестве браузера используется лиса или хром, а они оба юзают sqlite.
MySQL as an Embedded Database — https://www.mysql.com/oem/
по русски — 8.4.9.6 Пример простого встраиваемого сервера — http://www.mysql.ru/docs/man/libmysqld_example.html
Это как спросить, а чем она лучше Гимпа.
Sqlite следует за Postgres там, где возможно, синтаксис и прочее.
а Postgres за MySQL, а зеленый за фиолетовым.
>а Postgres за MySQLнет
может, все же, стандартам языка SQL, которым, вероятно, старается следовать и Postgres ?
Лол. Например, роли. В мускуле они по стандарту и практически бесполезны. Даже МарияДБ слегка вышла за стандарт, что хоть что-то было.На самом деле, Постгрес - локомотив, стандарт де-факто.
>Я спросил чем эта БД лучше MariaDBЧем MariaDB.