CS

    반정규화 (De-Normalization)

    반정규화 (De-Normalization)

    정규화의 목적은 테이블 간 중복 데이터를 최소화하는 것이었다. 제 1 정규화 부터 제 5 정규화까지 단계를 거치며 테이블을 구체적으로 분해하게 되고, 이는 테이블 간 발생할 수 있는 이상 현상들을 제거하고 무결성을 유지할 수 있게 하는 장점이 있다. 하지만 단계를 거치며 중복을 제거하기 때문에 많은 테이블로 분리가 되기 때문에 데이터를 조회하기 위해선 테이블 간 Join 연산이 늘어나 조회 성능이 낮아지는 단점이 있다. 반정규화(De-Normalizaiton)은 성능 향상, 개발 편의성 등을 위해서 정규화된 테이블 규칙을 의도적으로 위반하는 것을 의미한다. 비정규화와 반정규화? 비정규화는 정규화가 되지 않은 테이블 모델을 지칭하는 단어이고, 반정규화는 정규화 원칙을 의도적으로 위반하는 것을 의미한다. 즉..

    정규화 (Normalization)

    정규화 (Normalization)

    하나의 테이블에 다양한 애트리뷰트를 혼합해서 사용한다면 데이터가 중복해서 저장될 수 있고, 이는 다양한 갱신 이상을 발생시킨다. 삽입 이상 : 원하지 않는 데이터가 삽입 되거나 필수적으로 삽입할 데이터가 부족해 삽입이 되지 않는 문제 현상을 말한다. 삭제 이상 : 하나의 데이터만 삭제하고 싶지만, 해당 데이터 전체가 포함된 튜플이 삭제됨으로써 원하지 않는 데이터가 삭제 되는 문제 현상을 말한다. 수정 이상 : 튜플의 일부분만 수정되어 데이터의 의미가 모호해지거나 일관성이 사라지는 문제 현상을 말한다. 정규화(Normalization)의 기본 목적은 테이블 간 중복 데이터를 최소화 시키는 것이다. 중복 데이터를 최소화 시킴으로써 데이터의 무결성 또한 유지되며 다양한 갱신 이상들을 해결할 수 있다. 그리고,..

    3-Way-Handshake, 4-Way-Handshake

    3-Way-Handshake, 4-Way-Handshake

    3-Way-Handshake와 4-Way-Handshake는 각각 TCP가 서로의 연결을 논리적으로 성립시키고 해제 시키는 과정을 의미한다. 3-Way-Handshake TCP는 서버와 클라이언트 사이에 데이터를 전송하기 위해 데이터 전송 전 서로의 연결을 3가지 단계를 이용해 성립시킨다. 연결하고자 하는 A가 B에게 연결 요청을 한다. B는 연결요청을 받았으니 A에게 연결 요청을 수락한다는 응답과 연결 요청을 보낸다. A는 B의 연결 요청을 수락한다는 응답을 B에게 보낸다. 각 단계를 구체적으로 알아보자. 연결하고자 하는 A가 B에게 연결 요청을 한다. 클라이언트 A는 서버 B와 연결을 하고싶다. 클라이언트 A는 연결하고자 하는 서버 B에게 연결을 요청하는 SYN 패킷을 전송한다. 연결이 없던 클라이언..

    ArrayList, LinkedList

    ArrayList, LinkedList

    ArrayList ArrayList는 배열을 이용한 리스트이다. 따라서 배열의 특징과 비슷하다. 인덱스를 가지고 데이터를 접근한다. 인덱스를 통한 Random Access가 가능하므로 특정 데이터를 검색하는데 LinkedList보다 속도가 빠르다. 데이터의 삽입 혹은 삭제 시 인덱스의 위치를 맞춰줘야 하므로 LinkedList에 비해 속도가 느리다. 배열은 사이즈를 고정적으로 할당하지만, ArrayList는 값을 동적으로 삽입하는 것이 가능하다. LinkedList LinkedList는 각 노드별 앞의 노드와 뒤의 노드를 참조하는 참조값을 가지고 있다. 각 노드별 앞, 뒤 노드를 참조하고 있기 때문에 새로운 노드를 삽입하거나 노드를 삭제하는 경우 위치에 관계없이 ArrayList보다 빠른 연산이 가능하다..

    TCP, UDP

    TCP, UDP

    IP 프로토콜은 서버간 데이터 통신을 할 때 패킷과 IP 주소를 이용한다. IP 프로토콜은 몇 가지 한계를 갖고 있다. 출발지 IP에서 보낸 패킷을 받을 대상이 없거나 목적지 IP 서버가 현재 패킷을 받을 수없는 상태이더라도 출발지 IP 서버는 패킷을 보내버린다. 또한, 하나의 데이터는 여러 개의 패킷으로 쪼개질 수 있고, 이 패킷들은 인터넷 내의 많은 노드들을 거쳐 목적지 IP에 도달하는데 거쳐가는 노드가 패킷을 보낼 수 있는 상태가 아니거나, 설령 목적지 IP에 도착하더라도 여러개로 쪼개진 패킷이 순서대로 들어온다는 보장이 없다. 마지막으로, 동일 IP에서 여러가지 애플리케이션을 사용한다면 전송되는 패킷이 어떤 애플리케이션 것인지 구분하는 것이 어렵다. 전송 계층은 이러한 IP 프로토콜의 비연결성, ..