Study/Computer Science 16

[Database] 파티셔닝(Partitioning)

파티셔닝데이터베이스 테이블을 관리와 성능 최적화를 위해 논리적 또는 물리적으로 분할하는 것을 말한다.데이터를 파티션 단위로 나누어 특정 데이터에 대한 접근성과 관리 효율성을 높이는 데 목적이 있다. 파티셔닝의 목적 1. 성능대용량 데이터 환경에서 데이터 접근 범위를 줄여 쿼리 성능을 향상시킨다.Full Scan을 최소하하여 특정 쿼리를 가볍게 만들고, 데이터 접근 속도를 높인다.대용량 데이터 쓰기(WRITE) 작업에도 효율적이다.2. 가용성데이터 손실이나 장애 발생 시 영향을 받는 범위를 줄인다.각 파티션 단위로 독립적으로 백업하고 복구 작업이 가능하다.Disk I/O을 분산하여 경합을 줄이고 UPDATE 성능을 개선할 수 있다.3. 관리용이성큰 테이블들을 분할하여 데이터 관리와 유지보수를 쉽게 할 수 ..

[네트워크] DNS(Domain Name System)

DNS(Domain Name System)란?사람이 읽을 수 있는 도메인 이름을 머신이 읽을 수 있는 IP 주소로 변환하는 역할을 한다.일반적으로 우리는 웹사이트에 접속할 때 IP 주소 대신에 도메인 이름을 사용한다.인터넷에서 모든 장치는 고유한 IP 주소를 가지고 있지만, 우리는 도메인 이름을 더 쉽게 기억하고 이해할 수 있기 때문이다.도메인은 일종의 별명으로, 우리가 입력한 도메인을 실제 네트워크상에서 사용하는 IP 주소로 바꾸고 해당 IP 주소로 접속하는 과정이 필요하다. 이러한 과정, 전체 시스템을 DNS(도메인 네임 시스템)라고 한다. 분산 구조DNS는 전 세계적으로 약속된 규칙을 공유하는데 상위 기관에서 인증된 기관에게 도메인을 생성하거나 IP 주소로 변경할 수 있는 권한을 부여한다. DNS는..

[네트워크] URL 구성 요소와 요청 흐름

URL인터넷에서 특정 자원의 위치(주소)를 나타내는 표준 형식으로 웹 브라우저나 기타 클라이언트가 서버에 요청을 보낼 때, 해당 자원의 위치를 알려주는 중요한 역할을 한다. URL 구성프로토콜(스킴)://호스트(도메인 이름 또는 IP 주소):포트/경로?쿼리#프래그먼트프로토콜 : https호스트명 : www.google.com 포트번호 : 443패스 : /search쿼리 파라미터 : q=hello&hi=ko scheme- 주로 프로토콜(어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙) 사용예) http, https, ftp 등- http는 80 포트, https는 443 포트를 주로 사용, 포트는 생략 가능 userinfo- URL에 사용자 정보를 포함해서 인증- 요즘은 거의 사용하지 않음 host- ..

[네트워크] HTTP와 소켓 프로그래밍

네트워크를 통해 서버에서 데이터를 가져오거나 주고받는 통신을 구현하려면 크게 HTTP 프로그래밍과 소켓 프로그래밍 두 가지 방식이 있다. 이 두 방식의 차이에 대해 알아보자. 소켓(Socket) 프로그래밍서버와 클라이언트가 특정 포트를 통해 실시간 양방향 통신을 하는 방식 소켓 프로그래밍은 TCP/IP 프로토콜을 기반으로 서버와 클라이언트가 특정 포트를 통해 네트워크 연결을 유지하며 실시간 양방향 통신을 하는 방식이다. 이 연결을 통해 서버와 클라이언트는 서로 자유롭게 데이터를 주고받을 수 있으며, 이러한 방식으로 프로그래밍하는 것을 소켓 프로그래밍이라고 한다. HTTP 프로그래밍과 달리, 소켓 프로그래밍은 클라이언트뿐만 아니라 서버도 클라이언트로 요청을 보낼 수 있으며, 지속적인 연결을 유지하기 때문에..

[Server] JWT(Json Web Token)의 구조

