Изучение основ: Как использовать JSON в SQLite

В этом руководстве мы исследуем увлекательное пересечение двух популярных технологий: JSON и SQLite. Знание того, как использовать JSON с SQLite, важно в современном программировании, особенно при работе с сложными структурами данных, которые не полностью подходят для табличной структуры. Будь вы опытный разработчик или стремящийся новичок, этот учебник поможет вам начать изучать использование JSON в базе данных SQLite.

Давайте начнем!

Обеспечение современного управления данными приложений с помощью SQLite

SQLite, наиболее широко развернутый и используемый движок базы данных, представляет собой удобную базу данных, которая не требует сложной настройки или подключения к серверу. SQLite прост в использовании и адаптируется к различным приложениям, что сделало его предпочтительным выбором в разработке программного обеспечения. SQLite имеет небольшой бинарный след, обычно менее 1 МБ, что означает, что он легче других баз данных. Более того, SQLite полностью соответствует принципам ACID.

Еще одна уникальная особенность SQLite заключается в том, что она хорошо подходит для индивидуальных приложений и интернет-устройств, таких как умные гаджеты для дома, которые являются частью Интернета Вещей (IoT). Также, несмотря на свою простоту, SQLite имеет сильный контроль над стандартным языком SQL. Он может обрабатывать такие вещи, как транзакции, подзапросы и триггеры. Таким образом, SQLite прост в использовании, но при этом довольно мощный.

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

Интересный факт: Знаете ли вы, что, хотя многие люди произносят SQLite как ‘S-Q-Lite’ (сиквел-лайт), его создатель, Ричард Хипп, на самом деле намеревался произносить его как ‘S-Q-L-ite’ (эс-кью-эл-лайт) как минерал, подчеркивая его прочную, но легкую природу?

Почему SQLite превосходит в мире современных реляционных баз данных

SQLite является идеальным решением для ситуаций, когда использование полноценных клиент-серверных баз данных может быть излишним, так как оно легковесно и без сервера. Поскольку SQLite самодостаточно, оно не зависит от каких-либо внешних зависимостей, что делает его очень надежным. Базы данных SQLite переносимы между различными файловыми системами и архитектурами, что делает миграцию данных в базе данных SQLite легкой.

Типичные области применения SQLite охватывают широкий спектр областей, так как это самый широко используемый движок базы данных в мире. Например, SQLite является стандартным выбором для локальной сохраняемости в приложениях, особенно в мобильных приложениях. SQLite также широко используется для анализа данных и тестирования, где его ясность и мощь являются победным сочетанием. Наконец, SQLite является идеальным выбором для хранения данных веб-сайтов, где он может управлять данными пользователей, контентом сайта и многое другое.

Производительность SQLite впечатляет, при этом скорость часто превышает другие известные базы данных для большинства распространенных операций.

Используя инструмент ClickHouse для проведения бенчмарков, мы сравнили производительность ведущих баз данных — MySQL, PostgreSQL, SQLite и MongoDB — при выполнении разнообразных запросов.

Почему возможности SQLite по работе с JSON делают его выдающимся выбором для современного управления данными

Эффективное управление неструктурированными данными — это задача, с которой сталкиваются многие разработчики. Именно здесь в игру вступает JSON. Как гибкий, безсхемный формат данных, JSON полезен для работы с данными, которые не укладываются в четкую табличную структуру.

Хранение данных JSON в SQLite позволяет использовать мощные возможности запросов SQLite для эффективного извлечения и манипуляции вашими данными JSON. Прелесть этого сочетания заключается в том, что SQLite оснащен встроенными функциями для управления данными JSON с простотой. Более того, популярность JSON как формата обмена данными и его переносимость означают, что данные JSON, хранящиеся в SQLite, могут легко делиться, перемещаться или экспортироваться в разные системы.

Поддержка JSON в SQLite созрела с течением времени. Она была впервые представлена как расширение в версии 3.9.0, выпущенной в 2015 году, но в более поздних версиях была добавлена встроенная поддержка JSON. SQLite позволяет сохранять и извлекать данные JSON с использованием столбца TEXT и набора функций JSON, таких как json(), json_extract(), json_object(), и json_array().

Понимание мощных функций SQLite для запросов JSON

