[이것이 컴퓨터 과학이다] 데이터베이스
·
Study/CS
이 글은 '이것이 컴퓨터 과학이다'를 읽고 데이터베이스와 관련해서 기술 면접에서 나올 수 있는 질문 리스트에 대한 나름대로의 답변과 공부한 내용들에 대해서 적은 글입니다.Q. MySQL의 경우, 기본키를 설정하지 않아도 테이블이 만들어지는데 어떻게 이게 가능한걸까?A. InnoDB가 내부적으로 모든 테이블에 대한 클러스터형 인덱스를 만들기 때문에 이 과정에서 내부적으로 보이지 않는 기본키를 자동 생성한다.(MySQL 8버전 이상부터)Q. 어떤 칼럼의 정의에 UNIQUE 키워드가 붙는다고 가정해 봅시다. 이 칼럼을 활용한 쿼리의 성능은 그렇지 않은 것과 비교해서 어떻게 다를까요?A. 이 칼럼이 WHERE절에 들어가면 하나의 레코드만 찾고 바로 쿼리를 끝낼 수 있기 때문에 조회의 성능은 올라가지만 새로운 레..
[이것이 컴퓨터 과학이다]네트워크
·
Study/CS
네트워크의 구조네트워크는 노드와 간선의 구조로 이루어져 있고, 각 노드를 호스트라고 한다. 우리가 사용하는 네트워크 기기가 호스트이다.요청을 보내는 호스트를 클라이언트 응답을 보내는 호스트를 서버라고 한다.네트워크 연결 구조는 여러가지가 있고, 네트워크 토폴로지라고 부른다.LAN(Local Area Network)근거리 네트워크를 의미하며, 가까운 거리를 연결하는 한정된 공간에서의 네트워크를 의미한다.WAN(Wide Area Network)WAN을 통해서 LAN 간의 통신이 이루어진다. 일반적으로 ISP라는 인터넷 서비스 업체가 구축하고 관리한다.패킷네트워크를 통해서 송수신되는 데이터의 단위. 페이로드, 헤더, 트레일러 라는 정보가 포함되어 있음.OSI 7계층국제 표준화 기구에서 만든 네트워크 참조 모델..
데이터베이스 성능 최적화
·
Study/CS
인덱스 최적화데이터베이스의 성능을 높이기위한 방법 중 한가지로 인덱스를 사용해 쿼리 튜닝을 하는 방법이 있다.인덱스의 종류인덱스는 단일 인덱스와 복합 인덱스가 있다. 단일 인덱스는 하나의 칼럼에 인덱스를 거는 것이고, 복합 인덱스는 여러칼럼을 묶어서 하나의 인덱스를 구성하는 것이다. 복합 인덱스는 선두 칼럼이 반드시 조건에 사용되어야 인덱스를 제대로 탐색할 수 있다.복합 인덱스를 사용하면 좋은 경우복합 인덱스는 다음과 같이 두 개 이상의 조건이 결합된 쿼리에서 성능을 크게 향상시킨다WHERE 필터링 + 정렬where 절의 칼럼에만 인덱스가 있으면 정렬할 때 filesort(인덱스 없이 정렬하는 것)가 발생WHERE 필터링 + 페이징(LIMIT)DB는 조건을 만족하는 모든 데이터를 스캔하고 정렬하고 OFF..
RDBMS VS NO SQL
·
Study/CS
RDBMSRDBMS(Relational DataBase Management System)란?데이터를 테이블의 형태로 정의하고 각 테이블 간의 관계를 정의하여 관리하는 데이터베이스 관리 시스템RDBMS의 개념테이블RDBMS에서 데이터는 표 처럼 행과 열로 이루어진 형태의 테이블로 저장된다.각 열은 주로 칼럼이라고 부른느데 데이터의 속성을 나타내며, 고유한 이름과 데이터 타입을 가진다.각 행은 주로 레코드라고 부르는데 하나의 개체에 대한 각 속성 값을 나타낸다.위 테이블에서 초록색으로 표시한 부분이 칼럼이고 주황색으로 표시한 부분이 레코드이다.칼럼은 속성 or 필드라고도 하며 레코드는 튜플이라고 부르기도 한다.관계RDBMS의 아주 중요한 특징이 테이블 간의 관계를 설정할 수 있다는 것이다. 테이블 간 관계에..
[이것이 컴퓨터 과학이다]해시 테이블 & 트리
·
Study/CS
해시테이블해시 테이블키-값으로 이루어진 자료구조.버킷에 키를 통해 얻으려는 값이 저장된다.해시 테이블에 값이 저장되는 과정키 ="Hanbit"hashCode("Hanbit") = 8000002;index = 8000002 % 8 = 2table[2] = {"Hanbit", "010-1234"}해시 함수임의의 고정된 길이의 데이터를 고정된 길이의 데이터로 반환하는 단방향 함수.단방향이기 때문에 변환된 데이터를 가지고 원래 데이터를 추적하기 어렵다.해시 충돌해시값은 임의의 키 값을 고정된 크기의 해시값으로 만들기 때문에 가능성은 낮지만 두 개의 다른 키 값이 같은 해시값을 생성할 수 있다.'abc' -> 해시 함수 -> 'gotlrkqt''cba' -> 해시 함수 -> 'gotlrkqt' 이럴 경우에 해시 ..