이번엔 웹 서비스를 만들 때 자주 사용되는 로그인 방식 중 하나인 JWT의 구조에 대해 정리해보려고 한다. JWT(Json Web Token)Json 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token이다.JWT는 토큰 자체를 정보로 사용하는 Self-Contained 방식으로 정보를 안전하게 전달한다. 주로 회원 인증이나 정보 전달에 사용되는 JWT는 아래의 로직을 따라서 처리된다.애플리케이션이 실행되면 JWT를 두 가지 방식으로 저장한다. - static 변수와 로컬 스토리지static 변수에 저장되는 이유 : JWT는 HTTP 요청을 보낼 때마다 헤더에 포함해야 한다. 이때 매번 로컬 스토리지에서 JWT를 불러오면 성능에 영향을 줄 수 있으므로, 애플리케이션 실행 중에..

[네트워크] 네트워크의 기초

우선, 네트워크는 컴퓨터 등의 장치들이 통신 기술을 이용하여 구축하는 연결망을 지칭하는 용어다. 네트워크란?노드(node)와 링크(link)가 서로 연결되어 있으며 리소스를 공유하는 집합을 의미한다.여기서 노드란 서버, 라우터, 스위치 등 네트워크 장치를 의미하고 링크는 유선 또는 무선을 의미한다. 처리량과 지연 시간네트워크를 구축할 때는 '좋은' 네트워크로 만드는 것이 중요하다.좋은 네트워크란, 많은 처리량을 처리할 수 있으며 지연 시간이 짧고 장애 빈도가 적으며 좋은 보안을 갖춘 네트워크를 말한다. 처리량링크 내에서 성공적으로 전달된 데이터의 양을 말하며 보통 얼만큼 트래픽을 처리했는지를 나타낸다.많은 트래픽을 처리한다 = 많은 처리량을 가진다단위 : bps(bits per second, 초당 전송 ..

[네트워크] RESTful API 이해하기

REST웹 서비스를 설계하고 구축하기 위한 방식 중 하나이다.쉽게 설명하면, 웹 서비스가 아키텍처적으로 작동하는 방식이라고 생각하면 된다. REST는 리소스를 이름으로 구분하여 해당 리소스의 상태를 주고받는 모든 것을 의미함. REST 개념HTTP URI를 통해 리소스를 명시하고, HTTP Method(POST, GET, POST, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다. CRUD OperationCRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능을 묶어서 일컫는 말이다.Create : 데이터 생성 - POSTRead : 데이터 조회 - GETUpdate : 데이터 수정 - PUT, PATCHDelete : 데이터 삭제 - DELE..

[자료구조] 선형/비선형 자료 구조

[자료구조] 시간 복잡도, 공간 복잡도자료구조자료구조는 효율적으로 데이터를 관리하고 수정, 삭제, 탐색, 저장할 수 있는 방법을 의미한다.적절한 자료구조를 선택함으로써 특정 작업을 더 빠르고 효율적으로 수행할 수 있다.예)auny.tistory.com 자료구조 복잡도에 이어서 자료구조 종류에 대해 정리해보려고 한다. 선형 자료 구조요소가 일렬로 나열되어 있는 자료 구조를 말한다. 연결 리스트(Linked List)데이터를 감싼 노드를 포인터로 연결해서 공간적인 효율성을 극대화시킨 자료 구조삽입과 삭제는 O(1), 탐색은 O(n)이 걸린다. 아래의 그림처럼 prev 포인터와 next 포인터로 앞과 뒤의 노드를 연결시킨 것이 연결 리스트싱글 연결 리스트 : next 포인터만 가짐이중 연결 리스트 : next..

[Database] 조인(JOIN) 종류

오늘은 데이터베이스에서 자주 사용되는 조인의 종류에 대해 간단히 정리하려고 한다. 조인(JOIN)이란?두 개 이상의 테이블을 결합하여 하나의 결과물을 만드는 작업을 말한다.MySQL에서는 'JOIN' 쿼리를 사용하여, MongoDB에서는 'lookup' 쿼리를 사용하여 조인을 처리할 수 있다. 참고로 MongoDB의 'lookup'은 성능 저하 문제가 있을 수 있어, 가능한 사용하지 않는 것이 좋다.따라서 여러 테이블을 조인하는 작업이 많다면, 관계형 데이터베이스를 사용하는 것이 더 적합하다. 조인의 종류내부 조인(inner join)왼쪽 테이블과 오른쪽 테이블의 두 행이 모두 일치하는 행이 있는 부분만 표기SELECT * FROM TableA AINNER JOIN TableB B ONA.key = B...