728x90
반응형
1. hstore 타입의 내부 저장 구조
PostgreSQL의 hstore 타입은 Key-Value 쌍을 저장하는 자료형이다.
내부적으로는 바이너리 형태로 저장되게 된다.
- 초기 입력은 문자열 형태로 입력되지만, 실제 데이터는 바이너리로 압축하여 저장됨
- 각 Key-Value 쌍은 내부적으로 바이너리로 인코딩되며, 데이터 접근 시 이를 파싱하여 처리한다.
- 따라서 일반적으로 저장공간 효율성이 뛰어난 편이며, JSON 타입과 비교할 때 좀 더 간결하게 저장될 수 있다.
2. hstore 타입의 인덱스 사용법
PostgreSQL의 hstore는 다음과 같은 인덱스들을 지원한다.
(1) GIN 인덱스
- 가장 자주 쓰이며 권장되는 방법이다
- hstore 필드에서 특정 key의 존재 여부나 특정 key-value 쌍이 존재하는지(@> 연산자) 등 다양한 검색 시 매우 효율적으로 동작
CREATE INDEX idx_hstore_gin ON table USING GIN (hstore_column);
예시 쿼리:
SELECT * FROM table WHERE hstore_column ? 'somekey';
SELECT * FROM table WHERE hstore_column @> 'key => value';
(2) GiST 인덱스
- GIN에 비해 범용성이 약간 떨어지고 성능상 GIN보다 덜 효과적인 경우가 많으나 특정 용례에서 유리할 수 있다.
- 특히 동적 쿼리나 범위 쿼리 등에 유리할 수 있다.
CREATE INDEX idx_hstore_gist ON table USING GiST (hstore_column);
3. 블룸필터 (Bloom filter)의 지원 여부
- PostgreSQL의 기본 hstore 타입 및 기본 인덱스에서는 내부적으로 블룸필터를 직접 지원하지는 않음
- 그러나 PostgreSQL에서는 bloom 확정을 제공하여 사용자가 명시적으로 여러 칼럼에 대해 블룸필터를 만들 수는 있다.
- 다만 이는 일반적인 hstore의 활용법과는 약간 다르다.
- hstore 데이터 자체에 대해서는 기본적으로 블룸필터가 자동 적용되지 않는다.
반응형
'DB > PostgreSQL' 카테고리의 다른 글
pgdog (0) | 2025.06.13 |
---|---|
Postgres 메모리 설정을 최대한 활용하는 방법 (2) | 2025.04.27 |
PostgreSQL에서 BloomFilter 사용하기 (0) | 2025.04.22 |
PostgreSQL 조인 전략 (0) | 2025.04.17 |
PostgreSQL 기본 데이터베이스 (Template0, Template1, Postgres) (0) | 2025.04.16 |