오늘 배운 것
웹 동작 방식
- IP주소, 브라우저, DNS
- HTTP : 송,수신 측의 통신규약이 프로토콜이고, HTTP는 웹에서 가장 많이 쓰이는 프로토콜이다.
- API : 서버의 창구 역할, 다른 소프트웨어와 통신하기 위해 따라야 하는 규칙
- 서버의 역할 : 예전에는 document를 잘 주는 게 서버의 역할이었지만 인터넷 발달이 고도화 되면서 이제는 json같은 데이터만 넘겨주고 DOM 구성은 프론트 단에서 잘 처리한다.
- REST(ful) API : REST는 소프트웨어 아키텍처의 일종이고 api 설계만 적절하게 해줘도 RESTful 하다고 말할 수 있다. (URL 고유하게 만들고, 적절한 HTTP 메소드 활용한다면)
- DB의 역할은 데이터를 성능 좋게 이용하기 위함
서버에 대한 이해
- 새로운 데이터를 처리하는 부분(Presentation 계층) - 서비스 로직을 처리하는 부분(Domain계층) - 기존의 데이터를 이용하는 부분(data access 계층) 으로 레이어드
- Presentation 계층 : 사용자와 상호 작용 처리. CLI, HTTP 요청, HTML 처리. URL 매핑해서 특정 함수가 호출되게 하는 것. 스프링에선 @Controller
- Domain 계층 : 핵심 로직이 포함된 계층. '유효성 검사' 및 '계산'. 서버 프레임워크가 유능해지면서 Domain 계층에만 집중할 수 있게 됨. 스프링에선 @Service
- Data Access 계층 : (대부분) 서버 외부에 있는 DB와 소통하는 계층. 스프링에선 @Repository
DB 기초
- in-memory DB는 서버가 멈추면 데이터도 휘발됨
- SQL : Structured Query Language. 표준이 존재하나 DBMS회사별로 약간의 차이가 있음. DDL, DCL, DML로 구성
- DDL : Data Definition Language. Data Definition Language 테이블이나 관계의 구조를 생성하는 데 사용
CREATE, ALTER, DROP, TRUNCATE - DB와 테이블을 생성, 수정, 삭제
- DCL : Data Control Language - 데이터의 사용 권한을 관리
GRANT, REVOKE - 사용자 또는 ROLE에 대해 권한을 부여, 회수
- DML : Data Manipulation Language - 테이블에 데이터를 검색, 삽입, 수정, 삭제
INSERT, SELECT, UPDATE, DELETE
- 데이터의 무결성 (data integrity) : 완전한 수명 주기를 거치며 데이터의 정확성과 일관성을 유지하고 보증
- 개체 무결성 : PRIMARY KEY와 관련. 모든 테이블이 primary key를 가져야 하며 primary key로 선택된 열은 고유해야 하고 NULL 은 허용하지 않는다.
- 참조 무결성 : FOREIGN KEY와 관련. PRIMARY KEY와 FOREIGN KEY 간의 관계가 항상 유지되어야 함. 예를 들어 참조되고 있는 속성 값(PRIMARY KEY를 가진)은 함부로 삭제될 수 없음.
- 범위 무결성 : 한 컬럼에 대해 NULL의 허용 여부와 타당한 데이터 값들을 지정. 자료형, 규칙과 제약, 값 범위들을 제한
- ERD : Entity Relationship Diagram. 개체-관계 모델. 테이블 간의 관계를 설명해주는 다이어그램으로 API를 효율적으로 뽑아내기 위한 구조도.
- CASCADE, JOIN, CONSTRAINT 등등...
느낀 점
팀원분들 잘 만난 것 같아 1차적으로 기분이 좋지만 내가 듣지도 않고 졸업해버린 DB가 나와서 좀 헷갈린다. JOIN도 기본적인 것만 다뤘는데 실습 쿼리짜기에서 틀린 부분도 있고 불안하지만 화이팅.