CS
-
[Database] - Hash index / B-Tree indexCS/DB 2022. 10. 6. 00:42
Hash index B-tree 만큼 일반적/범용적으로 사용되지는 않지만 고유의 기능과 특성을 가지고 있는 인덱스 오브젝트 입니다. 실제 키 값과 관계없이 인덱스 크기가 작고 검색이 빠르다는 것 입니다. 원래의 값을 저장하는 것이 아닌 해시 함수의 결과만을 저장하게 됨에 따라 키 컬럼 값은 4~8바이트 정도로 작은 길이로 줄어듭니다. Hash된 데이터 값에 따라 저장될 버킷 위치를 정하기 때문에 빠른 속도로 검색 영역을 제한할 수 있다. 버킷의 범위가 작다면 Collision이 발생하게 되어 효율이 떨어지게 됩니다. 해시 인덱스는 정렬되어 있다고 볼 수 없다. 메모리기반의 테이블에 주로 사용된다. 자주 사용되는 데이터를 옵티마이저가 판단하여 해시 키로 만들기 때문에 제어가 어렵다. E.g) Adaptiv..
-
[Database] - Cardinality / Cluster IndexCS/DB 2022. 10. 4. 00:29
Index를 설정할 때 주로 사용하는 Where 조건이나, FK를 Index를 효율적인라는 것은 알 수 있다. 'Student' 라는 Table에 'ID' , 'Name' , 'Phone' 이라는 Column이 존재한다고 가정해봅시다. Index는 'ID' , 'Phone'으로 2개의 Column이 복합적으로 잡혀있다고 하여 봅시다. 당연히 2개를 사용하여 Select하는 것이 제일 좋습니다. 그 다음에는 둘 중 하나라도 Index를 타게 하는것이 좋습니다. 하지만, 그렇다고 하여서 Index 많이 설정하면 좋을까요? 그렇지 않습니다. Index는 DB Memory를 사용하여 Table형태로 별도로 저장됨으로 Index가 많아지면 결국 저장공간과 개수도 비례하여 증가합니다. Index를 설정 어떤 Col..
-
[Network] - HTTP / HTTPSCS/면접준비 2022. 10. 3. 23:10
HTTP ( HyperText Transfer Protocol ) 인터넷 상에서 Client와 Server가 Text를 주고 받을 때 쓰는 통신 규약 HTTP는 텍스트 교환으로, 누군가 Network signal을 가로채면 내용이 노출된다. HTTPS ( HyperText Transfer Protocol ) HTTP에서 신호를 가로채도 내용이 노출 안되도록 보안 HTTPS는 텍스트를 암호화 ( 공개키 암호화 ) CA라는 기업이 공개키를 저장해주는 신뢰성이 검증된 민간기업들의 목록을 가지고 있다. Server는 CA 기업의 개인키로 암호화한 인증서를 가지고 있다. Client -> Server Request Server -> Client Response ( CA기업의 Private key로 암호화한 인증서..
-
[Database] - IndexCS/DB 2022. 10. 3. 23:09
Index Table Address를 미리 저장하면 Mapping 하여 주는 개념 논리적/물리적으로 테이블과 독립적 Table Scan(Full scan)을 하게 되면 O(N)이 들게 되는데 이를 더 효율적으로 탐색하기 위한 방법 O(LogN) RDBMS에서 검색 속도를 높이기 위함 Index는 B-Tree(Balance Tree) Join, Where에서 Index가 주로 사용되어 쿼리의 검색 속도를 빠르게 하는데 목적을 가진다. Delete,Insert,Update 쿼리에는 Index 사용시 오히려 느리다. Insert Block에 여유가 없다면, 새로운 Block 할당 후 Key 옮기는 작업 수행 Index Split 작업 동안, 해당 Block Key 값에 대해 DML이 Blocking -> Wa..
-
[Network] - 대칭 키 / 공개 키CS/면접준비 2022. 9. 30. 22:08
대칭 키 ( symmetric key ) 암호화, 복호화 시에 같은 암호키를 사용한다. 동일한 키를 주고 받기 때문에 빠르다. 한쪽만 해킹 당해도 둘다 해킹 위험에 노출 공개 키 ( public / asymmetric key ) 암호화, 복호화 시 사용되는 Key를 분리 대칭키의 분배 문제를 해결하기 위해 고안 자신만 가지고 있는 private key로만 복호화 할 수 있는 public key를 공개 진행 과정 1. A->B data를 B의 공개키로 Encrypt해서 보냄 2. B는 자신의 Private key로 평문 확인 B -> A A의 공개키로 Encrypt 해서 Response 3. A는 자신의 Private Key로 평문 확인 기밀만 유지해줄 뿐, 신뢰성을 주지 못한다. -> 전자서명,MAC로 ..
-
[Network] - UDPCS/면접준비 2022. 9. 30. 21:57
UDP ( User Datagram Protocol ) TCP와 다르게 신뢰, 연결을 중시 하지 않는다. Datagram 단위로 쪼개어서 전송한다. IP가 제공하는 정도 수준만을 제공하는 간단한 IP 상위 계층 프로토콜 에러가 발생할 수 있고, 재전송, 순서가 보장되지 않는다. 데이터의 처리 속도가 매우 빠르다. -> 방송 / 게임 Port번호 IP로는 Host-to-Host만 연결이 된다. 하나의 장비에서 수많은 프로그램이 통신한다면? IP만으로는 한계가 발생한다. UDP가 나오게 된 이유 IP에서 오류가 발생하면, ICMP ( 인터넷 제어 메시지 프로토콜 ) 에서 알려주지만 처리가 불가능하기 때문에 이보다 상위 프로토콜인 UDP가 필요 DNS는 UDP를 사용할까? DNS는 Request의 양이 적다 ..
-
[Network] - TCP Flow Control / Congestion ControlCS/면접준비 2022. 9. 30. 21:33
TCP 네트워크 통신에서 신뢰적인 연결 방식 신뢰성을 보장하는 Protocol Reliable Network 보장 조건 Loss = Packet이 도중에 유실 Ordering = Packet의 순서 Congestion = Network가 혼잡 Overload = Receiver의 역량 Data 전송 과정 Flow Control Sender 와 Receiver의 데이터 처리 속도가 차이나는 경우 ( Sender가 느리게 보내줄 때는 상관 X ) Receiver는 제한된 Buffer 크기로 용량이 초과되면 Data를 받지 못하고 유실 손실된다면, Sender,Receiver에게 불필요한 전송이 또 발생 Receiver에 맞추어 데이터 전송량을 줄여야한다. 해결 방안 1. Stop and Wait 매번 전송한..
-
[Network] - TCP 3 handshake / 4 handshakeCS/면접준비 2022. 9. 30. 20:27
TCP Connect를 Establish 및 Exit session 3 way handshake 연결을 성립시키기 위함 TCP는 정확한 전송을 보장해야 한다. 3번의 통신을 통해 Connect 성립 Connect를 확실히 하기 위해 3단계로 나누어 진행 1. Client -> Server ( SYN ) 2. Server -> Client ( SYN , ACK ) 3. Client -> Server ( ACK ) 4 way handshake 연결을 종료하기 위함 4번의 통신을 통해 연결이 해제 1. Client -> Server ( FIN ) 2. Server -> Client ( ACK ) 3. Server -> Client ( FIN ) 4. Client -> Server ( ACK )