본문 바로가기

플젝 구현내용 정리

DBMS 인덱스 적용 사례

728x90
반응형

RDBMS 인덱스 적용 사례 (PostgreSQL)

상황: 항공 운항정보를 저장한 테이블로 수십억 건의 데이터가 존재.

주로 항공편 번호와 출발 시간, 도착시간 기준으로 검색이 많이 이루어진다.

 

적용 방법:

  1. 인덱스 생성: 항공편 번호와 출발 시간에 인덱스를 생성하여 검색 속도를 높인다.
  2. 인덱스 유형 선택: 기본적으로 B-tree 인덱스를 사용했다. (대부분의 DB의 경우 B-tree 인덱스가 기본값으로 설정되어 있다.)

인덱스 생성 코드:

-- 항공편 번호에 인덱스 생성
CREATE INDEX idx_flight_number ON flight_info(flight_number);

-- 출발 시간에 인덱스 생성
CREATE INDEX idx_departure_time ON flight_info(departure_time);

-- 복합 인덱스 생성 (항공편 번호와 출발 시간)
CREATE INDEX idx_flight_number_departure_time ON flight_info(flight_number, departure_time);

NoSQL 인덱스 적용 사례 (MongoDB)

상황: 시스템의 로그를 저장하는 DB로 수억 건의 데이터가 존재. 주로 로그 레벨과 타임스탬프를 기준으로 검색이 많이 이루어졌음.

적용 방법:

  1. 인덱스 생성: 로그 레벨과 타임스탬프에 인덱스를 생성하여 검색 속도를 높일수 있다.
  2. 인덱스 유형 선택: 단일 필드 인덱스와 복합 인덱스를 사용하여 인덱싱을 구성 하였다.

인덱스 생성 코드:

// 로그 레벨에 인덱스 생성
db.logs.createIndex({ log_level: 1 });

// 타임스탬프에 인덱스 생성
db.logs.createIndex({ timestamp: 1 });

// 복합 인덱스 생성 (로그 레벨과 타임스탬프)
db.logs.createIndex({ log_level: 1, timestamp: 1 });

이와 같이, RDBMS와 NoSQL에서 인덱스를 적절히 사용하면 대량의 데이터를 효율적으로 검색할 수 있다.

 

- 끝 -

728x90
반응형