최근 30분간 동시 방문자 수를 표시합니다. (~)
최고 동시 방문자 수 -
어제: 0명 / 오늘: 0명
Supabase(PostgreSQL)에서 테이블을 생성할 때 각 컬럼의 데이터 타입 선택은 데이터를 효율적으로 활용하고 검색이나 처리 성능을 최적화하는 데 중요합니다.
그리고 단순히 데이터를 저장하는 것뿐만 아니라 이후 데이터베이스를 확장하거나 유지/보수하는 부분에도 영향을 미치기 때문에 신중한 설계가 필요합니다.
처음 PostgreSQL 데이터 타입을 접하거나 익숙하지 않다면 어떤 타입을 선택해야 할지 막막할 수 있습니다.
그래서 데이터 타입을 선택하는 데 도움이 될 수 있도록 다음과 같이 설명과 함께 표로 정리했습니다.
표를 참고해서 프로젝트에 적합한 데이터베이스 구조를 설계해 보세요!
| Supabase | Prisma | TypeScript | 설명 |
|---|---|---|---|
int2 |
Int |
number |
등급, 나이, 평점 등 작은 범위의 정수 값(-32,768 ~ +32,767)을 다룰 때 사용합니다.대규모 데이터를 처리할 때 저장 공간을 좀 더 절약할 수 있습니다. |
int4 |
Int |
number |
가장 보편적인 범위의 정수 값(-2,147,483,648 ~ +2,147,483,647)입니다. |
int8 |
BigInt |
bigint |
매우 큰 범위의 정수 값(-9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,807)입니다.대량 데이터의 ID, 조회수, 큰 금액 등 값이 범위가 매우 커야 하는 경우에 사용합니다. |
float4 |
Float |
number |
소수점 아래 6자리까지의 정확도를 제공하는 부동소수점 값입니다. 메모리 효율성이 중요하거나 온도, 좌표 같은 높은 정밀도가 필요하지 않은 경우에 사용합니다. |
float8 |
Float |
number |
소수점 아래 15자리까지의 정확도를 제공하는 부동소수점 값입니다. 과학 계산, 항공 데이터 등의 보다 정밀한 계산이 필요한 경우에 사용합니다. |
numeric |
Decimal |
Decimal |
금융 거래나 회계 계산처럼 오차가 허용되지 않는 완벽한 정확도를 요구하는 십진수 계산이 필요한 경우에 사용합니다. 상대적으로 처리 속도가 느립니다. |
json |
Json |
Prisma.JsonValue |
구조화된 JSON 데이터를 문자열로 저장합니다. 데이터를 처리할 때마다 파싱해야 하므로 단순 저장이 아닌 이상 jsonb 사용을 추천합니다. |
jsonb |
Json |
Prisma.JsonValue |
JSON 데이터를 바이너리 형태로 저장합니다. 처리 속도가 빠르고 인덱싱이 가능해 데이터 검색이나 수정이 자주 필요한 경우에 유용합니다. |
text |
String |
string |
긴 텍스트, 게시글 내용 등 길이 제한이 없는 문자열입니다. |
varchar |
String |
string |
사용자 이름, 이메일 등 길이가 제한적인 문자열입니다. 길이 제한을 확인하는 과정에서 약간의 오버헤드가 발생할 수 있으므로 대부분의 경우 text 사용을 추천합니다. |
uuid |
String |
string |
범용 고유 식별자를 저장합니다. 고유한 ID가 필요한 경우에 사용하며 32자리의 16진수로 구성됩니다. |
date |
DateTime |
Date |
시간 정보를 제외한 날짜를 저장하며 생년월일, 기념일 등을 다룰 때 사용합니다.timestamptz 사용을 추천합니다.예시) 2025-12-16 => 2025-12-16T00:00:00.000Z |
time |
DateTime |
Date |
날짜 정보를 제외한 시간만을 저장하며 영업 시간, 일과 시간 등을 다룰 때 사용합니다.timestamptz 사용을 추천합니다.예시) 08:10:28 => 1970-01-01T08:10:28.000Z |
timetz |
DateTime |
Date |
시간과 시간대(Time Zone) 정보를 함께 저장합니다.timestamptz 사용을 추천합니다.예시) 08:10:28+00 => 1970-01-01T08:10:28.000Z |
timestamp |
DateTime |
Date |
날짜와 시간을 함께 저장하며 이벤트 발생 시각, 데이터 생성/수정 시각 등을 다룰 때 사용합니다.timestamptz 사용을 추천합니다.예시) 2025-01-15 08:10:28.000 => 2025-01-15T08:10:28.000Z |
timestamptz |
DateTime |
Date |
날짜, 시간, 시간대(Time Zone) 정보를 모두 저장합니다. 글로벌 서비스에서 시간대를 고려해야 하는 경우에 사용하며 가장 추천하는 방식입니다. 예시) 2025-01-15 08:10:28.000+00 => 2025-01-15T08:10:28.000Z |
bool |
Boolean |
boolean |
참/거짓의 불린 값을 저장합니다. |