SQLite управляет и манипулирует данными JSON с использованием функций JSON. Вот топ-10 функций JSON в SQLite, перечисленных для справки, и пример использования каждой будет продемонстрирован с помощью простого SQL-запроса в следующей секции.

  1. json(): Эта функция проверяет, является ли строка допустимым JSON. Если да, функция возвращает тот же JSON. Если нет, возвращает NULL.
  2. json_extract(): Эта функция извлекает объект из строки JSON с использованием пути.
  3. json_array(): Эта функция создает массив JSON.
  4. json_array_length(): Эта функция возвращает длину массива JSON.
  5. json_insert(): Эта функция вставляет значение JSON в строку JSON.
  6. json_object(): Эта функция создает объект JSON.
  7. json_remove(): Эта функция удаляет свойство из строки JSON.
  8. json_replace(): Эта функция заменяет значение в строке JSON.
  9. json_type(): Эта функция возвращает тип значения JSON (например, INTEGER, REAL, NULL, TRUE, FALSE, TEXT и BLOB).
  10. json_valid(): Эта функция проверяет, является ли строка допустимым JSON.

Практический ряд примеров для понимания функций кодирования и декодирования JSON в SQLite

В этом разделе мы предоставили минимальные примеры и краткое объяснение для каждой из функций JSON, которые мы перечислили в предыдущем разделе. Мы используем пример данных JSON от генератора Dadroit JSON. Вот оригинальный JSON для вашего контекста.

Функция json() в SQLite

Этот запрос преобразует текст JSON в объект JSON.

SELECT
    json ( '{"ID":1,"Name":"Forgotten in the Planet","Year":1970}' ) AS json_object;

Результат этого запроса будет выглядеть следующим образом:

json_object
{“ID”:1,”Name”:”Forgotten in the Planet”,”Year”:1970}

Функция json_extract() в SQLite

Этот запрос извлекает значение Name из объекта JSON, используя его как путь.

SELECT json_extract('{"ID":1,"Name":"Forgotten in the Planet","Year":1970}', '$.Name') AS movie_name;

Результат этого запроса будет выглядеть следующим образом:

movie_name
Forgotten in the Planet

Функция json_array() в SQLite

Этот запрос создает новый массив JSON из предоставленных входов.

SELECT
    json_array ( 1, 2, 3 ) AS array_result;

Результат будет выглядеть следующим образом:

array_result
[1,2,3]

Функция json_type() в SQLite

Этот запрос извлекает тип данных значения Year из объекта JSON.

SELECT
    json_type ( '{"ID":1,"Name":"Forgotten in the Planet","Year":1970}', '$.Year' ) AS property_type;

Результат будет выглядеть следующим образом:

property_type
integer

Функция json_array_length() в SQLite

Этот запрос подсчитывает количество элементов в массиве Cast в объекте JSON.

SELECT
    json_array_length ( '{"Genre":["Comedy","Crime"],"Cast":["Adrian Gratianna","Tani O''Hara","Tessie Delisle"]}', '$.Cast' ) AS array_length;

Результат будет выглядеть следующим образом:

array_length
3

Функция json_object() в SQLite

Этот запрос создает объект JSON с парами ключ-значение ID и Name.

SELECT
    json_object ( 'ID', 1, 'Name', 'Forgotten in the Planet' ) AS result;

Результат будет выглядеть следующим образом:

result
{“ID”:1,”Name”:”Forgotten in the Planet”}

Функция json_insert() в SQLite

Этот запрос вставляет свойство пары ключ-значение Director в объект JSON.

SELECT
    json_insert ( '{"ID":1,"Name":"Forgotten in the Planet","Year":1970}', '$.Director', 'Henrie Randell Githens' ) AS insert_movie;

Результат будет выглядеть следующим образом:

insert_movie
{“ID”:1,”Name”:”Forgotten in the Planet”,”Year”:1970,”Director”:”Henrie Randell Githens”}

Функция json_remove() в SQLite

Этот запрос удаляет пару ключ-значение Director из объекта JSON.

SELECT
    json_remove ( '{"ID":1,"Name":"Forgotten in the Planet","Year":1970,"Director":"Henrie Randell Githens"}', '$.Director' ) AS result_of_remove;

Результат будет выглядеть следующим образом:

result_of_remove
{“ID”:1,”Name”:”Forgotten in the Planet”,”Year”:1970}

Функция json_replace() в SQLite

Этот запрос заменяет Year в объекте JSON на новое значение 1971.

SELECT
     json_replace ( '{"ID":1,"Name":"Forgotten in the Planet","Year":1970,"Director":"Henrie Randell Githens"}', '$.Year', 1971 ) AS result_of_replace;

Результат будет выглядеть следующим образом:

result_of_replace
{“ID”:1,”Name”:”Forgotten in the Planet”,”Year”:1971,”Director”:”Henrie Randell Githens”}

Функция json_valid() в SQLite

Этот запрос проверяет, имеет ли предоставленная строка правильный синтаксис и структуру, необходимые для валидного JSON, и возвращает 1, если это так, и 0 в противном случае.

