여기에 맞춤 카탈로그 제목 작성
MemTable의 핵심 데이터 구조로 정렬 된 Map을 선택합니다.
leveldb의 핵심 구조는 MemTable입니다. MemTable에 저장된 키가 정렬되어 있습니다.
키 정렬 문제를 해결하기 위해서는 정렬 된 java 컬렉션을 해결해야합니다. 그 전에 먼저 java 컬렉션을 찾아야합니다.
그림을 그리지 않기 위해이 블로그에서 그림을 인용 했는데 실선 테두리는 구현 클래스, 폴리 라인 테두리는 추상 클래스, 점선 테두리는 인터페이스입니다. Collection 인터페이스는 컬렉션 클래스의 하위 인터페이스입니다. Set 및 List는 Collection 인터페이스를 상속합니다. 맵과 Collection 인터페이스는 관련이 없지만 모두 컬렉션 클래스의 일부입니다. 주요 구현 클래스는 다음과 같습니다.
- 지도
- HashMap
- 해시 테이블
- ConcurrentHashMap
- LinkedHashMap
- TreeMap
- 세트
- TreeSet
- HashSet
- LinkedHashSet
- 명부
- 벡터
- 스택
- ArrayList
- LinkedList
그중 정렬 된 컬렉션은 TreeMap, LinkedHashMap, TreeSet, Vector, Stack, ArrayList, LinkedList입니다. 또한 redis를 학습 할 때 빠르게 쿼리하고 쓰고 삭제하는 데이터 구조를 점프 테이블이라고합니다. leveldb는 키-값 데이터를 저장하고자하기 때문에 TreeSet, Vector, Stack, ArrayList, LinkedList를 제외하고 TreeMap, LinkedHashMap, SkipList가 남습니다. 그러나 LinkedHashMap은 사전 순이 아닌 삽입과 연산의 순서로 정렬되어 있으므로 TreeMap과 SkipList를 선택할 수 있습니다. 다중 스레드 구현 버전은 Collections.synchronizedSortedMap (new TreeMap ()) 및 ConcurrentSkipListMap입니다.
연구로서 LinkedHashMap , SkipList , TreeMap , ConcurrentSkipListMap 의 원칙 을 배워야 합니다.
동시성이 높은 프로그램의 경우 더 높은 동시성을 제공 할 수있는 ConcurrentSkipListMap을 사용해야합니다. 이 기사 에서 언급 했듯이 여기에서는 쿼리, 쓰기 및 삭제의 효율성을 기반으로 키 순서 문제에 대한 솔루션으로 skip table을 선택합니다.