Рубрика «sqlite» - 8

Имеется типична ситуация:

  • кем-то написанное приложение на Qt;
  • пользователи жалуются, что программа во время работы жрем много CPU;
  • профилировщик и strace указывают на то, что происходит насилование базы.

В такой ситуации хочется посмотреть что за запросы, их количество, время выполнения. Если в PostgreSQL есть pg_stat_statements и pgBadger, то для SQLite пришлось написать свой самокат. Самокат представляет из себя вызов sqlite3_profile для каждого соединения, запись полученной информации в журнал.

Читать полностью »

image

На сегодняшний день две мои самые любимые темы — SQLite и key-value базы данных. И в этот раз я пишу сразу про обе: этот пост посвящён Python-обёртке для используемого в SQLite 4 key-value хранилища на основе LSM.

Я не слишком внимательно отслеживаю релизы SQLite, но версия 3.8.11 привлекла моё внимание, поскольку в её описании заявлено серьёзное увеличение производительности по сравнению с 3.8.0. В сопроводительной информации я наткнулся на упоминание о новом экспериментальном расширении для полнотекстового поиска (о котором писал когда-то), и потому мне стало интересно, какая складывается ситуация с SQLite 4.

Изучив доступную информацию, я обратил внимание, что одной из задач разработчиков было обеспечить в новых версиях интерфейс для подключаемых движков баз данных. На момент написания этого поста в SQLite 4 уже было два встроенных бэкенда, один из которых — key-value хранилище на основе LSM. В последние пару месяцев мне доводилось поиграться с Cython, пока я писал Python-обёртку для встроенных k-v хранилищ UnQLite и Vedis. И я подумал, что было бы неплохо применить Cython для создания интерфейса движка БД на основе LSM, используемого в SQLite 4.

Разобравшись с исходным кодом SQLite 4 и крохотным заголовочным файлом LSM, я написал python-lsm-db (документация).
Читать полностью »

Здравствуй, уважаемый All!

Хочу рассказать о небольшой библиотеке для работы с SQLite в Windows Phone 8.0 Silverlight, Windows Phone 8.1, Windows 8.1 а сейчас еще и для Windows 10 UAP. Библиотеке уже больше года и т.к. проблем с ней за все время не возникло, то, я считаю, о ней можно рассказать другим.

Зачем все это?
Библиотека в рамках Windows Phone 8.0 Silverlight, Windows Phone 8.1, Windows 8.1 просуществовала больше года. Спрашивается: почему именно сейчас я решил о ней рассказать? Дело в том, что сейчас пора портировать свои приложения для Windows 10, а официального SQLite SDK пока нет. И скорее всего не будет до релиза Windows 10. Поэтому есть смысл посмотреть на эту библиотеку.

Поехали
Библиотека называется SQLite.WinRT.
Читать полностью »

Наблюдаем за новыми арендами адресов на DHCP сервере с помощью PowerShell - 1 Хочу рассказать об одном из способов мониторить новые аренды адресов на Windows DHCP сервере со множеством скопов. Задача была следующая: находить новые аренды и пробегать список глазами на предмет неугодных хостов с последующим их баном.

Для решения мы создадим базу SQLite и будем сохранять в ней информацию о существующих арендах, а затем, с помощью запроса, сравнивать таблицу, полученную ранее (например, вчера или неделю назад) с актуальными данными.
Читать полностью »

SELECT * WHERE LOWER_FNC(name) like '%" + filterText + "%'"

При разработке Android приложения столкнулся с проблемой в запросе SQLite фильтра с русскими буквами. Для английской локализации проблем нет. Для других интернациональных раскладок некорректно обрабатывались заглавные буквы в запросе.
Немного разобравшись я наткнулся на следующее описание:

(18) Case-insensitive matching of Unicode characters does not work.

The default configuration of SQLite only supports case-insensitive comparisons of ASCII characters. The reason for this is that doing full Unicode case-insensitive comparisons and case conversions requires tables and logic that would nearly double the size of the SQLite library. The SQLite developers reason that any application that needs full Unicode case support probably already has the necessary tables and functions and so SQLite should not take up space to duplicate this ability.

Instead of providing full Unicode case support by default, SQLite provides the ability to link against external Unicode comparison and conversion routines.

Вероятно текущая реализация SQLite Android и есть

only supports case-insensitive comparisons of ASCII characters

Видел решение через CursorWrapper но решил все таки собрать свою версию SQLite и использовать addCustomFunction

Что из этого получилось читайте под катом
Читать полностью »

