[sql] 객체 데이터 타입 (object, jsonb)

데이터베이스 시스템에서는 대부분의 데이터를 테이블 형태로 저장하고 관리합니다. 하지만 때로는 테이블의 한 행에 여러 개의 속성을 가지는 객체 데이터를 유지해야하는 경우가 있습니다. 이를 위해 SQL에서는 객체 데이터 타입을 지원합니다.

객체 데이터 타입

객체 데이터 타입은 여러 속성을 가진 복합 데이터를 저장할 수 있도록 하는 데이터 타입입니다. SQL에서는 object라는 키워드를 사용하여 객체를 선언하고 사용할 수 있습니다. 예를 들어, 아래와 같이 Person 객체를 선언할 수 있습니다.

CREATE TYPE Person AS (
    name text,
    age integer,
    address text
);

위의 예제에서 Personname, age, address라는 세 개의 속성을 가진 객체로 정의되었습니다.

객체를 사용하려면 테이블을 생성하거나 이미 존재하는 테이블에 컬럼으로 추가해야합니다. 예를 들어, Employees라는 테이블에 employee라는 Person 객체를 추가해보겠습니다.

CREATE TABLE Employees (
    id serial primary key,
    employee Person
);

위의 예제에서 Employees 테이블은 employee라는 이름의 Person 객체를 포함하는 컬럼을 가지고 있습니다.

객체 데이터는 일반적으로 SQL 문을 사용하여 조회 및 수정될 수 있습니다. 아래의 예제는 Employees 테이블에서 employee의 이름을 조회하는 SQL 문입니다.

SELECT employee.name FROM Employees;

JSONB 데이터 타입

또 다른 객체 데이터 타입으로는 jsonb 타입이 있습니다. jsonb는 JSON(JavaScript Object Notation) 형식을 저장하고 처리하는 데이터 타입으로, 객체 데이터를 유연하게 저장할 수 있습니다.

jsonb 타입은 다양한 데이터 형식을 지원합니다. 예를 들어, 숫자, 문자열, 배열, 객체 등을 저장할 수 있으므로 매우 다양한 형태의 데이터를 저장할 수 있습니다.

jsonb 데이터를 사용하기 위해서는 테이블을 생성할 때 jsonb 컬럼을 추가해야합니다. 아래의 예제는 Employees 테이블에 properties라는 jsonb 컬럼을 추가하는 방법을 보여줍니다.

CREATE TABLE Employees (
    id serial primary key,
    properties jsonb
);

jsonb 데이터에 접근하기 위해서는 SQL 문을 사용하여 해당 속성의 값을 조회하거나 수정할 수 있습니다. 아래의 예제는 Employees 테이블에서 properties 컬럼의 name 속성 값을 조회하는 SQL 문입니다.

SELECT properties->>'name' FROM Employees;

마무리

객체 데이터 타입은 SQL에서 복합 데이터를 저장하고 조회하는데 유용한 기능입니다. object 타입을 사용하여 객체를 정의하거나 jsonb 타입을 사용하여 유연하게 데이터를 저장할 수 있습니다.

객체 데이터 타입을 활용하여 복잡한 데이터 모델을 구축하고 데이터를 효율적으로 관리할 수 있습니다. SQL에서 객체 데이터 타입에 대한 이해는 현대적인 데이터베이스 시스템에서 필수적인 지식입니다.

참고 자료