В этом руководстве мы исследуем увлекательное пересечение двух популярных технологий: 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-запроса в следующей секции.
json()
: Эта функция проверяет, является ли строка допустимым JSON. Если да, функция возвращает тот же JSON. Если нет, возвращает NULL.json_extract()
: Эта функция извлекает объект из строки JSON с использованием пути.json_array()
: Эта функция создает массив JSON.json_array_length()
: Эта функция возвращает длину массива JSON.json_insert()
: Эта функция вставляет значение JSON в строку JSON.json_object()
: Эта функция создает объект JSON.json_remove()
: Эта функция удаляет свойство из строки JSON.json_replace()
: Эта функция заменяет значение в строке JSON.json_type()
: Эта функция возвращает тип значения JSON (например, INTEGER, REAL, NULL, TRUE, FALSE, TEXT и BLOB).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