728x90
반응형
RDBMS 인덱스 적용 사례 (PostgreSQL)
상황: 항공 운항정보를 저장한 테이블로 수십억 건의 데이터가 존재.
주로 항공편 번호와 출발 시간, 도착시간 기준으로 검색이 많이 이루어진다.
적용 방법:
- 인덱스 생성: 항공편 번호와 출발 시간에 인덱스를 생성하여 검색 속도를 높인다.
- 인덱스 유형 선택: 기본적으로 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로 수억 건의 데이터가 존재. 주로 로그 레벨과 타임스탬프를 기준으로 검색이 많이 이루어졌음.
적용 방법:
- 인덱스 생성: 로그 레벨과 타임스탬프에 인덱스를 생성하여 검색 속도를 높일수 있다.
- 인덱스 유형 선택: 단일 필드 인덱스와 복합 인덱스를 사용하여 인덱싱을 구성 하였다.
인덱스 생성 코드:
// 로그 레벨에 인덱스 생성
db.logs.createIndex({ log_level: 1 });
// 타임스탬프에 인덱스 생성
db.logs.createIndex({ timestamp: 1 });
// 복합 인덱스 생성 (로그 레벨과 타임스탬프)
db.logs.createIndex({ log_level: 1, timestamp: 1 });
이와 같이, RDBMS와 NoSQL에서 인덱스를 적절히 사용하면 대량의 데이터를 효율적으로 검색할 수 있다.
- 끝 -
728x90
반응형
'플젝 구현내용 정리' 카테고리의 다른 글
사이드카 패턴을 적용한 Service Mesh (Envoy Proxy) 적용기 (0) | 2024.09.03 |
---|---|
그라파나(Grafana), 프로메테우스(Prometheus), MongoDB (1) | 2024.09.03 |
데드락(Dead Lock)과 레이스컨디션(Race Condition)을 해결한 사례 (0) | 2024.09.03 |
RAID 구현 연구 사례 (AWS EC2, RAID 1+0) (0) | 2024.09.03 |
Scalable Distributed Systems 구축 사례 정리 (0) | 2024.09.03 |