자료구조로서 해쉬란?
해쉬 자료구조의 Key는 중복이 없음
HashSet은 Key만 존재 HashMap은 Key와 Value가 존재
Hash 자료구조에 Key인 클래스는 해쉬 관련 함수를 오버라이딩 해야함
데이터베이스 인덱스?
INSERT, UPDATE, DELETE가 자주 발생하지 않는 컬럼에 사용
중복도가 낮은 컬럼에 사용
쿼리가 자주 발생되는 컬럼에 사용
인덱스를 잘못 선정할 경우, 인덱스 관련 오버헤드로 성능 저하 가능
int hashCode
Key값이므로, 고유한 값
Key가 동일하면, 이전 객체가 덮어씌워짐
boolean equals
선형 자료구조
해쉬 테이블
등호 연산에 특화, 조건부 연산에는 부적합(>, <)
해쉬 테이블 확장에 따른 공간 낭비 문제 발생
B+Tree
리프 노드만 데이터를 가지고, 나머지 노드들은 포인터만 가짐
데이터를 찾기 위해서는 리프 노드까지 도달 필요
리프 노드들은 링크드 리스트로 연결되어 있기 때문에, 조건부 연산에 특화
B-Tree의 확장, 훨씬 좋은 자료 구조
하나의 노드에 포인터를 여러개 담을 수 있으므로, 트리의 높이를 줄일 수 있음
리프 노드에 모든 데이터가 있으므로, 삽입, 삭제가 간편
B-Tree
B+Tree와 다르게, 모든 노드들이 데이터와 포인터를 가짐
리프 노드까지 도달하지 않아도 데이터 찾기가 가능
하나의 노드에 포인터와 데이터가 있기 때문에, 트리의 높이가 B+Tree보다 크다
모든 노드들이 데이터를 가지므로, 삽입, 삭제가 어려움