데이터베이스를 설계하거나 데이터를 효율적으로 관리할 때, 반복적인 계산을 최소화하고 데이터를 직관적으로 표현할 수 있는 방법이 필요합니다.
MariaDB의 계산된 필드(computed column)는 이런 요구를 충족시키는 기능 중 하나입니다.
오늘은 계산된 필드의 개념, 사용법, 장단점, 그리고 활용 사례를 다루겠습니다.
계산된 필드란?
계산된 필드는 테이블의 다른 열(Column) 값을 기반으로 계산된 결과를 저장하거나 조회되는 열입니다.
계산된 필드는 두 가지 형태로 나뉩니다.
가상 컬럼(Virtual Column)
- 계산된 값을 저장하지 않고 필요할 때 동적으로 계산합니다.
- 가상 컬럼은 데이터가 물리적으로 저장되지 않고 동적으로 계산되기 때문에, 직접적으로 인덱스를 생성할 수 없습니다.
- 계산이 자주 변경되거나 저장 공간을 절약해야 하는 경우에 주로 선택됩니다.
저장 컬럼(Persistent Column)
- 계산 결과를 테이블에 저장하여 반복적인 계산을 방지합니다.
- 저장 컬럼은 계산 결과가 물리적으로 테이블에 저장되므로, 일반적인 컬럼처럼 인덱스를 생성할 수 있습니다. 따라서 저장 컬럼은 인덱스를 통해 검색 성능을 최적화하는 데 유용합니다.
- 데이터를 자주 조회하거나 인덱스가 필요한 경우에 주로 선택됩니다.
계산된 필드의 장점
- 데이터 일관성 유지 : 계산 규칙이 테이블 스키마에 정의되어 있어, 애플리케이션 코드에서 계산 로직을 중복적으로 구현할 필요가 없습니다.
- 효율성 향상 : 저장 컬럼을 활용하면, 계산된 데이터를 다시 계산할 필요 없이 바로 조회할 수 있습니다.
- 가독성 향상 : 데이터베이스 설계를 더 직관적으로 만들어 테이블을 사용하는 개발자들이 쉽게 이해할 수 있습니다.
계산된 필드 생성 방법
MariaDB에서 계산된 필드를 생성하려면 CREATE TABLE이나 ALTER TABLE 문을 사용합니다.
1. 가상 컬럼 생성하기
가상 컬럼은 AS 키워드를 사용하여 정의됩니다.
CREATE TABLE orders (
ID INT AUTO_INCREMENT PRIMARY KEY,
PRICE DECIMAL(10, 2),
QUANTITY INT,
TOTAL DECIMAL(10, 2) AS (PRICE * QUANTITY) VIRTUAL
);
위의 예제에서 TOTAL 컬럼은 PRICE와 QUANTITY 값을 곱한 결과를 계산합니다.
이 값은 실제로 저장되지 않고, 조회 시에만 계산됩니다.
2. 저장 컬럼 생성하기
저장 컬럼은 STORED 키워드를 사용하여 생성합니다.
CREATE TABLE orders2 (
ID INT AUTO_INCREMENT PRIMARY KEY,
PRICE DECIMAL(10, 2),
QUANTITY INT,
TOTAL DECIMAL(10, 2) AS (PRICE * QUANTITY) STORED
);
이 경우 TOTAL 값은 테이블에 물리적으로 저장되며, 삽입(INSERT) 또는 갱신(UPDATE) 시 자동으로 계산됩니다.
계산된 필드 관리
기존 테이블에 계산된 필드를 추가하거나 수정하려면 ALTER TABLE을 사용합니다.
계산된 필드 추가하기
ALTER TABLE orders
ADD COLUMN TOTAL DECIMAL(10,2) AS (PRICE * QUANTITY) STORED;
계산된 필드 삭제하기
ALTER TABLE orders DROP COLUMN TOTAL;
계산된 필드의 제약사항
- 지원되지 않은 함수 : 계산된 필드에서는 일부 함수나 표현식이 제한될 수 있습니다.
- 저장 컬럼 업데이트 제한 : 저장 컬럼은 직접 업데이트할 수 없으며, 이를 생성하는 기본 컬럼이 변경될 때만 값이 갱신됩니다.
- 성능 문제 : 가상 컬럼은 대규모 데이터를 반복적으로 조회할 때 성능 이슈가 발생할 수 있습니다.
활용 사례
- 전자상거래 : 제품 가격과 수량을 기반으로 주문 총액을 계산
- 로그 분석 : 접속 시간 차이를 계산하여 사용자 세션의 지속 시간 추적
- 금융 시스템 : 거래 수수료나 세금 계산
결론
MariaDB의 계산된 필드는 데이터베이스의 효율성과 일관성을 높이는 데 매우 유용한 기능입니다.
가상 컬럼과 저장 컬럼을 적절히 활용하면 반복적인 계산 작업을 줄이고, 데이터베이스 설계를 더 깔끔하게 유지할 수 있습니다.
MariaDB를 사용하면서 계산된 필드를 적극적으로 활용해시기 바랍니다.
'MariaDB' 카테고리의 다른 글
게시판 DB 테이블 설계하기 (0) | 2025.01.27 |
---|---|
MariaDB 백업방식, 물리 백업과 논리 백업의 차이와 활용법 (1) | 2025.01.25 |
MariaDB PK 설정하지 않은 테이블 조회하기 (1) | 2025.01.17 |
MariaDB 날짜 형태를 저장할때 varchar 와 date 차이점 (0) | 2025.01.16 |
MariaDB PK(Primary Key) 설계 가이드 (0) | 2025.01.12 |