나의 개발일지(김지헌)
항해 99 94일차 12/21일 본문
23. 모든 요소에 인덱스를 걸지 않는 이유는 무엇일까요?
- 인덱스
- 인덱스는 테이블에서 원하는 데이터를 쉽고 빠르게 찾기 위해 사용하는데 테이블의 특정 컬럼에 한개 이상을 주면 인덱스 테이블이 따로 만들어진다. 인덱스 테이블에는 원래 테이블의 값과 rowId를 저장하는데 데이터를 갱신할 때 원본테이블은 물론 인덱스 테이블도 데이터를 갱신시켜야 하기 때문에 속도가 느려진다. 그래서 모든 요소에 인덱스를 사용하지 않는다.
24. 이분탐색이 무엇이고 시간복잡도는 어떻게 되며 그 이유는 무엇인가요?
- 이분탐색(Binary Search):전제 조건 오름차순 또는 내림차순으로 정렬시간복잡도가 매우 줄어든다. 10만개의 데이터를 가진 DB에서 순차 탐색과 이분 탐색의 Worst case를 비교하면 순차 탐색은 10만번의 탐색을 해야하는 반면 이분 탐색은 2^16 < 10만 < 2^17 이므로 16 ~ 17회의 탐색으로 끝낼 수 있다.
- 정렬되어 있는 배열에서 데이터를 찾으려 시도할 때 순차탐색처럼 처음부터 끝까지 하나씩 모든 데이터를 체크하여 값을 찾는 것이 아니라 탐색 범위를 절반씩 줄여가며 찾아가는 Search 방법이다.
25. 트리, 그래프를 비교하여 설명해주실 수 있을까요?
- 트리
- 정점과 간선을 이용해 사이클을 이루지 않도록 구성한 그래프의 형태, 계층이 있는 데이터 표현에 적합, 단방향으로 방향성이 있는
- 이진트리 : 자식노드를 최대 2명을 가지는 트리
- 완전이진트리 : 마지막 레벨을 제외하고 꽉차있고 마지막 레벨은 왼쪽부터 순서대로 차있는 트리
- 힙
- 완전 이진 트리의 일종으로 우선순위 큐를 위하여 만들어진 자료구조로 여러 개의 값들 중에서 최댓값에서 최솟값을 빠르게 찾아낼 수 있는 역할을 한다.
- 힙 트리에서는 중복된 값을 허용한다. (이진 탐색 트리에서는 중복된 값을 허용하지 않는다.)
- 최대 합
- 부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같은 완전 이진 트리 (부모 노드 Key ≥ 자식 노드 Key)
- 최소 힙
- 부모 노트의 키 값이 자식 노드의 키 값보다 작거나 같은 완전 이진 트리 (부모 노트 Key ≤ 자식 노드 Key)
- 정점과 간선을 이용해 사이클을 이루지 않도록 구성한 그래프의 형태, 계층이 있는 데이터 표현에 적합, 단방향으로 방향성이 있는
- 그래프
- 노드와 노드들을 연결하는 간선을 연결한 자료구조로 사이클을 가질 수 있으며, 방향이 없는, 혹은 있는 그래프가 있다
- 루트 노드의 개념이 없으며, 부모-자식 관계라는 개념 또한 없다.
- 무방향, 방향, 양방향 가능하므로, 2개 이상의 경로가 가능하다
- 노드와 노드들을 연결하는 간선을 연결한 자료구조로 사이클을 가질 수 있으며, 방향이 없는, 혹은 있는 그래프가 있다
26. 인덱스란 무엇이고 일반적인 원리는 어떠한지 설명해주실 수 있을까요?
- 인덱스(사전의 목차 같은 개념)데이터베이스에 저장되어 있는 Apple, Banana값을 APPLE이라는 값으로 검색 해서 찾으면 시간이 오래 걸리기 때문에 APPLE은 1 , Banana는 2, 라는 인덱스에 저장해서 1또는 2로 원하는 값을 찾을 수 있다.
- 인덱스는 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조이며 특정 컬럼에 인덱스를 생성하면 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장된다.
27. 앞으로 3개월, 6개월, 1년 동안 어떤 것을 공부할 계획인지, 그리고 그러한 계획을 세운 이유는 무엇인지 알려주실 수 있을까요?
28. 삶에서 중요하게 생각하는 가치가 있다면 무엇인가요?
행복
29. 복합 인덱스란 무엇인지 원리를 설명해주실 수 있을까요?
- 복합인덱스는 2개이상의 컬럼으로 구성된 인덱스이며(findOne)복합 인덱스는 여러 컬럼을 합쳐서 처리범위를 줄인다는 의미도 있지만, 다수의 단일 인덱스를 대체하는 공통의 인덱스라는 의미도 있다.위에서 말했듯이 결합 인덱스에서는 선행컬럼에서 걸러진 범위에서 그 다음 컬럼이 걸러지고 연속해서 걸러진 범위에서 값들이 걸러지는 것이다. 그렇기에 걸러지는 범위는 큰 범위부터 점점 작은 범위로 걸러지는 것이 더 좋은 효율을 낼 수 있는 것이다. 그렇기에 컬럼 순서가 대분류부터 소분류로 정하는 것이 좋다
- 결합인덱스는 분포도로 접근하기보다는 분류의 개념으로 접근하는 것이 더 좋다.
- where절에서 and 조건으로 자주 결합되어 사용되면서 각각의 분포도 보다 두 개 이상의 컬럼이 결합될 때 분포도가 좋아지는 컬럼들(분포도가 좋다."라 표현하는 것은 해당 컬럼의 유니크한 데이터 종류가 많다) 즉 나이가 12,11,10이고 성별이 남자인 사람들이 있다고 가정 했을 때 성별로만 인덱스를 생성하면 성별(남자)라는 성별의 인덱스 안에 3명의 데이터가 다 들어가서 검색 속도가 느리지만 성별,나이를 결합해서 인덱스를 생성하면 나이 그리고 성별에 따라 인덱스가 생성 되기 떄문에 검색 속도가 빨라진다 즉 분포도가 낮다.
30. 우리 회사에 지원한 동기를 말씀해주실 수 있을까요?
31. HTTP에 비해 HTTPS가 더 안전한 원리를 설명해주실 수 있을까요?
- HTTPSHTTPS는 HyperTextTransferProtocol로 하이퍼텍스트를 전송하기 위해 사용되는 통신규약의 약자이며 웹사이트의 무결성을 보호해주고 SSL인증을 통하여 데이터를 암호화 해서 통신을 하기 때문에 서버와 클라이언트간 주고받는 내용을 제3자가 알아채지 못하고, 더 나아가 위변조 하지 못하게 하는 장점
- SSL의 뜻: SSL 인증서는 클라이언트와 서버간의 통신을 제3자가 보증해주는 전자화된 문서입니다.
- HTTP는 정보를 텍스트로 주고 받기 때문에 네트워크에서 전송 신호를 인터셉트 하는 경우 원하지 않는 데이터 유출이 발생할 수 있다.
'항해 99' 카테고리의 다른 글
항해 99 96일차 12/23일 (0) | 2022.12.24 |
---|---|
항해 99 95일차 12/22일 (0) | 2022.12.23 |
항해 99 93일차 12/20일 (0) | 2022.12.21 |
항해 99 92일차 12/19일 (2) | 2022.12.20 |
항해 99 91일차 12/18일 (0) | 2022.12.19 |