The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск СУБД SQLite 3.9.0 с поддержкой JSON

15.10.2015 11:32

После двух лет существования ветки 3.8.x представлен релиз SQLite 3.9.0, легковесной базы данных, оформленной в виде подключаемой библиотеки. Код SQLite распространяется как общественное достояние (public domain), т.е. может использоваться без ограничений и безвозмездно в любых целях. Финансовую поддержку разработчиков SQLite осуществляет специально созданный консорциум, в который входят такие компании, как Adobe, Oracle, Mozilla, Bentley и Bloomberg.

Нумерация версий SQLite отныне будет производиться в соответствии со спецификацией "Cемантическое версионирование", подразумевающей использование нотации X.Y.Z (вместо ранее используемой W.X.Y.Z), в которой X меняется при внесении изменений, нарушающих обратную совместимость, Y меняется при расширении функциональности и Z при исправлении ошибок. В выпуске SQLite 3.9.0 смена значительного номера версии обусловлена включением серии существенных улучшений, среди которых поддержка формата JSON, новый движок полнотекстового поиска FTS5, возможность создания индексов для выражений и поддержка использования функций с табличным значением.

Подробнее об изменениях:

  • В состав включён модуль json1, активируемый на этапе компиляции опцией SQLITE_ENABLE_JSON1. Модуль включает набор функций для манипуляции данными в формате JSON, которые позволяют организовать обработку данного формата в SQL-запросах. При этом, вместо введения нового типа, работа с JSON симулируется поверх полей с типом text, т.е. в конфигурациях без модуля данные поля остаются доступны для разбора внешними инструментами. Пример перебора значений в блоках JSON в SELECT-запросе:
    
       SELECT DISTINCT user.name
        FROM user, json_each(user.phone)
        WHERE json_each.value LIKE '704-%';
    
  • В блоке "FROM" в составе запросов "SELECT" реализована возможность использования функций с табличным значением (table-valued), которые выдают на выходе набор строк, воспринимаемый в запросе как вывод из виртуальной таблицы;
  • Интеграция FTS5, нового поколения движка полнотекстового поиска, в котором устранены некоторые концептуальные проблемы движков FTS3/4, которые не удавалось решить без нарушения обратной совместимости. Например, для сокращения потребления памяти в FTS5 реализована техника инкрементальной загрузки списков в память, возможно определение наличия подмножества без полного перебора списка, преодолён лимит SQLITE_MAX_LENGTH, добавлена поддержка сортировки по релевантности ("ORDER BY rank"), представлена возможность подключения собственных функций для расчёта веса результата и обработки текста. Модуль с реализаций FTS5 пока помечен как экспериментальный и требует сборки SQLite с опцией SQLITE_ENABLE_FTS5;
  • Поддержка использования индексов для выражений (раньше создание индексов допускалось только для столбцов, но не для операций с ними). В качестве элемента индекса можно использовать функцию над столбцом или операции над столбцами. Например, индексы
    
       CREATE INDEX acctchng_magnitude ON account_change(id, abs(amt));
       CREATE INDEX t2xy ON t2(x+y);
    
    сработают при выполнении
    
       SELECT * FROM account_change WHERE id=$xyz AND abs(amt)>=10000;    
       SELECT * FROM t2 WHERE y+x=22;
    
  • Поддержка "эпонимических" (eponymous) виртуальных таблиц, которые автоматически присутствуют в схеме "main" при всех соединениях с БД, не требуя предварительного выполнения выражения "CREATE VIRTUAL TABLE". Имя эпонимической таблицы соответствует имени загружаемого модуля, реализующего данную таблицу;
  • В выражении "CREATE VIEW" теперь допустимо опционально указывать список имён столбцов, выводимых в данном представлении;
  • При создании представлений теперь можно ссылаться на неопределённые таблицы и функции - предупреждение об их отсутствии будет выведено при непосредственном использовании представления в запросе;
  • В планировщике запросов реализована возможность задействования частичных индексов, охватывающих подмножество строк, заданное через условие AND в блоке WHERE;
  • В утилиту sqlite3_analyzer добавлен вывод уровня разветвления для btree и индексов;
  • Виртуальная таблица dbstat расширена для использования в качестве функции с табличным значением, в которых в качестве аргумента передаётся имя анализируемой схемы;
  • Устранена критическая ошибка в реализации расширения для шифрования данных (SQLite Encryption Extension), которая может привести к невозможности прочитать и восстановить содержимое БД после изменения размера шифрованного блока в процессе выполнения VACUUM.


  1. Главная ссылка к новости (http://permalink.gmane.org/gma...)
  2. OpenNews: Выпуск СУБД SQLite 3.8.11
  3. OpenNews: Выпуск SQLite 3.8.10
  4. OpenNews: Выпуск SQLite 3.8.9
  5. OpenNews: Релиз БД SQLite 3.8.0 с новым планировщиком запросов
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/43140-sqlite
Ключевые слова: sqlite, database
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (23) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 12:26, 15/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    ALTER TABLE они когда допилят?
     
     
  • 2.4, Lester (?), 12:52, 15/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Полноценный и при том эффективный и корректный ALTER TABLE - сложная задача. Так что ИМХО в тройке его не стоит ждать. В четверке они пока тоже занимаются другими вещами. Потому ALTER TABLE RENAME с нами будет еще долго.
     
  • 2.26, arisu (ok), 10:54, 21/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > ALTER TABLE они когда допилят?

    зачем? если ты это делаешь настолько часто, что оно тебя волнует, то у меня для тебя очень плохие новости: метла заждалась.

     

  • 1.3, Наркоман (?), 12:34, 15/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Я дожил до этого дня, ураааа!
     
  • 1.5, Аноним (-), 12:58, 15/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    XML и HTML пусть еще добавят
     
     
  • 2.8, Аноним (-), 13:31, 15/10/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > HTML

    Ну уж нет... Точно нет.
    > XML

    А стоит ли?

     
     
  • 3.11, Ури (?), 14:08, 15/10/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это был сарказм.
     

  • 1.6, Аноним (-), 13:04, 15/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    JSON добавили. А про такую структуру данных как массив они не знают... Я не против JSON, просто стоило сначала базовые структуры реализовать.
     
     
  • 2.9, тоже Аноним (ok), 13:49, 15/10/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    JSON - это для тех, кому настолько надо именно его, что они готовы страдать.
    А вот от базовых структур пользователи будут ожидать чудес, это совсем другой уровень.
     
     
  • 3.14, Аноним (-), 15:57, 15/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Дайте toml, не хипстеры чтоли? Страдать готов.
     
     
  • 4.15, тоже Аноним (ok), 15:59, 15/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Не дам, страдайте ;)
     
  • 2.13, MBG (?), 15:44, 15/10/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ничего не мешает забиндить свои функции работы с массивами на любом языке - при этом получаем высокую скорость обработки для всех языков, а не только C. Как пример:
    http://sqlite.mobigroup.ru/wiki?name=ext_tcl
     
     
  • 3.25, Аноним (-), 22:51, 16/10/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Покажите мне пример бинда операторов [] и []= - это основные операторы работы с массивами.
     
  • 2.16, bOOster (ok), 16:26, 15/10/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну и куда ты придешь с этим? К LDAP?
     
     
  • 3.24, Crazy Alex (ok), 12:39, 16/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Если там вместо ASN.1 будет что-то хоть отдалённо человеческое - может, и неплохо бы
     

  • 1.10, Аноним (-), 14:08, 15/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > новый движок полнотекстового поиска FTS5

    Дайте два!111

     
  • 1.12, Аноним (-), 15:39, 15/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    eponymous переводится как одноимённый(-е), афтар ты бы хоть гуглом перевёл, пейсатель-перефодтчик.
     
     
  • 2.18, Аноним (-), 17:05, 15/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > eponymous переводится как одноимённый(-е), афтар ты бы хоть гуглом перевёл, пейсатель-перефодтчик.

    А подумать о смысле не судьба прежде, чем рекомендовать дословный перевод?


     
  • 2.19, Аноним (-), 17:19, 15/10/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > eponymous переводится как одноимённый(-е), афтар ты бы хоть гуглом перевёл, пейсатель-перефодтчик.

    Проблема в том, что "одноимённые виртуальные таблицы" по смыслу совсем не то, что получается после такого перевода. Это не таблицы с одним именем, а таблицы имя которых совпадает с модулем, поэтому слово "одноимённые" для них неуместно. А вот "эпонимический" (http://dic.academic.ru/dic.nsf/efremova/282313), т.е. дающий имя другому явлению своё имя подходит отлично (имя таблице даётся по имени модуля).

     
     
  • 3.21, Аноним (-), 22:38, 15/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    А почему нельзя так и написать: "таблицы имя которых совпадает с модулем"?

     
     
  • 4.22, Аноним (-), 00:17, 16/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Про это и так написано в пояснении, но само название таких таблиц раздувать до целого предложения смысла нет.
     
  • 2.20, Нимано (?), 18:46, 15/10/2015 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > афтар ты бы хоть гуглом перевёл, пейсатель-перефодтчик.
    >  хоть гуглом перевёл

    Вы бы сначала домашку сделали, советчик вы наш.

    Для школьников поясняю:
    Гугол-перевод даже c аглицкого на французкий или немецкий частенько оччень  "доставляет", хотя как раз в ЕС документооборот на нескольких языках (и соответственно, качественный "ручной" перевод для накопления статистики  и т.д) – норма. А уж с русским языком ...

    Простейший пример:
    eponymous переводится как одноимённый(-е), афтар ты бы хоть гуглом перевёл, пейсатель-перефодтчик.
    --
    eponymous translated as the same name (e), you should at least author translated by Google, peysatel-perefodtchik.
    --
    обратно:
    Одноименный переводится как же именем (е), вы должны по крайней мере, автор переведен Google, peysatel-perefodtchik.
    --
    Каким именем и кому кто что должен?


    Не, если вам нравиться разгадывать шарады, то пожалуйста, вот вам некоторые перлы гуглоперевода оригинальной новости:
    > Добавлена json1 модуля расширения в исходном дереве, и в объединении. Включить поддержку, используя опцию SQLITE_ENABLE_JSON1 время компиляции.
    > Добавлена поддержка для одноименного виртуальных таблиц.
    > ВЗГЛЯД теперь могут ссылаться на неопределенные таблицы и функции, когда первоначально создано.
    > Отсутствующие таблицы и функции сообщается, когда вид используется в запросе.
    > Добавлена sqlite3_value_subtype () и sqlite3_result_subtype (), сопряженного (используется расширение json1).
    > Sqlite3_analyzer.exe утилита обновляется, чтобы сообщить глубину каждого BTree и показать средний разветвления для индексов и без таблиц ROWID.
    > Улучшена dbstat виртуальную таблицу, так что он может быть использован в качестве стола-функции, где аргументом является схема для анализа.

     

  • 1.23, Аноним (-), 09:33, 16/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Кто сказал H2?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру