강의 내용 정리
RDBMS 이론 및 설계 실습
인스타그램 DB 설계 실습
RDS 개념
키워드 정리
RDBMS
SQL
Database 용어
Key
Cardinality (1:1 관계 / 1:N관계 / N:M관계)
Optionality (Optional / Mandatory 여부)
NoSQL의 종류
MySQL을 제외한 RDBMS 종류
📝 강의 내용 정리
1. RDBMS 이론 및 설계 실습
백엔드 언어가 DBMS에게 데이터를 요청하는 방법 -> "쿼리"(=명령)를 사용해 데이터 요청
이 명령을 Structured Query Language, SQL이라 한다.
SQL을 사용하는 DB에는 mysql, oracle 등이 있다. 이번에 강의에서 사용할 DB는 mysql이다.
RDBMS : Related 관계형 데이터 베이스
데이터 베이스를 생성하는 것은 엑셀 파일을 생성하는 것과 같다.
엑셀 파일 -> 데이터베이스, 스키마
시트 -> 테이블
컬럼 -> 속성
DDL (Create, Alter, Drop) : 스키마를 생성하고 스키마에 어떤 컬럼들이 있는지 정의하는 것
DML (Insert, Select, Update, Delete) : 데이터를 넣고 조회, 수정하는 작업
DCL (Grant, Revoke): 데이터 베이스에 어떤 유저가 접속할 수 있고, 어떤 유저가 테이블을 어디까지 볼 수 있는지 정의하고, 계정에 대해 관리하는 것
2. 인스타그램 DB 설계 실습
1️⃣단계 시스템 분석
> 화면을 보고 어떤 데이터들이 필요할지 분석한다



음 인스타그램 화면을 보고 어떤 데이터들이 필요할 지 분석해보자
첫번째 화면에서는 (유저 닉네임, 유저 이름, 유저 프로필 사진, 유저 소개글, 유저 웹사이트 링크, 팔로워 수, 팔로잉 수, 게시물 개수, 게시물 사진)이 필요해 보인다.
두번째 화면에서는 (게시물 내용, 게시물 좋아요 수, 게시물 댓그 ㄹ수, 게시물 올린 시간)이 필요하다 *중복 제외
세번째 화면에서는 (댓글 내용, 댓글 올린 시간, 댓글 좋아요 수, 태그된 유저, 대댓글 여부)가 필요하다.
2️⃣단계 논리
Entity - 객체 (1단계에서 분석한 데이터들을 묶을 수 있는 단위)
ex) 유저, 게시물, 댓글, 팔로우
Attribute - 속성
ex) 유저 내 닉네임, 이름, 프로필 사진, 소개글, 웹사이트 링크
Relation - 관계 (1:1 & 1:N & N:M)
ex) 유저 : 게시물 = 1:N, 게시물 : 댓글 = 1:N, 유저 : 댓글 = 1:N, 책 : 작가 = N:M
3️⃣단계 물리 : 실제 DBMS를 구성하기 위한 작업
Entity -> 테이블
ex) 유저 테이블, 게시물 테이블, 댓글 테이블, 팔로우 테이블
Attribute -> column
ex) 유저 테이블은 닉네임, 이름, 프로필 사진, 소개글 등의 column을 가지게 됨
물리-관계
1) PK (Primary Key)
: 각 테이블의 대표 값, 고유한 값 / 유저를 구분할 수 있는 값 / 사람의 PK는 주민등록번호 / PK는 무조건 하나는 있어야함
ex) 유저 - 유저 인덱스 속성 추가, 게시물 - 게시물 인덱스 속성 추가
2) FK
: 외래키 / FK로 관계 설정
ex) 1:N 관계에서는 N이 속하는 테이블에 1이 속하는 테이블의 인덱스를 추가해주면 된다.

ex) N:M 관계에서는 새로 테이블을 추가해준다.

ex) 1:1 한쪽을 다른 한 쪽의 column으로 표현하거나 두개의 테이블로 나눠서 관리하면 된다.
3) join
2. RDS 개념
데이터 베이스 서버라고 생각하면 된다.
크아를 예로 들자면, 크아에는 해피서버, 드림서버 두개의 서버가 존재한다. 각각의 서버에 DB를 하나씩 가지고 있기 때문에 해피서버의 유저와 드림서버의 유저가 같이 게임을 할 수 없다ㅜ.ㅜ 서버가 터지면 DB도 터지기 때문에 사람들은 여러개의 서버가 하나의 DB를 공유하는 방식을 생각해내게 된다. 이때 공유되는 DB의 예시가 RDS이다. RDS는 여러 서버가 서로 공유를 하고 있기 때문에, 데이터를 공유할 수 있다(구글 계정으로 유튜브도 이용 가능, 지메일도 이용 가능).
🎯 키워드 정리
1. RDBMS
Relational Database Management System, 관계형 데이터베이스 관리 시스템
테이블 기반의 DBMS라 할 수 있다.
https://z2soo.github.io/database/RDBMS%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80/
RDBMS란 무엇인가?
1. 정의
z2soo.github.io
1-1) RDB
Relational Database, 관계형 데이터 모델에 기초를 둔 DB
마치 엑셀 시트처럼 빈칸에 내용을 차곡차곡 쌓아가는 데이터 베이스 방식

회원정보나 서비스 이용 기록 등 정해진 정보 타입에 따라 정보가 입력되거나, 기록이 추가되는 방식이기 때문에 복잡한 계산 없이, 각각의 데이터가 어디로 들어가야 할지 미리 정해져 있는 경우가 대부분이다. 그러니 입력되는 정보가 숫자인지, 텍스트인지를 미리 정해 둘 수 있고 효율적인 DB 설계가 가능한 것이죠.
수백만 건의 데이터들 중에서 원하는 내용을 찾고, 정렬하기에도 좋고 미리 예상되는 데이터의 흐름에 맞게 설계해두기 때문에, 안정성도 높다. 또한 작은 규모의 서비스나, 기업 규모의 커다란 서비스를 만들 때에도 확장 설계를 적용하기 편리하다는 장점이 있다.
1-2) DBMS
DataBase Management System, 데이터베이스를 관리하는 시스템
사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고 데이터베이스를 관리해 주는 소프트웨어입니다.
1-3) NoSQL
비관계형 데이터 베이스
스키마도 없고, 관계도 없다.
https://inpa.tistory.com/entry/DB-%F0%9F%93%9A-NoSQL-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC
[DB] 📚 NoSQL 개념 입문 💯 정리
NoSQL 데이터베이스란? NoSQL은 Not Only SQL의 약자로 기존 RDBMs 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미하며, 관계형 데이터 베이스의 한계를 극복하기 위한 데이터
inpa.tistory.com
1-4) DBMS와 RDBMS의 차이점
DBMS | RDBMS |
DBMS는 데이터를 파일로 저장합니다. | RDBMS는 데이터를 테이블형식으로 저장합니다. |
DBMS에서 데이터는 일반적으로 계층적 형식 또는 탐색 형식으로 저장됩니다. | RDBMS에서 테이블들은 primary key라는 식별자가 있으며 데이터의 값들은 테이블 형식으로 저장됩니다. |
DBMS에는 표준화라는것이 없습니다. | RDBMS는 표준화 되어있습니다. |
DBMS는 데이터보관에 있어 어떠한 보안도 제공하지 않습니다. | RDBMS는 ACID를위한 무결성 제약을 정의합니다. ( A - Atomocity 원자성 C - Consistency 일관성 I - Isolation 고립성 D - Durability 지속성 ) |
DBMS는 데이터를 저장하기 위해 파일 시스템을 사용하고, 그렇기때문에 테이블간의 관계가 없습니다. | RDBMS시스템은 저장된 데이터에 접근하기 위해 데이터의 테이블 형식 구조를 지원합니다. |
DBMS는 적은 데이터를 처리하기에 좋습니다. | RDBMS는 많은 데이터를 처리하기 좋습니다. |
DBMS를 예로들면 XML등이 있습니다. | RDBMS를 예로들면 mysql, oracle, sql server등이 있습니다. |
1-5) SQL, NoSQL 비교

SQL 장점
- 명확하게 정의된 스키마, 데이터 무결성 보장
- 관계는 각 데이터를 중복없이 한번만 저장
SQL 단점
- 덜 유연함. 데이터 스키마를 사전에 계획하고 알려야 함. (나중에 수정하기 힘듬)
- 관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있음
- 대체로 수직적 확장만 가능함
NoSQL 장점
- 스키마가 없어서 유연함. 언제든지 저장된 데이터를 조정하고 새로운 필드 추가 가능
- 데이터는 애플리케이션이 필요로 하는 형식으로 저장됨. 데이터 읽어오는 속도 빨라짐
- 수직 및 수평 확장이 가능해서 애플리케이션이 발생시키는 모든 읽기/쓰기 요청 처리 가능
NoSQL 단점
- 유연성으로 인해 데이터 구조 결정을 미루게 될 수 있음
- 데이터 중복을 계속 업데이트 해야 함
- 데이터가 여러 컬렉션에 중복되어 있기 때문에 수정 시 모든 컬렉션에서 수행해야 함 (SQL에서는 중복 데이터가 없으므로 한번만 수행이 가능)
SQL 데이터베이스 사용이 더 좋을 때
- 관계를 맺고 있는 데이터가 자주 변경되는 애플리케이션의 경우
- NoSQL에서는 여러 컬렉션을 모두 수정해야 하기 때문에 비효율적
- 변경될 여지가 없고, 명확한 스키마가 사용자와 데이터에게 중요한 경우
NoSQL 데이터베이스 사용이 더 좋을 때
- 정확한 데이터 구조를 알 수 없거나 변경/확장 될 수 있는 경우
- 읽기를 자주 하지만, 데이터 변경은 자주 없는 경우
- 데이터베이스를 수평으로 확장해야 하는 경우 (막대한 양의 데이터를 다뤄야 하는 경우)
2. SQL
SQL은 Structured Query Language 의 약자로 관계형 데이터베이스 관리시스템의 데이터를 관리하기 위해 설계된 프로그래밍 언어이며 관계형 데이터베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안되었습니다. SQL구문은 크게 3가지(DDL / DML / DCL)로 나뉜다.
2-1) DDL
데이터 정의어로, 베이스를 정의한다.
> CREATE, DROP, ALTER
2-2) DCL
데이터베이스를 컨트롤하는 명령어로 접근 권한 등을 관리한다.
> GRANT, REVOKE, ROLLBACK, COMMIT
2-3) TCL
DCL(Data Control Language)에서 트랜잭션을 제어하는 명령인 COMMIT과 ROLLBACK 만을 따로 분리해서 TCL이라고 표현하고 있다.
> COMMIT ROLLBACK
https://velog.io/@hj8853/MySQLTCL-Transaction-Control-Language
3. Database 용어

3-1) Table
: 같은 속성(Column, attribute)을 공유하는 튜플(tuple, row)의 모임
: 관계형 데이터 베이스에서 정보를 구분하여 저장하는 기본 단위
3-2) Row
관계된 데이터의 묶음. 튜플(Tuple) 또는 레코드(Record)라고도 불림
3-3) Column
가장 작은 단위의 데이터를 의미. 필드(Field) 또는 속성(Attribute)라고도 불림
3-4) Schema
데이터베이스를 구성하는 개체, 속성, 관계를 전반적으로 기술한 것
4. Key : 테이블에서 행의 식별자로 이용되는 식별자
https://jerryjerryjerry.tistory.com/49
[SQL] 키(슈퍼키,대체키,후보키,기본키,외래키)
* 키(Key) - 열쇠는 무언가를 열거나 잠글 때 사용하는 것으로, 같은 것이 하나도 없다. 우리집 열쇠가 옆집의 열쇠랑 다르듯이 말이다. - 이와 같이 키라는 것은 무언가를 식별하는 고유한 식별자(
jerryjerryjerry.tistory.com
5. Cardinality (1:1 관계 / 1:N관계 / N:M관계)
https://velog.io/@gillog/DB-11-1N-NM-%EA%B4%80%EA%B3%84
[DB] 1:1, 1:N, N:M 관계
관계형 데이터베이스(Oracle, MySQL, MS-SQL, SQLite 등등)는 엔티티끼리 관계를 맺을 수 있어서 관계형 DB라는 이름이 붙었다.엔티티(Entity) : DataBase에 표현하려고 하는 유형, 무형의 객체로서 서로 구별
velog.io
6. Optionality (Optional / Mandatory 여부)
7. NoSQL의 종류

Key-Value | Key-value의 형식으로 모든 데이터를 저장 - Cassandra DB: 읽고 쓰기가 빠름, 10페타바이트 데이터 저장 가능, 넷플릭스/인스타그램/우버 같은 회사에서 사용 - Redis: 데이터베이스로 사용될 수 있으며 Cache로도 사용될 수 있는 기술, Memory 위에서 동작, 인메모리 솔루션 |
Column | 열 별로 연속적으로 저장하는 것 |
Document | JSON, XML과 같은 Collection 데이터 모델 구조 - Mongo DB: Document에서 가장 유명한 DB이다. 복잡한 객체의 계층 관계를 하나의 레코드(열)로 표현할 수 있다. JSON Document 형태로 데이터를 저장, 원하는 모양이나 종류로 데이터 저장이 가능하다. https://inpa.tistory.com/m/424 |
graph | 노드, 관계, 특성의 형태로 데이터를 저장 데이터 간의 관계를 그래프로 형성하고 통합 검색을 빠르게 할 수 있음 각각의 엔티티를 저장하고 관계망으로 연결한다. 예를 들어 페이스북을 만든다면 필요한 DB이다. |
8. MySQL을 제외한 RDBMS 종류

1. Oracle
- Oracle Corporation에서 개발되었으며 현재 가장 널리 사용되는 RDBMS
- 운영체제 관계없이 설치가 용이하다.
- 보안성이 높아 제조업, 금융권 등의 대기업에서 널리 사용된다.
- 오픈소스가 아니라는 단점이 있으나, 그로 인해 보안성이 높다.
2. Microsoft SQL Server
- Microsoft에서 개발한 상업용 DB
- 운영체제에 구애받지 않지만 WINDOWS에 특장점을 보이고 있다.
- WINDOWS 버전은 소스 비공개, LINUX 버전 오픈 소스
- 금융권에서도 조금씩 사용되기도 하지만, 중소기업 위주로 사용
3. Maria DB
- MySQL이 Oracle에 합병된 후 MySQL에서 나온 일부 진영이 개발
- 운영체제에 관계없이 설치가 용이
- 기존 MySQL 드라이버 호환이 완벽하며, 그 외의 기능도 제공
- 중소기업 및 개인 프로젝트에서의 활용도가 탁월하다.
'Server > UMC 2기 Server' 카테고리의 다른 글
[UMC] Server 5주차 Aquerytool로 인스타그램 erd 설계하기 (0) | 2022.04.07 |
---|---|
[UMC] Server 4주차 *실습* AWS RDS 구축하기 / DataGrip로 RDS 에 접속하기 (0) | 2022.04.06 |
[UMC] Server 3주차 *실습* Ubuntu Nginx에서 도메인, 서브 도메인, 리다이렉션 적용 / HTTPS Let's Encrypt 설정 (0) | 2022.03.30 |
[UMC] Server 3주차 서브도메인 / 리다이렉션 / HTTPS (0) | 2022.03.28 |
[UMC] Server 2주차 *실습* 포트포워딩 실습 / AWS 실습 (0) | 2022.03.24 |
강의 내용 정리
RDBMS 이론 및 설계 실습
인스타그램 DB 설계 실습
RDS 개념
키워드 정리
RDBMS
SQL
Database 용어
Key
Cardinality (1:1 관계 / 1:N관계 / N:M관계)
Optionality (Optional / Mandatory 여부)
NoSQL의 종류
MySQL을 제외한 RDBMS 종류
📝 강의 내용 정리
1. RDBMS 이론 및 설계 실습
백엔드 언어가 DBMS에게 데이터를 요청하는 방법 -> "쿼리"(=명령)를 사용해 데이터 요청
이 명령을 Structured Query Language, SQL이라 한다.
SQL을 사용하는 DB에는 mysql, oracle 등이 있다. 이번에 강의에서 사용할 DB는 mysql이다.
RDBMS : Related 관계형 데이터 베이스
데이터 베이스를 생성하는 것은 엑셀 파일을 생성하는 것과 같다.
엑셀 파일 -> 데이터베이스, 스키마
시트 -> 테이블
컬럼 -> 속성
DDL (Create, Alter, Drop) : 스키마를 생성하고 스키마에 어떤 컬럼들이 있는지 정의하는 것
DML (Insert, Select, Update, Delete) : 데이터를 넣고 조회, 수정하는 작업
DCL (Grant, Revoke): 데이터 베이스에 어떤 유저가 접속할 수 있고, 어떤 유저가 테이블을 어디까지 볼 수 있는지 정의하고, 계정에 대해 관리하는 것
2. 인스타그램 DB 설계 실습
1️⃣단계 시스템 분석
> 화면을 보고 어떤 데이터들이 필요할지 분석한다



음 인스타그램 화면을 보고 어떤 데이터들이 필요할 지 분석해보자
첫번째 화면에서는 (유저 닉네임, 유저 이름, 유저 프로필 사진, 유저 소개글, 유저 웹사이트 링크, 팔로워 수, 팔로잉 수, 게시물 개수, 게시물 사진)이 필요해 보인다.
두번째 화면에서는 (게시물 내용, 게시물 좋아요 수, 게시물 댓그 ㄹ수, 게시물 올린 시간)이 필요하다 *중복 제외
세번째 화면에서는 (댓글 내용, 댓글 올린 시간, 댓글 좋아요 수, 태그된 유저, 대댓글 여부)가 필요하다.
2️⃣단계 논리
Entity - 객체 (1단계에서 분석한 데이터들을 묶을 수 있는 단위)
ex) 유저, 게시물, 댓글, 팔로우
Attribute - 속성
ex) 유저 내 닉네임, 이름, 프로필 사진, 소개글, 웹사이트 링크
Relation - 관계 (1:1 & 1:N & N:M)
ex) 유저 : 게시물 = 1:N, 게시물 : 댓글 = 1:N, 유저 : 댓글 = 1:N, 책 : 작가 = N:M
3️⃣단계 물리 : 실제 DBMS를 구성하기 위한 작업
Entity -> 테이블
ex) 유저 테이블, 게시물 테이블, 댓글 테이블, 팔로우 테이블
Attribute -> column
ex) 유저 테이블은 닉네임, 이름, 프로필 사진, 소개글 등의 column을 가지게 됨
물리-관계
1) PK (Primary Key)
: 각 테이블의 대표 값, 고유한 값 / 유저를 구분할 수 있는 값 / 사람의 PK는 주민등록번호 / PK는 무조건 하나는 있어야함
ex) 유저 - 유저 인덱스 속성 추가, 게시물 - 게시물 인덱스 속성 추가
2) FK
: 외래키 / FK로 관계 설정
ex) 1:N 관계에서는 N이 속하는 테이블에 1이 속하는 테이블의 인덱스를 추가해주면 된다.

ex) N:M 관계에서는 새로 테이블을 추가해준다.

ex) 1:1 한쪽을 다른 한 쪽의 column으로 표현하거나 두개의 테이블로 나눠서 관리하면 된다.
3) join
2. RDS 개념
데이터 베이스 서버라고 생각하면 된다.
크아를 예로 들자면, 크아에는 해피서버, 드림서버 두개의 서버가 존재한다. 각각의 서버에 DB를 하나씩 가지고 있기 때문에 해피서버의 유저와 드림서버의 유저가 같이 게임을 할 수 없다ㅜ.ㅜ 서버가 터지면 DB도 터지기 때문에 사람들은 여러개의 서버가 하나의 DB를 공유하는 방식을 생각해내게 된다. 이때 공유되는 DB의 예시가 RDS이다. RDS는 여러 서버가 서로 공유를 하고 있기 때문에, 데이터를 공유할 수 있다(구글 계정으로 유튜브도 이용 가능, 지메일도 이용 가능).
🎯 키워드 정리
1. RDBMS
Relational Database Management System, 관계형 데이터베이스 관리 시스템
테이블 기반의 DBMS라 할 수 있다.
https://z2soo.github.io/database/RDBMS%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80/
RDBMS란 무엇인가?
1. 정의
z2soo.github.io
1-1) RDB
Relational Database, 관계형 데이터 모델에 기초를 둔 DB
마치 엑셀 시트처럼 빈칸에 내용을 차곡차곡 쌓아가는 데이터 베이스 방식

