기초 학습: SQLite에서 JSON 사용하기

이 가이드에서는 두 가지 인기 있는 기술, JSON과 SQLite의 매력적인 교차점을 탐색합니다. SQLite에서 JSON을 사용하는 방법을 아는 것은 특히 테이블 구조에 완전히 맞지 않을 수 있는 복잡한 데이터 구조를 다룰 때 현대 소프트웨어 개발에서 중요합니다. 경험 많은 개발자이든 지식을 확장하려는 열망가이든, 이 튜토리얼은 SQLite 데이터베이스에서 JSON을 사용하는 방법을 배우기 시작하는 데 도움이 됩니다.

시작해 보겠습니다!

SQLite로 모던 애플리케이션 데이터 관리 강화

SQLite는 가장 널리 배포되고 사용되는 데이터베이스 엔진으로, 복잡한 설정이나 서버 연결이 필요하지 않은 사용자 친화적인 데이터베이스입니다. SQLite는 직관적이고 다양한 애플리케이션에 적용할 수 있어 소프트웨어 개발에서 주요 선택지가 되었습니다. SQLite는 작은 바이너리 크기를 가지며, 일반적으로 1MB 미만이므로 다른 데이터베이스보다 가볍습니다. 게다가 SQLite는 ACID 원칙을 완전히 준수합니다.

SQLite의 또 다른 독특한 특징은 개별 애플리케이션과 스마트 홈 가전 제품과 같은 인터넷 연결 기기에 적합하다는 것입니다. 이는 사물인터넷(IoT)의 일부입니다. 또한 간단함에도 불구하고 SQLite는 표준 SQL 언어에 강력한 지배력을 보입니다. 트랜잭션, 서브쿼리, 트리거와 같은 기능을 처리할 수 있습니다. 따라서 SQLite는 사용하기 쉽지만 여전히 매우 강력합니다.

SQLite의 기능은 단순한 데이터 저장소를 넘어서 효율적이고 사용자 친화적인 기능을 제공합니다. 전문 검색 및 블롭 지원과 같은 기능을 포함합니다. 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은 표格格 구조에 깔끔하게 맞지 않는 데이터를 처리하는 데 유용합니다.

SQLite에 JSON 데이터를 저장함으로써 SQLite의 강력한 쿼리 기능을 활용하여 JSON 데이터를 효율적으로 추출하고 조작할 수 있습니다. 이 조합의 아름다움은 SQLite가 간단하게 JSON 데이터를 관리하기 위한 기본 제공 함수를 제공한다는 사실에 있습니다. 또한 JSON이 데이터 교환 형식으로서 인기가 있고 이식성이 있기 때문에 SQLite에 저장된 JSON 데이터는 쉽게 공유, 이전 또는 다른 시스템으로 내보낼 수 있습니다.

SQLite의 JSON 지원은 시간이 지남에 따라 성숙해졌습니다. 처음에는 2015년에 발표된 3.9.0 버전의 확장으로 소개되었지만 이후 버전에서는 JSON에 대한 기본 제공 지원이 제공되었습니다. SQLite를 사용하면 TEXT 열과 json(), json_extract(), json_object(), json_array()와 같은 JSON 함수 套件을 사용하여 JSON 데이터를 저장하고 가져올 수 있습니다.

SQLite의 강력한 JSON 쿼리 함수 이해하기

SQLite는 JSON 함수를 사용하여 JSON 데이터를 관리 및 조작합니다. 다음은 SQLite에서 가장 자주 사용되는 상위 10개의 JSON 함수를 참조를 위해 나열한 것이며, 각각의 사용 사례는 다음 섹션에서 간단한 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인지 확인합니다.

SQLite에서 JSON 인코드 및 디코드 함수를 이해하기 위한 실용적인 예시 시리즈

이 섹션에서는 이전 섹션에서 나열한 JSON 함수들에 대해 각각 최소한의 예제와 간단한 설명을 제공합니다. 예제로 Dadroit JSON 생성기에서 가져온 JSON 데이터를 사용합니다. 여기 원본 JSON이 있습니다.

SQLite의 json() 함수

