12.22.목(백엔드구조)

유희선·2022년 12월 22일
0

TIL

목록 보기
2/29
post-thumbnail

+예시로 작성코드 넣기

금일 목표
1. 백엔드(서버) 구조 정복

*이미지 설명
1. routing & router
1) routing

-네트워크에서 최상의 경로(=노드)를 선택하는 프로세스
(1) 라우팅 작동원리
-데이터는 데이터 패킷의 형태로 네트워크를 통해 이동, 각 데이터 패킷에는 패킷의 의도된 대상에 대한 정보가 포함된 헤더가 있음, 패킷이 대상으로 이동하는 동안 여러 라우터가 패킷을 여러 번 라우팅할 수 있음, 라우터는 수백만 개의 패킷에 대해 초당 수백만 번 이 프로세스를 수행
데이터 패킷이 도착하면 라우터는 먼저 라우팅 테이블에서 그 주소를 찾음
(2) 라우팅 유형
① 정적 라우팅 [static routing]

-라우팅 테이블에 경로를 수동으로 추가해야하는 프로세스
-네트워크 관리자가 정적 테이블을 사용하여 네트워크 경로를 수동으로 구성하고 선택, 네트워크 설계나 파라미터가 일정하게 유지될 것으로 예상되는 경우에 유용함
② 동적 라우팅 [dynamic routing]
-라우팅 테이블에서 경로의 현재 상태에 따라 경로를 자동으로 조정, 프로토콜을 사용하여 네트워크 대상과 도달하는 경로 검색
-라우터는 실제 네트워크 조건에 따라 런타임에 라우팅 테이블을 만들고 업데이트함, 동적 라우팅 테이블을 만들고 유지 관리하고 업데이트하는 규칙 집합인 동적 라우팅 프로토콜을 사용하여 소스에서 대상까지 가장 빠른 경로를 찾으려고 시도함
-가장 큰 장점 : 트래픽 볼륨, 대역폭, 네트워크 장애 등 변화하는 네트워크 조건에 대응한다는 것

2) router
-컴퓨팅 디바이스와 네트워크를 다른 네트워크에 연결하는 네트워킹 디바이스

*컴퓨팅 디바이스) 소프트웨어 컴퓨팅과 관련된 개념 및 객체
모든 프로그램의 컴퓨팅 성공에 필요한 처리 기능, 메모리, 네트워킹, 스토리지 및 기타 리소스를 지칭하는데 사용되는 일반적인 용어

(1) 기본 기능
① 경로 결정

-소스에서 대상으로 이동하는 데이터의 경로를 결정
-지연, 용량 및 속도와 같은 네트워크 지표를 분석하여 최상의 경로를 찾으려고 시도함
② 데이터 전달
-선택한 경로의 다음 디바이스로 데이터를 전달하여 최종적으로 대상에 도달하도록 함
-디바이스와 라우터는 동일한 네트워크에 있거나 다른 네트워크에 있을 수 있음
③ 로드 밸런싱
-경우에 따라 라우터가 여러 경로를 사용하여 동일한 데이터 패킷의 여러 사본을 전송할 수 있음
-데이터 손실로 인한 오류를 줄이고 이중화를 구현하고 트래픽 볼륨 관리

2. controller
모델이 '어떻게' 처리할지 알려줌, 사용자의 요청을 받아 처리 데이터와 UI 연결
= mvc 모델
1) Model (데이터의 접근, 수정, 생성)
모델, 데이터의 정보가 저장되어 있는 코드들이 모여있는 그룹
2) V (화면에 보여지는 부분)
화면에 출력되는 코드 (html)
3) C (request의 종류에 따라 m,v를 나누어 주는 부분)
View 로 요청된 request인지
model 로 요청된 request인지
4) 특징
-모델의 mutator 함수를 호출하여 상태를 바꿈
-예시) mutator 함수 : 멤버 변수의 값을 수정한느 함수

3. model
schema(스키마) 포함

3-1) DB schema
-어플리케이션에서 사용할 데이터를 체계적으로
디스크에 담도록 만들어진 데이터 저장 전용 프로그램

RDB를 사용할 것이기 때문에
key값을 설정해주어야 함

+'table' 의 특징
-일관적인 특징을 가진 중복되지 않는 데이터를 담기 위한 하나의 데이터 집합
ex) 회원 테이블 _ 이름, 나이, 주소, 고유번호 등
+'record' = 'row' = 'tuple'
-테이블 하나하나의 정보
-레코드는 여러 속성으로 이루어져 있음
+'column'
-속성
-데이터 타입을 지정할 수 있음 (domain)
+'domain'
-표현되는 값의 형식을 지정 , 문자&정수 등
+'indexing'
-컬럼의 내용을 Binary Tree 형태로 정렬하는 것
-Primary key만 인덱스를 생성하나요?
다른 컬럼도 index로 제약하여 인덱싱을 할 수 있는 키 존재
-Primary key가 아닌데 값의 중복을 허용하지 않으려면?
컬럼에 unique라는 제약을 지정할 수 있음
+'constraints' (제약)
-컬럼의 기능을 한정시키는 것

3-2) DB 스키마 종류
1. timestamp
시간표기, 특정한 시각을 나타내거나 기록하는 문자열
파일시스템에서 저장된 파일이 생성되거나 변경된 시각을 의미
생성일, 수정일
2. Primary key
RDB에서 row마다 고유하게 구분짓는 값
1) 개념
-테이블에서 특정한 레코드의 내용을 찾기 위해서는 컬럼의 내용을 기준으로 찾음
-레코드를 구분하는 기준이 되는 컬럼
2) 특징
-다른 레코드와 중복될 수 없음
-비어있을 수 없음 (not null) _ 회원정보
-레코드 검색의 기준이기에 빠른 검색을 위해 내부적으로 indexing 진행
3) 추가사항
-다른 스키마와 DB 연결하는 방법
-이 때 두 테이블의 primary key를 저장하는 컬럼 > foreign key라는 제약을 걸어야 함
[DB 내에서 테이블간의 관계를 표시하기 위한 방법]
(1) one-to-one
key-value 선호
primary key : foreign key
(2) one-to-many
embedding 선호
중간에 보조적인 테이블을 두고 foreign key를 연결해야 함
(3) one-to-few
embedding 선호
(4) one-to-squillions
referencing 선호
(5) many-to-many
referencing 선호
3. foreign key (외래키)
1) 개념
-두 테이블을 서로 연결하는 데 사용되는 키
2) 주의사항
(1) 외래키 값 : NULL 이거나 부모 테이블의 기본키 값과 동일
(2) 부모 테이블의 기본키, 고유키를 외래키로 지정 가능
(3) 부모 테이블의 기본키, 고유키가 여러 개의 컬럼으로 이루어져 있다면
부모가 가진 기본키, 고유키 컬럼을 원하는 개수만큼 묶어서 외래키로 지정
(4) 외래키로 지정할 두 테이블의 필드는 같은 데이터 타입이어야 함

+ 프레임워크
: 구조화가 진행되서 웹개발을 쉽고 간편하게!
1) 종류
-js : express
-php : laravel
-java : spring
2) SPA (single page application) vs 정적 사이
: 정적사이트의 단점을 보완하기 위해 생김,
한 페이지를 다 가져오는 것이 아닌 필요한 부분만 가져옴
3) SPA를 위한 프론트앤드 프레임워크 [언어) JS]
-Angular.js(앵귤러), react.js, vue.js

0개의 댓글