//////
Search

알고리즘, AWS EC2, DOCKER, MYSQL by 김지수

태그
2022/10/11 14:36
사람
최종 편집 일시
2022/10/11 14:40

알고리즘

1. 자릿수의 합

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
코드

2. 자릿수 계산_CodeUp1278

어떤 숫자가 입력되면 그 숫자가 몇 자릿수 숫자인지 알아내는 프로그램을 작성하시오.
코드

3. 자릿수 합_CodeUp1620

어떤 수 n이 입력되면 n의 각 자릿수의 합이 한 자리가 될때까지 계산하여 출력하시오.예) 1234567 → 1+2+3+4+5+6+7 = 28 → 2 + 8 = 10 → 1 + 0 = 1
코드1
코드2
코드3
코드4 “재귀함수”

AWS_EC2

1. AWS_EC2의 개념

AWS EC2

아마존에서 개발한 클라우드 컴퓨팅 플랫폼이다.
아마존이 각 세계에 구축한 데이터 센터의 서버용 컴퓨터들의 자원을 원격으로 사용할 수 있다.

클라우드 컴퓨팅

클라우드 컴퓨팅이란?
기존의 물리적인 형태의 실물 컴퓨팅 리소스를 가상화된 it리소스를 서비스 형태로 제공
사용자로 하여금 네트워크 상에서 클라우드 서비스의 자원을 사용
클라우드 컴퓨팅 종류는 3가지로 나뉜다.
IaaS (Infrastructure as a Service)
개발사에 제공되는 물리적 자원을 가상화한다.
예) AWS EC2
PaaS (Platform as a Service)
서비스를 개발할 수 있는 플랫폼을 가상화한다.
예) 구글의 앱엔진
SaaS (Software as a Service)
고객에게 제공되는 소프트웨어를 가상화한다.
예) 스프레드시트

2. AWS_EC2 인스턴스 생성

과정

3. AWS_EC2와 xshell 연결하기

과정

xshell

텔넷/SSH 프로토콜로 리눅스 원격 호스트에 접속할 수 있는 윈도우용 터미널 에뮬레이터
텔넷
인터넷을 통해 원격 호스트 컴퓨터에 접속할 때 지원되는 인터넷 표준 프로토콜(멀리 떨어진 컴퓨터를 자신의 PC처럼 사용하게 만들어 준다.)
SSH (Secure Shell Protocol)
컴퓨터와 컴퓨터가 네트워크를 통해 보안적으로 안전하게 통신하기 위해 사용되는 프로토콜

Docker

1. Docker의 개념

Docker의 등장 배경

어떤 서비스가 점차 확장되어 많은 서버와 리소스를 가지고 운영을 해야 하는데 물리적인 하드웨어와 자주 발생하는 서비스 배포의 관계가 1.2개가 아닌 수천, 수만, 수백만 서버와 배포를 관리하기 위해서는 기존의 vm방식으로 감당이 안된다. 그래서 등장한 것이 docker이다.

Docker란?

도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다.
컨테이너를 통해 다양한 프로그램, 실행환경을 컨테이너로 추상화하고, 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순화한다.
컨테이너란?
격리된 공간에서 프로세스가 동작하는 기술이다.

2. Docker 설치

과정

MySQL

1. 데이터베이스의 개념

데이터 베이스란?

인덱싱, 질의(Query)기능을 제공하는 어플리케이션

File과 DB의 비교

파일
저장하는 기능
Data Base
인덱싱 기능: 데이터에 쉽게 접근할 수 있게 분류해주는 기능 검색 기능: 다양한 옵션이 있다. 구조를 잡아서 저장하는 기능 데이터를 중간에 끼워 넣는 기능 특정 부분만 업데이트 하는 기능 특정 조건에 해당하는 데이터만 수정하는 기능 이중화 기능: 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제해 관리하는 것 (+ 서버 클러스터링: 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술) 데이터를 넣기 전 check 기능을 통해 데이터의 신뢰성을 높일 수 있다. 단점: 사용방법을 따로 배워야 한다.

데이터 베이스를 쓰는 이유

데이터베이스는 데이터의 중복을 방지하고 대용량의 데이터를 관리하는데 많은 이점을 준다.
여러 개를 고칠 필요 없이, 테이블을 나눌 경우, Publisher 테이블의 출판사 주소만 바꾸면 된다.

2. 데이터 베이스의 키

키(Key)