회원정보나 서비스 이용 기록 등 정해진 정보 타입에 따라 정보가 입력되거나, 기록이 추가되는 방식이기 때문에 복잡한 계산 없이, 각각의 데이터가 어디로 들어가야 할지 미리 정해져 있는 경우가 대부분이다. 그러니 입력되는 정보가 숫자인지, 텍스트인지를 미리 정해 둘 수 있고 효율적인 DB 설계가 가능한 것이죠.
수백만 건의 데이터들 중에서 원하는 내용을 찾고, 정렬하기에도 좋고 미리 예상되는 데이터의 흐름에 맞게 설계해두기 때문에, 안정성도 높다. 또한 작은 규모의 서비스나, 기업 규모의 커다란 서비스를 만들 때에도 확장 설계를 적용하기 편리하다는 장점이 있다.
1-2) DBMS
DataBase Management System, 데이터베이스를 관리하는 시스템
사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고 데이터베이스를 관리해 주는 소프트웨어입니다.
1-3) NoSQL
비관계형 데이터 베이스
스키마도 없고, 관계도 없다.
https://inpa.tistory.com/entry/DB-%F0%9F%93%9A-NoSQL-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC
[DB] 📚 NoSQL 개념 입문 💯 정리
NoSQL 데이터베이스란? NoSQL은 Not Only SQL의 약자로 기존 RDBMs 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미하며, 관계형 데이터 베이스의 한계를 극복하기 위한 데이터
inpa.tistory.com
1-4) DBMS와 RDBMS의 차이점
DBMS | RDBMS |
DBMS는 데이터를 파일로 저장합니다. | RDBMS는 데이터를 테이블형식으로 저장합니다. |
DBMS에서 데이터는 일반적으로 계층적 형식 또는 탐색 형식으로 저장됩니다. | RDBMS에서 테이블들은 primary key라는 식별자가 있으며 데이터의 값들은 테이블 형식으로 저장됩니다. |
DBMS에는 표준화라는것이 없습니다. | RDBMS는 표준화 되어있습니다. |
DBMS는 데이터보관에 있어 어떠한 보안도 제공하지 않습니다. | RDBMS는 ACID를위한 무결성 제약을 정의합니다. ( A - Atomocity 원자성 C - Consistency 일관성 I - Isolation 고립성 D - Durability 지속성 ) |
DBMS는 데이터를 저장하기 위해 파일 시스템을 사용하고, 그렇기때문에 테이블간의 관계가 없습니다. | RDBMS시스템은 저장된 데이터에 접근하기 위해 데이터의 테이블 형식 구조를 지원합니다. |
DBMS는 적은 데이터를 처리하기에 좋습니다. | RDBMS는 많은 데이터를 처리하기 좋습니다. |
DBMS를 예로들면 XML등이 있습니다. | RDBMS를 예로들면 mysql, oracle, sql server등이 있습니다. |
1-5) SQL, NoSQL 비교

