데이터 무결성을 유지하면서 스키마 유연성 확보
구조화된 데이터와 반구조화된 데이터를 모두 활용하는 하이브리드 데이터 모델링은 ACID 트랜잭션이나 표준 SQL을 희생하지 않으면서도 현대적인 웹, 모바일 및 IoT 애플리케이션이 요구하는 유연성 요건을 충족할 수 있습니다.
JSON + 관계형: 하이브리드 데이터 모델 사용 방법
구조화 및 반구조화 데이터를 모델링하고, SQL을 사용하여 JSON 문서를 색인화 및 쿼리하며, JSON 문서의 데이터 무결성을 보장하는 방법을 알아보세요.
지금 시청하세요Relational + JSON을 사용해야 하는 5가지 이유
트랜잭션을 사용하여 여러 JSON 문서를 삽입하거나 수정할 수 있습니다.
JSON 문서 내의 특정 필드에 무결성 제약 조건을 적용할 수 있습니다.
표준 SQL 함수를 사용하여 JSON 문서를 쿼리할 수 있으며, JOIN 데이터를 기존 테이블과 JOIN 수 있습니다.
JSON 문서 내의 특정 필드를 인덱싱할 수 있습니다.
JSON 문서를 관계형 데이터로 반환할 수 있으며, 그 반대의 경우도 마찬가지입니다.
하이브리드 데이터 모델 쿼리
사용자 프로필을 한 행에 저장하고 싶다면 어떻게 해야 할까요? 네, 사용자에게는 user_id, 이름, 국가(그 외 정보도 포함)가 있습니다. 하지만 사용자는 개인 이메일 주소와 업무용 이메일 주소는 물론, 휴대폰 번호와 사무실 전화번호도 가지고 있을 수 있습니다. 어떤 사용자는 트위터와 링크드인 계정을 가지고 있는 반면, 다른 사용자는 페이스북과 인스타그램 계정을 가지고 있을 수도 있습니다. 관심사는 어떨까요?
JSON 함수를 사용하면 사용자 프로필을 단일 행에 저장할 수 있습니다.
| user_id | 이름 | 국가 | attr |
|---|---|---|---|
| sjohnson | 셰인 | 미국 | { "email": { "work": "shane.johnson@mariadb.com"}, "phone": { "mobile": "(555) 555-5555"}, "social": { "twitter": "@shane_dev", "linkedin": "/in/shanekjohnson"}, "interests": [ "Science Fiction", "Distributed Systems"] |
SELECT , JSON_VALUE(attr, "$.email.personal") AS email, JSON_VALUE(attr, "$.social.twitter") AS twitter, JSON_VALUE(attr, "$.interests[0]") AS favorite_interest FROM WHERE = "sjohnson";
| 이름 | 이메일 | 트위터 | 좋아하는 것_관심사 |
|---|---|---|---|
| 셰인 | 없음 | @shane_dev | 공상과학 |