138
자바로 배우는 핵심 자료구조와 알고리즘
자, 새로운 버전의 인덱서를 만들어 봅시다.
14.1
레디스
이전 버전의 인덱서는 인덱스를 두 가지 자료구조에 저장합니다.
TermCounter
클래스는 검색
어별로 웹 페이지 등장 횟수를 매핑하고,
Index
클래스는 검색어별로 검색어가 등장한 페이지
의 집합을 매핑합니다.
이러한 자료구조는 실행 중인 자바 프로그램의 메모리 저장되는데, 이것은 프로그래밍이 멈추
면 인덱스가 모두 사라진다는 것을 의미합니다. 실행 중인 프로그램의 메모리에 저장된 데이터
를 휘발성
volatile
이라고 하는데, 이는 프로그램이 끝나면 모두 날아가기 때문입니다.
데이터를 생성한 프로그램이 끝나도 지속하는 데이터를 영속적
persistent
이라고 합니다. 일반적으
로 파일 시스템에 저장된 파일은 영속적이며 데이터베이스에 저장된 데이터도 마찬가지입니다.
데이터를 영속적으로 만드는 간단한 방법은 파일에 저장하는 것입니다. 프로그램이 종료되기
전에
JSON
(
http
://
thinkdast
.
com
/
json
참고)
같은 포맷으로 자료구조를 변환하여 파일에 저장합니
다. 프로그램을 재시작하면 파일에서 읽어와 자료구조를 다시 만듭니다.
하지만 이 해법에는 몇 가지 문제점이 있습니다.
●
(웹 인덱스 같은 )
대량의 자료구조를 읽고 쓰면 느려집니다.
●
전체 자료구조는 단일 실행 프로그램의 메모리에 다 들어가지 않을 수 있습니다.
●
프로그램이 비정상으로 종료된다면
(예를 들어 정전 )
프로그램이 마지막으로 실행된 이후의 변경사항은 ...