SQL 장점
- 명확하게 정의된 스키마, 데이터 무결성 보장
- 관계는 각 데이터를 중복없이 한번만 저장
SQL 단점
- 덜 유연함. 데이터 스키마를 사전에 계획하고 알려야 함. (나중에 수정하기 힘듬)
- 관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있음
- 대체로 수직적 확장만 가능함
NoSQL 장점
- 스키마가 없어서 유연함. 언제든지 저장된 데이터를 조정하고 새로운 필드 추가 가능
- 데이터는 애플리케이션이 필요로 하는 형식으로 저장됨. 데이터 읽어오는 속도 빨라짐
- 수직 및 수평 확장이 가능해서 애플리케이션이 발생시키는 모든 읽기/쓰기 요청 처리 가능
NoSQL 단점
- 유연성으로 인해 데이터 구조 결정을 미루게 될 수 있음
- 데이터 중복을 계속 업데이트 해야 함
- 데이터가 여러 컬렉션에 중복되어 있기 때문에 수정 시 모든 컬렉션에서 수행해야 함 (SQL에서는 중복 데이터가 없으므로 한번만 수행이 가능)
SQL 데이터베이스 사용이 더 좋을 때
- 관계를 맺고 있는 데이터가 자주 변경되는 애플리케이션의 경우
- NoSQL에서는 여러 컬렉션을 모두 수정해야 하기 때문에 비효율적
- 변경될 여지가 없고, 명확한 스키마가 사용자와 데이터에게 중요한 경우
NoSQL 데이터베이스 사용이 더 좋을 때
- 정확한 데이터 구조를 알 수 없거나 변경/확장 될 수 있는 경우
- 읽기를 자주 하지만, 데이터 변경은 자주 없는 경우
- 데이터베이스를 수평으로 확장해야 하는 경우 (막대한 양의 데이터를 다뤄야 하는 경우)
2. SQL
SQL은 Structured Query Language 의 약자로 관계형 데이터베이스 관리시스템의 데이터를 관리하기 위해 설계된 프로그래밍 언어이며 관계형 데이터베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안되었습니다. SQL구문은 크게 3가지(DDL / DML / DCL)로 나뉜다.
2-1) DDL
데이터 정의어로, 베이스를 정의한다.
> CREATE, DROP, ALTER
2-2) DCL
데이터베이스를 컨트롤하는 명령어로 접근 권한 등을 관리한다.
> GRANT, REVOKE, ROLLBACK, COMMIT
2-3) TCL
DCL(Data Control Language)에서 트랜잭션을 제어하는 명령인 COMMIT과 ROLLBACK 만을 따로 분리해서 TCL이라고 표현하고 있다.
> COMMIT ROLLBACK
https://velog.io/@hj8853/MySQLTCL-Transaction-Control-Language
3. Database 용어

