Computer science

    HTTP, HTTPS

    HTTP, HTTPS

    HTTP HTTP는 Hyper Text Transfer Protocol로서 클라이언트(웹 브라우저)와 서버가 데이터를 주고받기 위한 통신 규약을 의미한다. HTTP는 단어 그대로 텍스트를 클라이언트와 서버 간 교환하기 때문에 몇 가지 문제가 발생한다. 서버에 보내는 정보가 노출되어 중간에서 제 3자가 탈취할 수 있다. 아이디, 비밀번호와 같이 민감한 정보를 보내는 경우 제 3자가 해당 데이터를 탈취한다면 문제가 발생한다. 제 3자가 데이터를 탈취할 수 있다면 변조 또한 가능하다. 요청한 사이트가 믿을 만한 사이트인지 진위여부를 판단할 수 없다. HTTPS HTTP + Secure가 HTTPS이다. 즉 HTTP에서 발생하는 보안 이슈들을 보완해서 안전하게 서버와 데이터를 주고받을 수 있다. 서버에 보내는 ..

    반정규화 (De-Normalization)

    반정규화 (De-Normalization)

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

    정규화 (Normalization)

    정규화 (Normalization)

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

    동기와 비동기, 블로킹과 논블로킹

    동기와 비동기, 블로킹과 논블로킹

    동기와 비동기, 블로킹과 논블로킹을 처음 접할 때는 서로가 비슷하다고 생각한다. 결론부터 말하면 동기와 비동기, 블로킹과 논블로킹은 바라보는 관점 자체가 다르다. 동기와 비동기가 바라보는 관점은 결과값을 기다리는 지 여부이다. 결과값의 기다림 : 함수 호출자와 피호출자가 있을 때 함수 호출자가 피호출자가 주는 결과를 전달 받기 전까지 기다리는 것을 의미한다. 블로킹과 논블로킹의 관점은 제어권의 여부이다. 제어권 : 코드를 실행하는 권리와 비슷하다. 제어권을 가진 함수는 자신의 코드를 실행할 수 있다. 동기 (Synchronous) 동기의 키포인트는 결과값을 기다린다는 것이다. 따라서, 호출자는 피호출자가 로직을 처리하고 결과값을 전달해줄 때 까지 기다린다. 비동기 (Asynchronous) 비동기의 키포..

    인덱스(Index)

    인덱스(Index)

    인덱스(Index)의 사전적 의미는 “색인, 책 속에 다루어진 중요한 단어나 용어를 독자가 쉽게 찾을 수 있도록 페이지를 밝혀 벌여 놓은 것.” 이란 뜻이다. 데이터베이스에서도 Index의 의미는 동일하게 이용된다. 대용량 데이터베이스 내에서 우리가 원하는 데이터를 빠르게 조회하기 위해 사용하는 것이 인덱스이다. 이는 Select 쿼리의 성능 향상이 인덱스의 목적이라고 할 수 있다. 인덱스는 데이터베이스의 테이블 내의 객체가 아닌 데이터베이스의 또다른 객체이다. 이는 인덱스를 사용하는 경우 테이블외에 추가적인 공간이 필요하다는 의미이다. 따라서, 인덱스는 조회 쿼리의 성능 향상을 가져오지만, 인덱스 정보에 관한 연산이 추가적으로 이뤄줘야 하기 때문에 DML(Insert, Update, Delete)에 있..