-
쉽게 설명하는 Forward Index vs Inverted IndexInterview 2025. 3. 25. 08:40728x90
🔸 Forward Index (전방 인덱스) — 전통적인 데이터베이스 방식
문서를 중심으로 정보를 저장
예를 들어 책 여러 권이 있다고 가정해보세요.
Forward Index는 이렇게 저장하는 방식이에요:📘 Book 1: "I love Elasticsearch" 📘 Book 2: "Elasticsearch is powerful" 📘 Book 3: "I love databases"→ 이 경우, 각 문서가 어떤 단어를 포함하는지만 알고 있어요.
🔹 Inverted Index (역 인덱스) — 검색엔진 방식
단어를 중심으로 정보를 저장
이제 반대로 생각해봅시다.
"단어 → 어떤 문서에 포함되어 있는가?"를 저장하는 방식이에요:"elasticsearch" → [Book 1, Book 2] "love" → [Book 1, Book 3] "databases" → [Book 3]→ 어떤 단어를 검색하면 그 단어가 들어있는 문서 목록을 빠르게 찾을 수 있습니다.
🔍 검색할 때 왜 Inverted Index가 유리할까?
예를 들어, 사용자가 "love"라는 단어를 검색하면:
- Forward Index 방식이면 모든 문서를 하나하나 읽으며 "love"가 있는지 찾아야 해요. → 느림
- Inverted Index 방식이면 "love" 키만 조회하면 어떤 문서에 있는지 바로 나와요. → 빠름
요약 비교
항목 Forward Index Inverted Index 기준 문서 중심 단어 중심 구조 문서 → 단어들 단어 → 문서들 사용 전통적인 DB 검색엔진 (Lucene, ES) 장점 전체 문서 보기 용이 빠른 검색 (특히 전체 텍스트 검색) 단점 검색 느림 업데이트 관리 복잡 책 vs Elasticsearch 인덱스 구조 다이어그램
📘 책 (Book) ┌───────────────┐ │ 본문 내용 │ ← Forward Index (페이지 → 단어) ├───────────────┤ │ p.15: "Elasticsearch is powerful" │ │ p.42: "We use Elasticsearch for logs" │ │ p.88: "Full-text search using Elasticsearch" │ └───────────────┘ │ ▼ 📑 찾아보기 (찾아보기 섹션) ← Inverted Index (단어 → 페이지) ┌──────────────────────────────┐ │ "Elasticsearch" → [15, 42, 88] │ │ "logs" → [42] │ │ "search" → [88] │ └──────────────────────────────┘📦 Elasticsearch ┌───────────────┐ │ 문서 내용 │ ← Forward Index (문서 ID → 단어) ├───────────────┤ │ doc_1: "Elasticsearch is powerful" │ │ doc_2: "We use Elasticsearch for logs" │ │ doc_3: "Full-text search using Elasticsearch" │ └───────────────┘ │ ▼ 🧠 Inverted Index (검색용 인덱스) ┌──────────────────────────────┐ │ "elasticsearch" → [doc_1, doc_2, doc_3] │ │ "logs" → [doc_2] │ │ "search" → [doc_3] │ └──────────────────────────────┘- 책의 본문 = Forward Index
- 책의 찾아보기 = Inverted Index
- Elasticsearch도 내부에 Forward Index가 있지만, 검색 시엔 Inverted Index만을 사용함.
728x90'Interview' 카테고리의 다른 글
실시간 채팅 서비스를 설계 (0) 2025.03.26 Elasticsearch/OpenSearch 관련 인터뷰 질문 (0) 2025.03.25 go 언어 관련 인터뷰 질문들 (0) 2025.03.24 concurrency(동시성)와 parallelism(병렬성)의 차이 (0) 2025.03.24 Error Budget의 개념과 소진 시 대응 방안 (0) 2025.03.18