[이렇게 사용하세요!] MySQL 8.0, 개발자를 위한 신규 기능 살펴보기! #4 JSON

NAVER CLOUD PLATFORM
NAVER CLOUD PLATFORM
5 min readJan 20, 2020

안녕하세요, 네이버 클라우드 플랫폼입니다.

저번 포스팅에 이어서 오늘은 ‘Cloud DB for My SQL 2.0 업데이트’의 4번째 기능 ‘JSON’과 관련된 내용을 전달해드리고자 합니다.

MySQL 8.0, 개발자를 위한 신규 기능 살펴보기! #3 Indexes

JSON

1. JSON 함수 관련 변경/추가 사항

2. Faster Update

3. JSON 데이터를 관계형 데이터로 변환

4. Document Store Architecture

1. JSON 함수 관련 변경/추가 사항

JSON과 같은 비정형 데이터를 저장해야 하는 요구사항이 늘어나면서 Mongo DB와 같은 Document Store Database가 유행하게 되었고, 지금까지 많이 사용되고 있습니다.

MySQL도 이런 흐름에 맞춰 5.7버전부터 Document를 저장할 수 있는 JSON Data 타입을 지원하게 되었고, 이를 생성/변경/조회하기 위한 SQL Functions을 사용할 수 있게 되었습니다.

이에 따라 RDBMS 방식을 유지하면서 JSON을 저장하는 도큐먼트스토어를 추가로 이용할 수 있게 되었는데요,

MySQL 8.0에서는 JSON 타입 데이터를 핸들링 하기 위한 함수와 관련된 변경과 함께 성능 개선을 위한 몇 가지 기능이 추가되었습니다.

MySQL 8.0에서는 JSON 데이터를 관계형 테이블로 보여주는 JSON_TABLE 함수를 포함해 몇 가지 함수의 추가 및 개선이 있었습니다.

JSON_TABLE() 함수와 관련해서는 잠시 후 예제를 통해 확인해보도록 하겠습니다.

나머지 신규 추가된 함수와 관련된 상세 내용은 MySQL 공식 문서를 참고해 주시기 바랍니다. (12.17.1 JSON Function Reference)

2. Faster Update

JSON 데이터를 업데이트하는 경우

- MySQL 5.7에서는 데이터를 삭제 후 insert 하는 방식으로 처리되었지만,

- MySQL 8.0에서는 업데이트 대상 데이터의 변경하고자 하는 부분만 update 할 수 있게 되었습니다.

동일하게 10만 건을 업데이트하는 쿼리를 각각의 버전에서 실행해보면, 단순하게는 수행 시간을 통해 성능이 향상되었음을 확인할 수 있습니다.

부분 업데이트가 가능해지면서 binlog에는 전체 JSON 문서를 기록하지 않게 되어 변경 내용이 적어지게 됐고,

이런 binlog 사이즈 감소가 로깅, 복제 반영을 위한 IO 감소 등으로 이어져 복제 성능 향상을 기대할 수 있게 되었습니다.

이런 부분 업데이트는 JSON 데이터의 모든 update에 적용되는 내용은 아닙니다.

위의 3가지 함수와 같이 새로운 필드를 추가하는 방식이 아니라, 기존에 있던 오브젝트를 변경하는 경우에만 부분 업데이트 지원이 가능하고,

변경될 데이터의 사이즈가 기존 데이터보다 크지 않아야 한다는 제한 사항이 있습니다.

3. JSON 데이터를 관계형 데이터로 변환

MySQL 8.0부터 JSON 데이터를 RDBMS의 테이블 형식으로 보여줄 수 있게 되었는데요,

이 함수를 사용하면 아래와 같이 일반 관계형 테이블 같은 VIEW로 보여줄 뿐 만 아니라 일반 테이블과의 JOIN도 가능하게 합니다.

MySQL에서는 이렇게 도큐먼트 스토어 기능을 내장 시키면서 SQL 쿼리를 사용해 JSON 데이터를 관계형 방식으로 처리할 수 있도록 지원하고 있는데요, MySQL 8.0에서는 여기서 더 나아가서 말하자면 마치 “noSQL”을 접근하는 것처럼 JSON 도큐먼트를 핸들링 할 수 있는 방식을 추가했습니다.

4. Document Store Architecture

바로 도큐먼트 스토어를 통해 JSON을 컬렉션에 저장하고, CRUD 작업을 통해 관리하기 위한 X DevAPI입니다.

Protobuf 라이브러리를 사용하는 X 프로토콜 기반의 CRUD 및 SQL 작업을 위한 비동기식 API가 MySQL 8.0에서 새롭게 소개되었는데요,

이를 통해 SQL보다는 API 방식으로 데이터를 처리하는 것을 선호하는 개발자를 위한 새로운 interface를 제공하고 있습니다.

글을 마무리하며…

이번 포스팅을 통해 MySQL 8.0의 네 번째 새로운 기능 ‘JSON’과 관련해 ‘1. JSON 함수 관련 변경/추가 사항’ ‘2. Faster Update’ ‘3. JSON 데이터를 관계형 데이터로 변환’ ‘4. Document Store Architecture’에 대해 자세히 소개해드렸습니다.

더 상세한 정보는 네이버 클라우드 플랫폼 공식 홈페이지를 통해서도 확인해보실 수 있습니다. 다음 포스팅에서는 마지막 기능인 ‘SQL DDL’ 기능을 만나보도록 하겠습니다.

긴 글 읽어주셔서 감사합니다. 항상 열일하는 네이버 클라우드 플랫폼이 되겠습니다.

--

--

NAVER CLOUD PLATFORM
NAVER CLOUD PLATFORM

We provide cloud-based information technology services for industry leaders from startups to enterprises.