Hash?

0️⃣1️⃣·2021년 5월 9일
0

알고리즘

목록 보기
8/9

해쉬란?

자료구조로서 해쉬란?

  • 해쉬 자료구조의 Key는 중복이 없음

  • HashSet은 Key만 존재 HashMap은 Key와 Value가 존재

  • Hash 자료구조에 Key인 클래스는 해쉬 관련 함수를 오버라이딩 해야함

데이터베이스 인덱스?

  • INSERT, UPDATE, DELETE가 자주 발생하지 않는 컬럼에 사용

  • 중복도가 낮은 컬럼에 사용

  • 쿼리가 자주 발생되는 컬럼에 사용

  • 인덱스를 잘못 선정할 경우, 인덱스 관련 오버헤드로 성능 저하 가능

해쉬 관련 함수?

int hashCode

  • Key값이므로, 고유한 값

  • Key가 동일하면, 이전 객체가 덮어씌워짐

boolean equals

  • equals에 의해서 두 객체가 같다고 판단되면, 동일한 해쉬코드로 설정

해쉬 자료구조?

선형 자료구조

  • 해쉬 테이블

  • 등호 연산에 특화, 조건부 연산에는 부적합(>, <)

  • 해쉬 테이블 확장에 따른 공간 낭비 문제 발생

B+Tree

  • 리프 노드만 데이터를 가지고, 나머지 노드들은 포인터만 가짐

  • 데이터를 찾기 위해서는 리프 노드까지 도달 필요

  • 리프 노드들은 링크드 리스트로 연결되어 있기 때문에, 조건부 연산에 특화

  • B-Tree의 확장, 훨씬 좋은 자료 구조

  • 하나의 노드에 포인터를 여러개 담을 수 있으므로, 트리의 높이를 줄일 수 있음

  • 리프 노드에 모든 데이터가 있으므로, 삽입, 삭제가 간편

B-Tree

  • B+Tree와 다르게, 모든 노드들이 데이터와 포인터를 가짐

  • 리프 노드까지 도달하지 않아도 데이터 찾기가 가능

  • 하나의 노드에 포인터와 데이터가 있기 때문에, 트리의 높이가 B+Tree보다 크다

  • 모든 노드들이 데이터를 가지므로, 삽입, 삭제가 어려움

0개의 댓글