알고리즘
알고리즘이란?
문제를 해결하기 위한 '일련의 단계적 절차'.
데이터베이스
데이터 단위
bit
× 8 = byte
× 1024 = KB(KiloByte)
× 1024 = MB(MegaByte)
× 1024 = GB(GigaByte)
× 1024 = TB(TeraByte)
× 1024 = PB(PetaByte)
× 1024 = EB(ExaByte)
× 1024 = ZB(ZettaByte)
× 1024 = YB(YottaByte)
SQL (관계형 데이터베이스)
- 규칙에 맞는 데이터 입력
- 테이블 간 JOIN 지원
- 안정성, 일관성
- 관계를 맺고 있는 데이터가 자주 변경되는 경우
- 변경될 여지가 없고, 명확한 스키마가 사용자와 데이터에게 중요한 경우
NOSQL
- 자유로운 데이터 입력
- 컬렉션 간 JOIN 미지원
- 확장성, 가용성
- 정확한 데이터 구조를 알 수 없거나 변경/확장 될 수 있는 경우
- 읽기를 자주 하지만, 데이터 변경은 자주 없는 경우
데이터 모델링 단계
사용자 요구사항 분석
개념적 데이터 모델링
개념적 데이터 모델
- 의미 객체 모델
- 시멘틱 네트워크 모델
- ER(개체-관계) 모델
논리적 데이터 모델링
DBMS의 데이터 정의 언어(DDL)로 기술된 논리 스키마가 생성된다.
논리적 데이터 모델
- 관계형 모델
- 객체지향형 모델
- 객체-관계형 모델
- Key/Value 모델 (NoSQL에서 사용)
- Document 모델 (NoSQL에서 사용)
물리적 데이터 모델링
데이터베이스 파일의 물리적 저장 방식을 결정한다.
DBMS 및 하드웨어의 특징을 고려하여 처리능력을 향상시킬 수 있는 방법을 선택한다.
- 내부 저장구조
- 파일 구성
- 인덱스
- 접근 경로
- 레코드 저장 방법
- 데이터 타입
- 저장공간
자료구조
Array
- 연속된 메모리 공간에 데이터를 저장하는 자료구조
- 인덱스를 사용하여 원소에 빠르게 접근할 수 있다.
- 원소를 삽입하거나 삭제할 때, 뒤에 있는 모든 원소를 이동시켜야 하므로 오래 걸릴 수 있다.
- 순차적인 접근이 필요하거나, 빠른 접근이 필요할 때 사용한다.
LinkedList
- 각 노드는 데이터와 다음 노드를 가리키는 포인터로 구성되어 있다.
- 원소를 삽입하거나 삭제할 때, 포인터 업데이트만 하면 되기 때문에 빠르다.
- 원소에 접근하기 위해서 리스트를 순차적으로 탐색해야 한다.
- 데이터의 삽입과 삭제가 빈번하게 일어나는 상황에 사용한다.
보안
CSRF(cross site request forgery)
CSRF란?
인증된 사용자가 웹 애플리케이션에 특정 요청을 보내도록 유도하는 공격이다.
방어 방법
CSRF 토큰을 통해 요청이 사용자가 전송한 것이 맞는지 확인하거나 재인증을 요구
XSS(Cross-site scripting)
악의적인 사용자가 사이트에 스크립트를 삽입하는 공격
방어 방법
- 사용자가 게시글을 업로드할 때 스크립트가 포함되어 있는지 검사하고 제거
- 서버에서 CSP(Content-Security-Policy)정책을 설정하여, 허용된 스크립트만 실행되도록 제한
네트워크
CDN
장점
- 분산된 서버 네트워크
- 속도 및 트래픽 절약
- 보안 유지
- 부하 분산
단점
- 서버를 구축하는 비용 때문에 돈이 더 많이 든다