3-1) Table
: 같은 속성(Column, attribute)을 공유하는 튜플(tuple, row)의 모임
: 관계형 데이터 베이스에서 정보를 구분하여 저장하는 기본 단위
3-2) Row
관계된 데이터의 묶음. 튜플(Tuple) 또는 레코드(Record)라고도 불림
3-3) Column
가장 작은 단위의 데이터를 의미. 필드(Field) 또는 속성(Attribute)라고도 불림
3-4) Schema
데이터베이스를 구성하는 개체, 속성, 관계를 전반적으로 기술한 것
4. Key : 테이블에서 행의 식별자로 이용되는 식별자
https://jerryjerryjerry.tistory.com/49
[SQL] 키(슈퍼키,대체키,후보키,기본키,외래키)
* 키(Key) - 열쇠는 무언가를 열거나 잠글 때 사용하는 것으로, 같은 것이 하나도 없다. 우리집 열쇠가 옆집의 열쇠랑 다르듯이 말이다. - 이와 같이 키라는 것은 무언가를 식별하는 고유한 식별자(
jerryjerryjerry.tistory.com
5. Cardinality (1:1 관계 / 1:N관계 / N:M관계)
https://velog.io/@gillog/DB-11-1N-NM-%EA%B4%80%EA%B3%84
[DB] 1:1, 1:N, N:M 관계
관계형 데이터베이스(Oracle, MySQL, MS-SQL, SQLite 등등)는 엔티티끼리 관계를 맺을 수 있어서 관계형 DB라는 이름이 붙었다.엔티티(Entity) : DataBase에 표현하려고 하는 유형, 무형의 객체로서 서로 구별
velog.io
6. Optionality (Optional / Mandatory 여부)
7. NoSQL의 종류

Key-Value | Key-value의 형식으로 모든 데이터를 저장 - Cassandra DB: 읽고 쓰기가 빠름, 10페타바이트 데이터 저장 가능, 넷플릭스/인스타그램/우버 같은 회사에서 사용 - Redis: 데이터베이스로 사용될 수 있으며 Cache로도 사용될 수 있는 기술, Memory 위에서 동작, 인메모리 솔루션 |
Column | 열 별로 연속적으로 저장하는 것 |
Document | JSON, XML과 같은 Collection 데이터 모델 구조 - Mongo DB: Document에서 가장 유명한 DB이다. 복잡한 객체의 계층 관계를 하나의 레코드(열)로 표현할 수 있다. JSON Document 형태로 데이터를 저장, 원하는 모양이나 종류로 데이터 저장이 가능하다. https://inpa.tistory.com/m/424 |
graph | 노드, 관계, 특성의 형태로 데이터를 저장 데이터 간의 관계를 그래프로 형성하고 통합 검색을 빠르게 할 수 있음 각각의 엔티티를 저장하고 관계망으로 연결한다. 예를 들어 페이스북을 만든다면 필요한 DB이다. |
8. MySQL을 제외한 RDBMS 종류

1. Oracle
- Oracle Corporation에서 개발되었으며 현재 가장 널리 사용되는 RDBMS
- 운영체제 관계없이 설치가 용이하다.
- 보안성이 높아 제조업, 금융권 등의 대기업에서 널리 사용된다.
- 오픈소스가 아니라는 단점이 있으나, 그로 인해 보안성이 높다.
2. Microsoft SQL Server
- Microsoft에서 개발한 상업용 DB
- 운영체제에 구애받지 않지만 WINDOWS에 특장점을 보이고 있다.
- WINDOWS 버전은 소스 비공개, LINUX 버전 오픈 소스
- 금융권에서도 조금씩 사용되기도 하지만, 중소기업 위주로 사용
3. Maria DB
- MySQL이 Oracle에 합병된 후 MySQL에서 나온 일부 진영이 개발
- 운영체제에 관계없이 설치가 용이
- 기존 MySQL 드라이버 호환이 완벽하며, 그 외의 기능도 제공
- 중소기업 및 개인 프로젝트에서의 활용도가 탁월하다.
'Server > UMC 2기 Server' 카테고리의 다른 글
[UMC] Server 5주차 Aquerytool로 인스타그램 erd 설계하기 (0) | 2022.04.07 |
---|---|
[UMC] Server 4주차 *실습* AWS RDS 구축하기 / DataGrip로 RDS 에 접속하기 (0) | 2022.04.06 |
[UMC] Server 3주차 *실습* Ubuntu Nginx에서 도메인, 서브 도메인, 리다이렉션 적용 / HTTPS Let's Encrypt 설정 (0) | 2022.03.30 |
[UMC] Server 3주차 서브도메인 / 리다이렉션 / HTTPS (0) | 2022.03.28 |
[UMC] Server 2주차 *실습* 포트포워딩 실습 / AWS 실습 (0) | 2022.03.24 |