to post messages and comments.

Есть спецы по этой БД? Есть таблица с полем id и автоинкрементом, уникальным номером клиента, и доп данными. Очень интересует как можно выполнить вставку так, что если введено неуникальное значение, то данные в строке изменились, но без изменения значения последовательности? А то смотрю в sqlite_sequence для этой таблицы seq увеличивается... Пробовал INSERT OR REPLACE , но в этом случае строка сначала удаляется, и вставляется уже с новыми данными

SQLite пошёл по пути web-scale баз (типа MongoDB) и, начиная с вышедшей 4 дня назад версии 3.7.17, научился использовать memory-mapped файлы (вместо всяких пошлых read()/write()). В отдельных случаях производительность повышается чуть ли не двукратно. sqlite.org

Арррргх. Ебаное говно. Переводит цшарпный код в скулайтный запрос на лету, вместо того, что бы сначала получать значения — это класс. Особенно если делать это ВСЕГДА, даже тогда, когда НЕ МОЖЕШЬ. Нет команды huygovnoequals в скулайте? Нет, мы не преобращуем ленивый запрос в данные, и не попробуем применить операцию для них, НЕТ. МЫ ХУЙНЕМ ЭКСЕПШН. А ЛУЧШЕ ДВА.

sqlite.org
Locking and concurrency control are handled by the pager module. The pager module is responsible for making SQLite "ACID" (Atomic, Consistent, Isolated, and Durable). The pager module makes sure changes happen all at once, that either all changes occur or none of them do, that two or more processes do not try to access the database in incompatible ways at the same time, and that once changes have been written they persist until explicitly deleted. The pager also provides a memory cache of some of the contents of the disk file.
The pager is unconcerned with the details of B-Trees, text encodings, indices, and so forth. From the point of view of the pager the database consists of a single file of uniform-sized blocks. Each block is called a "page" and is usually 1024 bytes in size. The pages are numbered beginning with 1. So the first 1024 bytes of the database are called "page 1" and the second 1024 bytes are call "page 2" and so forth. All other encoding details are handled by higher layers of the library. The pager communicates with the operating system using one of several modules (Examples: os_unix.c, os_win.c) that provides a uniform abstraction for operating system services.
The pager module effectively controls access for separate threads, or separate processes, or both. Throughout this document whenever the word "process" is written you may substitute the word "thread" without changing the truth of the statement.

Интересный модуль. Особенно, если хранить данные в своих форматах (/me косо поглядывает на bitcoind)

Не нашел лучше ничего кроме как пересобрать ulogd c --with-sqlite3-log-ip-as-string
БД стала расти быстрее, но в общем это приемлемо. Зато скорость select`а по ip_saddr и ip_daddr заметно подросла. ЧЯДНТ?

Обнаружил для себя коварную особенность SQL, в частности в sqlite: автоматическое удаление нулей в начале числа, которое указано как искомое и без кавычек.
Например, если в SELECT'е указать для поиска числовое значение с нулями в начале и без кавычек, а искомое значение хранится в текстовом столбце, то поиск будет неудачным. Что, конечно, верно, т.к. либо надо искать строку и, следовательно, заключать её в кавычки, либо надо иметь числовой столбец. Однако до меня это не сразу дошло.
CREATE TABLE Events (group_uid TEXT);
INSERT INTO Events VALUES ('0269236');
SELECT group_uid FROM Events WHERE group_uid=0269236;
— Ничего не в результате.
SELECT group_uid FROM Events WHERE group_uid='0269236';
0269236
— Искомое значение.

Создатели CouchDB и SQLite представили UnQL, аналог SQL для систем NoSQL
opennet.ru

Компания Couchbase, развивающая такие системы, как CouchDB, Memcached и Membase, анонсировала создание нового языка запросов — UnQL (Unstructured Data Query Language), напоминающего SQL, но ориентированного на работу с неструктурированными данными. Проект выполнен совместными усилиями Ричарда Гиппа (Richard Hipp), создателя SQLite, и Дэмиена Каца (Damien Katz), основателя проекта CouchDB. Разработка передана сообществу в виде общественного достояния.

Основной целью разработки было создание для NoSQL-систем привычного и стандартизованного языка для определения и манипулирования данными. UnQL выступает в роли неструктурированного эквивалента SQL и призван заполнить образовавшуюся нишу, связанную с отсутствием единой формы задания модели данных и языка запросов, которые могли бы стать стандартом для нереляционных баз данных, манипулирующих неструктурированными данными в формате ключ/значение.

> head -n9 /usr/local/include/sqlite3.h
/*
** 2001 September 15
**
** 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.

Вот это круто, я считаю. Fuck you GPL.

А вы знаете, что если на goo.gl написано, что индекс при LIKE/GLOB поиске в SQLite3 будет использоваться при "2. The right-hand side of the LIKE or GLOB must be either a string literal or a parameter bound to a string literal that does not begin with a wildcard character", то... они именно это и имеют в виду? И, например, если WHERE filetable.pathfield GLOB '/home/markzucker/' будет использовать индекс, то, например, WHERE filetable.pathfield GLOB '/home/markzucker/' || '' уже не будет?..

Жуйк, ты гонял когда-нибудь BDB и/или SQLite под хорошей нагрузкой? Интересует сможет ли оно вменяемо добавлять 10-20 тысяч записей в секунду и паралельно делать поиск по тому же масиву данных.

Жуйк, я правильно понимаю, что текущая реализация QSqlite при открытии транзакции ждет, если другая программа имеет незакрытую транзакцию? Вообще, стоит задача запилить очередь сообщений для нескольких локальных клиентов на одной машине, текущая реализация с одним клиентом использовала сабж.
Указания на то, что это извращение, без примеров можно не постить.

У Чака Норриса, как известно, каждое яйцо больше другого. А вот у SQLite наоборот — каждый NULL меньше любого другого. Удивительное — оно рядом, достаточно просто почитать инструкцию ;)
sqlite.org
==
3.0 Comparison Expressions
SQLite version 3 has the usual set of SQL comparison operators. The results of a comparison depend on the storage classes of the operands, according to the following rules:
1. A value with storage class NULL is considered less than any other value (including another value with storage class NULL).
==

Вон, народ массово ругает bzr. А мне, например, очень не понравился monotone. За sqlite и за здоровущий размер базы у долго живущего проекта. Может, чего-то не понимаю, но, кажется, вечно жить мне на git. ;)
Да и вообще, на sqlite какая-то нездоровая мода. @alv недавно показал: у empathy, который, как мне казалось, вообще должен быть простейшим, лог частично в sqlite хранится. А частично в текстовых файлах. Зачем? Чтоб було? Непонятно.

Мой новый php класс для автоматического составления SQL запросов на основе построеной "цепочки" параметров и выполнения запросов через подключаемый драйвер БД.
Если есть желающие потестить или ознакомиться:
code.google.com