무엇인가 식별하는 고유한 식별자 기능을 한다
데이터베이스에서 조건에 만족하는 관계의 행을 찾거나 순서대로 정렬할 때 다른 행과 구별할 수 있는 유리한 기준이 되는 속성의 집합이다.
기본키, 슈퍼키, 후보키, 대체키, 외래키 등이 있다.

슈퍼키 (Super Key)

각 행을 유일하게 식별할 수 있는 하나 또는 그 이상의 속성들의 집합이다.
유일성만 만족하면 됨 (최소성 만족 x)
유일성 : 하나의 키로 특정 행을 바로 찾아낼 수 있는 고유한 특성
어떤 속성끼리 묶던 중복값이 안나오고 서로 구별만 할 수 있으면 된다.

후보키 (Candidate Key)

각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합
후보키는 기본키가 될 수 있는 후보들이며 유일성과 최소성을 동시에 만족해야 한다.

기본키 (Primary Key)

후보키들 중에서 하나를 선택한 키로 최소성과 유일성을 만족하는 속성
테이블에서 기본키는 오직 1개만 지정할 수 있다.
테이블 안에서 유일하게 각 행(레코드)들을 구별하도록 쓰인다
NULL값을 절대 가질 수 없고, 중복된 값을 가질 수 없다.
각 행을 구별하려면 값이 없어선 안되고, 중복되어서도 안되기 때문이다.

외래키 (Foreign Key)

테이블이 다른 테이블의 데이터를 참조하여 테이블간의 관계를 연결하는 것
데이터를 조회하기 쉽게 해줌
다른 테이블의 데이터를 참조할 때 없는 값을 참조할 수 있도록 제약을 주는 것
참조되는 부모 테이블이 먼저 생성된 뒤 데이터를 넣고, 참조하는 자식 테이블이 다음에 생겨야된다.
부모 테이블 먼저 삭제될 수 없다. 왜냐하면 부모 테이블을 참조하는데 부모 테이블이 삭제되면 자식 테이블은 참조하는 것이 없어지기 때문에 외래키 오류가 발생한다.
외래키 관계에서 부모 테이블을 삭제하려면 자식 테이블 먼저 삭제한 후 부모 테이블을 삭제해야 한다.

릴레이션(Relation)

관계형 데이터베이스에서 정보를 구분하여 저장하는 기본 단위
릴레이션은 테이블과 같은 뜻이다.

3. MySQL Workbench 설치와 MySql 접속

과정

4. DB 실습

ERD 초안

ERD 초안
PK(Primary Key): 한 개의 record 또는 row 를 테이블 안에서 고유하게 식별할 수 있는 인식표
FK(Foreign Key): 외래키, 외부에서 온 Key 라는 뜻이다.
PK 와 FK 는 상대적인 개념인데 출판사 id 가 book 입장에서는 외래키(FK)이지만 publisher 입장에서는 Primary Key(PK)이다.

Create Database

1.
스키마(DB) 생성하기
2.
DB 사용하겠다고 특정하기

Create Table

1.
book Table 만들기
Primary Key 체크!
2.
1권의 책 Insert
3.
publisher Table 생성 & 5개 출판사 Insert

Foreign Key & Parimary Key

1.
Foreign Key
초보자일 경우, Foreign Key 는 교과서에서처럼 무조건 걸지 말 것 → 어플리케이션 확장에 문제가 생길 수 있기 때문이다.
book Table 에 publisher Table 의 publisher_id 를 외래키로 걸기 example
Foreign Key 제약 조건
INSERT INTO `likelion-db`.`book` (`bookid`, `book_name`, `publisher_id`) VALUES (5, 'Do It! 자바 프로그래밍 입문2', 5);
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`likelion-db`.`book`, CONSTRAINT `publisher_id` FOREIGN KEY (`publisher_id`) REFERENCES `publisher` (`publisher_id`))
⇒ publisher(id=5)가 없기 때문에 나는 에러이다. 5번을 사용하고 싶다면 publisher Table 에 먼저 (id=5)를 등록해 주어야 한다.
2.
Primary Key
유일하게 식별할 때 사용하는 Key 를 Primary Key 라고 하며 중복될 수 없다.
그래서 book Table에 INSERT INTO `likelion-db`.`book` (`bookid`, `book_name`, `publisher_id`) VALUES (1, 'Do It! 자바 프로그래밍 입문2', 1); 을 또 Insert 할 경우 1번을 이미 앞에서 쓰고 있기 때문에 Duplicate entry 에러가 난다.