본문 바로가기
반응형

분류 전체보기313

인덱스(Index) 인덱스는 데이터 레코드를 빠르게 접근하기 위해 쌍으로 구성되는 데이터 구조이다. 간단히 말해서 책의 색인(목차)이라고 할 수 있다. 책의 색인을 통해 원하는 페이지로 한 번에 이동할 수 있다. 이처럼 데이터베이스에서의 인덱스는 데이터베이스의 데이터를 빠르게 조회할 수 있는 자료구조이다. ​인덱스에 대해 공부하기 전에 인덱스가 왜 필요한지에 대해서 먼저 알아보자. ​테이블 A에 수 만개의 데이터가 있다고 하자. SELECT 문을 통해 원하는 데이터를 조회한다고 하면 어떻게 될까? 기준이 없기 때문에 테이블에 있는 모든 데이터를 순차적으로 읽는 FULL TABLE SCAN을 통해 원하는 데이터를 찾아야 한다. 이는 굉장히 비효율적인 방법이다. ​인덱스를 사용한다면 효율적으로 조회할 수 있다. 테이블 A의 데.. 2021. 7. 10.
DML - JOIN 대부분의 간단한 SQL 문제들은 SELECT 문을 통해 해결할 수 있지만 난이도가 올라가게 되면 JOIN 문을 활용해서 해결해야 하는 문제들이 등장한다. 따라서 한 번 JOIN에 대해 공부 및 정리해보려고 한다. ​ JOIN(조인)은 2개의 테이블에 대해 연관된 튜플들을 결합하여, 하나의 새로운 릴레이션을 반환하는 친구이다. ​JOIN은 크게 INNER JOIN(내부 조인)과 OUTER JOIN(외부 조인)으로 구분된다. 또한 일반적으로 FROM 절에 기술하지만, 릴레이션이 사용되는 어느 곳에서나 사용할 수 있다. ​ 먼저 INNER JOIN부터 알아보자. INNER JOIN은 교집합 개념으로 생각하면 쉽다. 두 테이블에 공통적으로 존재하는 튜플들을 추출한다. INNER JOIN은 일반적으로 EQUI J.. 2021. 7. 10.
키(Key)의 종류 키(Key)는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 구별할 수 있는 유일한 기준이 되는 속성(Attribute)을 의미한다. ​튜플은 속성의 모임으로 릴레이션의 각 행을 뜻하며 파일 구조에서 레코드와 같은 의미이다. 튜플의 수를 카디널리티(Cardinality) 또는 기수, 대응수라고 한다. ​속성은 데이터베이스를 구성하는 가장 작은 논리적 단위로 개체(Entity)의 특성을 의미한다. 파일 구조상의 데이터 항목 또는 데이터 필드에 해당된다. 속성의 수를 디그리(Degree) 또는 차수라고 한다. ​ 예를 들어 다음과 같이 4개의 속성과 4개의 튜플이 존재하는 학생 테이블이 있다고 하자. 현재의 테이블에서는 중복된 값을 가지는 S_Grade, S_Subject 속성을 제외한 S_Id, S_Nam.. 2021. 7. 9.
SQL의 분류와 사용법 SQL은 Structured Query Language의 약어로써 국제 표준 데이터베이스 언어이며, 많은 회사에서 관계형 데이터베이스(RDB)를 지원하는 언어로 채택하고 있다. 또한, 질의 기능뿐만 아니라 데이터 구조의 정의, 데이터 조작, 데이터 제어 기능을 모두 갖추고 있다. ​이러한 SQL은 데이터를 정의하는 DDL, 데이터를 조작하는 DML, 데이터를 제어하는 DCL로 분류된다. 하나씩 살펴보도록 하자. ​ DDL(Data Define Language, 데이터 정의어) SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경 또는 삭제할 때 사용하는 언어 논리적 데이터 구조와 물리적 데이터 구조의 사상을 정의 데이터베이스 관리자나 데이터베이스 설계자가 사용한다. CREATE.. 2021. 7. 9.
트랜잭션(Transaction) 이번에 배워볼 내용은 트랜잭션(Transaction)이다. 트랜잭션의 정의는 데이터베이스 시스템 또는 유사 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본단위이자 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. ​이게 무슨 말이냐면 트랜잭션은 작업의 완전성을 보장해 주는 것이다. 만약 하나의 작업이 수행되는 도중에 오류가 발생해서 원하지 않게 종료가 된다면 지금까지 수행한 작업을 반영하지 않고 원상태로 복구시켜 작업의 일부만 적용되지 않도록 하여 불완전한 상태를 만들지 않겠다는 뜻이다. ​ 작업의 완전성을 보장해 주기 위해 트랜잭션은 ACID, 총 4가지 특성을 만족해야 한다. ​첫 번째는 원자성(Atomicity)이다. 트랜잭션이 수행되는 도중에 어떠한 문제가 발생하였다면 .. 2021. 7. 9.
정규화(Normalization) 이번에 배워볼 내용은 정규화(Normalization)이다. 정규화란 관계형 데이터 베이스의 논리적 설계에서 데이터의 중복이 최소화가 될 수 있도록 데이터를 구조화하며, 각 릴레이션에서 이상 현상이 발생하지 않도록 하는 데이터 모델링 기법이다. 이상 현상이란 데이터들이 불필요하게 중복되어 릴레이션 조작 시 예기치 못한 상황이 발생하는 것을 뜻한다. 이상 현상은 삽입, 삭제, 갱신 이상이 있다. 다음과 같은 Id, Subject 속성을 기본키로 가지는 학생 릴레이션이 존재할 때 각 현상들의 문제점을 알아보자. 1. 삽입 이상(Insertion Anomaly) : 릴레이션에 데이터를 삽입할 때 원하지 않은 값들도 함께 삽입되는 현상 만약 아무 과목도 수강하지 않는 A라는 학생을 릴레이션에 삽입하게 되면 어떻.. 2021. 7. 9.
웹 브라우저에 URL을 입력했을 때 발생하는 일 우리는 네이버에 접속하기 위해서 웹 브라우저를 열고 주소창에 www.naver.com를 입력하여 Enter를 누른다. ​그렇다면 Enter를 눌렀을 때 내부적으로 어떠한 과정을 통해 해당 웹사이트의 내용들이 화면에 보이게 되는 것일까? 각 과정들을 살펴보도록 하자. ​ 1. 브라우저의 URL 파싱 우리는 주소창에 URL만 입력하였으며 브라우저는 입력한 URL을 활용하여 해당 웹사이트의 서버와 통신하여 웹사이트의 내용을 우리에게 보여주게 된다. 즉, 브라우저의 입장에서는 입력된 URL 내에서 필요한 모든 정보를 파악해야 한다. 그렇다면 URL은 어떤 구조로 이루어져 있으며 어떤 정보를 얻을 수 있는 것일까? ​ URL의 구조는 다음과 같이 Protocol, URL, Port로 이루어져 있다. 근데 사실 네.. 2021. 7. 9.
라우팅 알고리즘 라우팅 알고리즘은 송신자부터 수신자까지 라우터의 네트워크를 통과하는 최적의 경로를 결정하는 방법이다. 일반적으로 최적의 경로는 최소 비용 경로를 뜻한다. 라우팅 알고리즘을 분류하는 방법은 세 가지가 존재한다. 알고리즘이 중앙 집중형인지 분산형인지 정적 알고리즘인지 동적 알고리즘인지 부하에 민감한지 아닌지 각 라우팅 알고리즘을 대표하는 다양한 라우팅 프로토콜이 존재한다. 그럼 라우팅 프로토콜들은 어떤 상황에 사용될까? 크게 두 가지로 분류된다. ​네트워크 집합을 몇 개의 그룹으로 나누었을 때 동일 그룹 내에서 라우팅 정보를 교환할 때 사용하는 라우팅 프로토콜을 IGP(Internal Gateway Protocol)라 하고, 다른 그룹과 라우팅 정보를 교환하는 프로토콜을 EGP(Exterior Gateway.. 2021. 7. 9.
인터넷 프로토콜(IP) : IPv4, IPv6 오늘날 사용 중인 IP는 IPv4, IPv6 두 가지 버전이 존재한다. 하나씩 알아보자. 참고로 IP는 비신뢰적인 서비스를 제공하는 네트워크 계층의 프로토콜이며 네트워크 계층의 데이터 단위는 패킷이다. ​ 먼저 IPv4의 데이터 구조를 살펴보자. 13비트 단편화 오프셋 필드는 IPv4의 특징 중 하나인 단편화를 위한 필드이다. Time-to-live 필드는 데이터그램이 다른 라우터로 전송되지 않고 네트워크 상에서 무한히 순환하는 경우 제어하기 위한 필드이다. 나머지 다른 필드들은 대충 어떤 의미인지 알 것이다. ​ 다음은 단편화에 대해서 알아보자. 단편화란 하나를 여러 개로 나누는 것을 의미한다. 데이터 링크 계층의 전달할 수 있는 최대 데이터양을 MTU(Maximum Transmission Unit)이.. 2021. 7. 8.
반응형