이 쿼리는 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}

SQLite의 json_extract() 함수

이 쿼리는 경로로 사용하여 JSON 객체에서 Name 값을 추출합니다.

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

이 쿼리의 결과는 다음과 같습니다:

movie_name
Forgotten in the Planet

SQLite의 json_array() 함수

이 쿼리는 제공된 입력으로부터 새로운 JSON 배열을 만듭니다.

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

결과는 다음과 같습니다:

array_result
[1,2,3]

SQLite의 json_type() 함수

이 쿼리는 JSON 객체에서 Year 값의 데이터 타입을 가져옵니다.

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

결과는 다음과 같습니다:

property_type
integer

SQLite의 json_array_length() 함수

이 쿼리는 JSON 객체에서 Cast 배열의 요소 수를 셉니다.

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

결과는 다음과 같습니다:

array_length
3

SQLite의 json_object() 함수

이 쿼리는 IDName 키-값 쌍으로 JSON 객체를 생성합니다.

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

결과는 다음과 같습니다:

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

SQLite에서 json_insert() 함수

이 쿼리는 JSON 객체에 Director 키-값 속성을 삽입합니다.

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”}

SQLite에서 json_remove() 함수

이 쿼리는 JSON 객체에서 Director 키-값 쌍을 제거합니다.

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}

SQLite에서 json_replace() 함수

이 쿼리는 JSON 객체에서 Year를 새 값 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”}

SQLite에서 json_valid() 함수

이 쿼리는 제공된 문자열이 유효한 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

SQLite에서 JSON 함수를 사용한 실용적인 쿼리 예제

이제 SQLite에서 JSON의 기본을 배웠으니, 앞서 언급한 JSON 함수와 입력으로 사용된 JSON 데이터를 사용하여 SQLite 데이터베이스에서 JSON 데이터로 실제 작업 흐름의 예제를 제시합니다.

SQLite에서 삽입 쿼리로 JSON 데이터 저장

먼저, JSON을 SQLite 데이터베이스에 삽입해야 합니다. movies라는 테이블을 하나의 필드인 data를 텍스트 필드로 생성하겠습니다. SQLite에서 JSON을 텍스트 필드에 저장할 수 있으므로 data 필드를 사용하여 JSON 값을 저장하고 검색할 것입니다.

CREATE TABLE movies ( data TEXT );

그런 다음 테이블 movies의 필드 data에 JSON을 삽입하겠습니다.

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}' );

SQLite에서 JSON을 편집(교체, 삽입, 제거 등)하려면 json_replace(), json_insert(), json_remove() 함수를 사용할 수 있습니다.

다음 쿼리는 ID1인 영화의 name을 새 값으로 교체합니다.

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;

다음 쿼리는 이전에 저장된 행에서 JSON 데이터에서 Runtime 속성을 제거합니다.

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

SQLite에서 JSON 데이터 추출

SQLite에서 JSON 데이터를 검색하려면 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;

캐스트 목록에서 첫 번째 배우 검색:

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

YearRate 추출:

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 데이터를 저장하고 검색할 수 있게 해줍니다. 이러한 함수를 사용하면 SQLite 데이터베이스의 JSON 데이터를 탐색, 분석 및 변경할 수 있습니다. SQLite는 JSON 데이터를 관리하기 위한 많은 도구를 제공합니다. 데이터 추가 및 변경부터 다양한 목적으로 데이터 검색까지 말이죠. 우리는 SQLite에서 JSON 데이터 처리를 더 쉽게 만드는 데 사용되는 주요 10가지 JSON 함수에 대해 알아보았습니다. 그런 다음 이러한 JSON 함수를 사용하여 SQLite에서 SQL 쿼리의 추가 예제를 살펴보았습니다.

기억하세요: SQLite와 JSON을 사용하는 능력은 보다 철저하게 연습해야 할 기술입니다. 그러니 두려워하지 마시고 뛰어들어 실험하고 배워보세요. 마지막으로, 이 가이드가 도움이 되셨다면 언제든지 공유하실 수 있습니다. 코딩 여정을 즐기세요!

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