SELECT
     json_valid ( '{"ID":1,"Name":"Forgotten in the Planet","Year":1970,"Director":"Henrie Randell Githens"}' ) AS result_of_valid;

Результат будет выглядеть следующим образом:

result_of_valid
1

Практические примеры запросов для улучшенного использования функций JSON в SQLite

Теперь, когда вы узнали основы работы с JSON в SQLite, здесь представлены некоторые примеры практической работы с данными JSON в базе данных SQLite, используя упомянутые функции JSON и упомянутые данные JSON в качестве входных.

Хранение данных JSON в SQLite с помощью запросов на вставку

Прежде всего, необходимо вставить JSON в базу данных SQLite. Создадим таблицу с именем movies с одним полем под названием data, которое является текстовым полем, так как JSON можно хранить в SQLite в текстовом поле. В этом поле data будут храниться и извлекаться значения JSON:

CREATE TABLE movies ( data TEXT );

Далее вставим наш JSON в поле data таблицы movies:

INSERT INTO movies ( data )
 VALUES
     ( '{"ID":1,"Name":"Forgotten in the Planet","Year":1970,"Genre":["Comedy","Crime"],"Director":"Henrie Randell Githens","Cast":["Adrian Gratianna","Tani OHara","Tessie Delisle"],"Runtime":90,"Rate":7.0}' );

Для редактирования (замены, вставки, удаления и т.д.) JSON в SQLite можно использовать функции json_replace(), json_insert() и json_remove().

Следующий запрос заменяет название фильма на новое значение, где ID равен 1:

UPDATE movies
 SET data = json_replace ( data, '$.Name', 'Found in the Universe' )
 WHERE
     json_extract ( data, '$.ID' ) = 1;

Следующий запрос вставляет новую свойство в виде нового поля в ранее сохраненные данные JSON в строке:

UPDATE movies
 SET data = json_insert ( data, '$.Country', 'USA' )
 WHERE
     json_extract ( data, '$.ID' ) = 1;

Следующий запрос удаляет свойство Runtime из ранее сохраненных данных JSON в строке:

UPDATE movies
 SET data = json_remove ( data, '$.Runtime' )
 WHERE
     json_extract ( data, '$.ID' ) = 1;

Извлечение данных JSON из SQLite

Для извлечения данных JSON из SQLite можно использовать функцию json_extract() или сокращенный оператор ->:

Выберите название фильма:

SELECT
     json_extract ( data, '$.Name' )
 FROM
     movies
 WHERE
     json_extract ( data, '$.ID' ) = 1;

Или используя сокращенный оператор ->:

SELECT
     data -> '$.Name'
 FROM
     movies
 WHERE
     data -> '$.ID' = 1;

Извлеките список жанров:

SELECT
     json_extract ( data, '$.Genre' )
 FROM
     movies
 WHERE
     json_extract ( data, '$.ID' ) = 1;

Извлеките первого актера из списка Cast:

SELECT
     json_extract ( data, '$.Cast[0]' )
 FROM
     movies
 WHERE
     json_extract ( data, '$.ID' ) = 1;

Извлеките Year и Rate:

SELECT
     json_extract ( data, '$.Year' ) AS Year,
     json_extract ( data, '$.Rate' ) AS Rate
 FROM
     movies
 WHERE
     json_extract ( data, '$.ID' ) = 1;

Заключительные выводы

Отличная работа по завершению этого путешествия! Вы узнали, как тип данных JSON и база данных SQLite могут работать вместе. SQLite — удобный инструмент в вашем наборе. Он прост, но мощный и легкий в использовании. Несмотря на свою маленькую размер, он полон полезных функций.

Простыми словами, SQLite позволяет нам сохранять и извлекать данные JSON, используя текстовое поле и некоторые функции JSON. Эти функции позволяют нам изучать, анализировать и изменять данные JSON в нашей базе данных SQLite. SQLite предлагает множество инструментов для управления данными JSON, начиная от добавления и изменения данных JSON до извлечения их для различных целей. Мы рассмотрели десять основных функций JSON в SQLite, которые упрощают работу с данными JSON. Затем мы рассмотрели несколько примеров SQL-запросов, используя эти функции JSON в SQLite.

Помните: овладение навыками работы с JSON в SQLite — это умение, которое нужно практиковать более тщательно. Так что не стесняйтесь — ныряйте, экспериментируйте и учиться. В конце концов, если вам понравился этот гайд, не стесняйтесь делиться им. Наслаждайтесь своим путешествием по программированию!

Source:
https://dzone.com/articles/learning-the-basics-how-to-use-json-in-sqlite