Недавно мы опубликовали серию статей, посвящённых разработке приложений в FireMonkey. Тогда мы описали ключевые моменты построения приложения, в том числе создание базы данных, подключение данных с помощью технологии LiveBinding, развёртывание приложения на мобильной платформе. Однако, детально рассматривать ньюансы создания мобильных приложений мы не стали. Во многом это связано с тем, что сам процесс мобильной разработки в Delphi эволюционирует от версии к версии. В частности, в последней XE7 на сегодняшний день версии Delphi, был представлен новый дизайнер форм FireUI Multi-Device Designer. В данной статье с помощью небольшого примера мы рассмотрим, что же из себя представляет FireUI и каким образом с его появлением изменилась методология разработки.

Знакомство с FireUI - 1
Читать полностью »

В прошлом году понятие «внебраузерный JavaScript» чаще всего означало движок Node.js (а не, допустим, Rhino или SpiderMonkey, сильно уступающие ему в популярности в этой области) или какой-нибудь итог его встраивания (например, node-webkit).

Операционные системы, потерянные и обретённые внебраузерным джаваскриптом - 1В нынешнем году в игру вступают форки Node (например, io.js), и их также начинают встраивать — например, проект node-webkit переименовался в nw.js, потому что теперь он использует не Node, а io.js (да и не WebKit, а Blink — с тех давних пор, как Chromium перешёл на этот движок).

Для программистов это означает, в частности, что может отвалиться (или, наоборот, появиться) поддержка той или иной операционной системы. Давайте поговорим об этом.

Какие операционные системы перестают поддерживаться?

Во-первых, первые версии io.js нельзя было установить на Windows XP, нельзя было установить и на Windows 2003. Ещё в середине января казалось, что с этим ничего нельзя поделать: объяснение «io.js компилируется в Visual Studio 2013 Windows Desktop Edition, потому что движок V8 стал полагаться на возможности C++11» воспринималось как приговор — однако затем разработчики поправили дело, так что в файле CHANGELOG.md ветви v1.x можно прочесть, что поддержка этих версий системы Windows возвратилась в io.js, начиная от версии io.js 1.0.3 (20 января).

Операционные системы, потерянные и обретённые внебраузерным джаваскриптом - 2Подобно кругам по воде, эти изменения прошли по всей экосистеме движков; например, в nw.js версии 0.12.0-alpha3 на поддержку ещё можно надеяться (хотя лично я ещё не успел погонять эту версию на Windows XP), а в предыдущих альфа-версиях её точно нет (потому что они основаны на более ранних версиях io.js).

Во-вторых, KaneUA 19 февраля упомянул, что io.js не поддерживает тридцатидвухбитные версии OS X, в отличие от Node.

Поддержка каких операционных систем может появиться?

Читать полностью »

Для шифрования в SQLite были найдены следующие возможные решения:

  • SEE — официальная реализация.
  • wxSQLite — c++ wxWidgets обертка для шифрования SQLite.
  • SQLCipher — использует в реализации openSSL.
  • SQLiteCrypt — модифицированная реализация API.
  • botansqlite3 — шифрующий кодек для SQLite3 использующий библиотеку botan.
  • SQLiteCrypto — java API для Android, использует AES-256 и SHA-256.
  • QtCipherSqlitePlugin — SQL плагин для Qt с поддержкой шифрования.

Из рассмотренных решений SEE, SQLiteCrypt and SQLiteCrypto требуют приобретения лицензии. SQLCipher доступен в версии Community Edition, но требует libcrypto.

Наиболее интересным решением из представленного списка, на мой взгляд, является QtCipherSqlitePlugin.
Плагин шифрует «на лету» и полностью интегрирован в API Qt.
Читать полностью »

В этой статье рассматривается вариант установки Redmine с базой данных SQlite3 на Windows и запуск его как сервиса. Все необходимые компоненты для установки приведены в статье. Для тестирования была установлена виртуальная машина с «голым» Windows 7 без пакетов обновления, без дополнительного ПО и произведена пошаговая установка по инструкции в статье.

Ответ на вопрос: «Сколько требует ресурса так установленная Redmine?»

ОЗУ: Процесс Redmine использует 2 МБ оперативной памяти, а интерпретатор Ruby «ест» 170 МБ оперативной памяти.
ЖД: Установленный «пустой» Redmine с остальным ПО занимает ~500 МБ жесткого диска.

Читать полностью »

Вчера внезапно узнал, что логи скайпа хранятся в .sqlite. Отлично, подумал я, будет занятие на выходной.
Сегодня посмотрел хабру, нашел тему, посвященную описанию самой базы — тема, а также по восстановлению этой самой базы — тема и упоминание программки SkypeLogViewer. Замечательно, подумал я, пора писать очередной упоротый велосипед.
Идея проста: выборка и фильтрация чатов через lua — для тех, кто желает немножко попрактиковаться в использовании lua, sql-запросах и lua-аналога linq, а также тем, кого не устраивает стандартный поиск скайпа. Само приложение написано на C#(WPF).
Что получилось — смотрите под катом.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js