2015년 8월 29일 토요일

MYSQL Json type column

MYSQL Json type column

Mysql 5.7.8 에서 부터는 JSON 타입이라는 column이 생겨서
(Javascript object Notation) 을 저장해서 사용할 수 있다.
장점
  • 자동 valdiation 체크
  • 저장 포맷의 최적화
  • JSON object를 다 읽을 필요 없이 key, value를 찾을수 있습니다.
제한
  • JSON type의 길이 제한 : 환경변수: max_allowed_packet 을 찾아봅니다.
  • JSON type의 정렬 제한 : max_sort_length 설정 값을 따릅니다.
정보
  • JSON context의 string format은 utf8mb4
메소드
  • JSON_ARRAY:
    • JSON Array를 만드는 함수
    • eg) JSON_ARRAY(‘list1’, ‘list2’, ‘list3’) = [list1,list2,list3]
  • JSON_OBJECT:
    • JSON Object를 만드는 함수    
    • eg) JSON_OBJECT(‘key1’, value, ‘key2’, value) = {key1: value, key2: value}
  • JSON_MERGE:
    • 두개의 JSON Object를 머지하는 함수
    • eg) JSON_MERGE({x1: v1}, {x2: v2}) = {x1: v1, x2: v2}
  • JSON_EXTRACT:
    • JSON Object에서 key에 해당하는 value의 검색하는 메소드 입니다.

$ 를 통해 검색 함, $.{{KEY_NAME}}, $[{{INDEX_NUM}}] 로도 접근 가능
$[] 를 통해 모든 값도 가져올수 있음 ) 파이썬의 values 와 같은 느낌
$*.b를 통해 sub object도 검색 가능
JSON_EXTRACT(‘{“name”: ‘daniel’, “id”: 1}’, $.name) = daniel —검색시 대소문자 구분 : null, true,false 도 예외는 아닙니다.

  • JSON_INSERT:
    • JSON object에 JSON object를 추가하는 메소드 입니다.
    • key,value를 추가할수 있습니다. 이미 있을 경우 변경되지 않습니다.
  • JSON_REPLACE:
    • JSON object에 key에 매칭되는 값을 변경하는 메소드 입니다.
    • key에 해당하는 value를 변경할수 있습니다. 이미 있지 않을 경우 추가 되지 않습니다.
  • JSON_SET:
    • JSON_INSERT + JSON_REPLACE를 합친 메소드 입니다.
  • JSON_REMOVE:
    • 들어간 내용을 제거하고, 제거된 JSON을 리턴합니다.
연산자
  • = ,< ,<=, >, =>, <=> operator 사용가능 BETWEEN, IN은 제공안합니다.

비교시 우선 순위
  1. BLOB
  2. BIT
  3. OPAQUE
  4. DATETIME
  5. TIME
  6. DATE
  7. BOOLEAN
  8. ARRAY
  9. OBJECT
  10. STRING
  11. INTEGER, DOUBLE
  12. NULL

ORDER BY 도 지원
  • ORDER BY CAST(JSON_EXTRACT(jdoc, ‘$.id’) AS UNSIGNED)

댓글 없음:

댓글 쓰기