- 서버의 특징
1. 서버 : 클라이언트 => 1 : N
2. 상대적인 관계
- 서버의 구성
* 서버 : Apache, Ngnix
* 백엔드 언어 : php, spring, node.js
* DB,DBMS : mysql, oracle, mongo db
Protocol : 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계
- http : 인터넷 상에서 서버와 클라이언트가 정보를 주고 받기 위한 프로토콜
- https : http에서 보안이 들어간 프로토콜
- mysql :
- ssh : 원격프로토콜
- ftp : 파일전송 프로토콜
- sftp : ftp에서 보안이 들어간 프로토콜
ip & port
도메인 : 실제 ip 주소를 사용하기 쉽게 변환하기 위해서 쓰는 주소
port = '문'이라고 생각 하면 됨.
AWS ec2
Amazon Machine Image = ubuntu 선택 즉, OS 라고 생각하면 됨.
인바운드 규칙 : 서버에서 접속할 때 규칙
아웃바운드 규칙 : 서버에서 데이터가 나갈 때 규칙
보통 인바운드 규칙이 더 중요함
즉 누가 들어올 수 있게 하는 '문'을 만들어 두는 작업이라고 간단하게 생각
ssh는 원격접속을 하는 직원용 문으로 만들어 둔것이고,
그러면서 http로 들어올 수 있게 하는 두가지 문을 만든다.
Redirection
ip 주소로 입력을 해도 도메인으로 접속이 되는 것 처럼 다시 바꿔주는 것
http로 접속을 하려해도 https로 들어가는 것 처럼 바꿔주는 것.
하 aws ec2로 서버 인스턴스 들어가려고 터미널로 연결하려는데 안되가지고 짜증난다. 2시간 동안 찾고 있는데도 안들어가짐^_^
강의 진도 안나가는 거 다 참고 했지만, 여기선 그냥 프레임워크 어떻게 쓰는지만 알고 지나가자 ^_^
db가 이해할 수 있는 언어로 '쿼리'[요청] 를 해줘야 되는데 그 언어를 structured querry language 라고 합니다. 이를 sql 이라고 합니다!
RDBMS 관계형 데이터 베이스 매니지먼트 시스템
DB
엑셀 파일 -> 데이터베이스, 스키마
시트 -> 테이블
컬럼 -> 속성
DDL -> 스키마 생성
DML -> 스키마에 데이터 넣고 빼고 하는것
DCL -> 전체적인 스키마에 대한 관리 누가 볼 수 있고 그런 것이 있다는 것만 알면 됨.
DB설계
1. 데이터 모으기 : DB설계는 필요한 데이터를 받아줄 공간이 몇개가 필요한 지 알아 두는 것 중요.
즉, 필요한 데이터들을 하나씩 나열해서 몇개가 필요한지 알아두는 것
예를 들면, 유저 닉네임, 유저 이름 , 댓글 내용 태그된 유저, 좋아요 수 등등
2. 논리 단계 : 이렇게 나열 된 데이터를 논리에 따라 Entity, Attribute, Relation에 맞게 분류를 하는데
Entity - 객체 : 1단계에서 모든 데이터들을 하나로 묶어둘 수 있는 하나의 기준이라고 생각
예) user라는 객체 = 유저 닉네임,유저 이름, 유저 프로필 사진, 유저 소개글 등 이렇게 묶는 것.
어떤 것들을 묶을지 결정하는 것.
Attribute - 속성
Relation - 관계
3. 물리 단계 : 이 단계에서는 묶어 놓은
Entity 들을 직접 테이블화 하는 단계
Attribute들은 각 테이블의 collumn으로가져가면 된다.
테이블간의 관계를 만들어주는 것도 중요한데
이 때 관계를 만들어줄 때 1:1 , 1:N , N:M 이런식으로 진행 될 수 있음.
예를 들어
유저 : 게시물 -> 유저 한명이 게시물 여러개를 쓸 수는 있지만, 게시물 하나를 여러 유저가 사용할 수는 없으니 = 1: N
게시물 : 댓글 -> 같은 이유로 1 : N
유저 : 댓글 -> 댓글 하나를 유저 여러명이 쓸 수 없음. 이것도 1 : N
책 : 작가 = N:M
물리적인 관계에서 관계
PK : 각 테이블의 고유 대표 값 / FK : 외래키 join :쿼리 용어
테이블을 만들 때 꼭 pk는 있어야 함. 구분시키기 위해서.
DB를 만들 때 가장 중요한 것은 '정규화' 이 '정규화'란 중복 데이터를 줄이는 것.
RDS : 데이터 베이스 서버 ex 크레이지 아케이드의 해피서버와 드림서버 즉, 서버 하나당 DB를 갖고 있기 때문.
->여러개의 서버가 DB를 공유하는 방법이 있으면 서버를 나눠도 같이 게임 가능.