Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- aws #아키텍트 #과정 #vpc #인프라 구축 #amazon sns #server #less #architecture
- 비트 #바이트 #이진수
- aws #아키텍트 #과정 #vpc #인프라 구축 #alb #load balancer #t.g #target #group #haproxy #high ability #db #replica #region
- aws #아키텍트 #과정 #vpc #인프라 구축 #s3 #bucket #객체 #스토리지 #isci #이미지 #업로드
- aws #아키텍트 #과정 #vpc #인프라 구축 #haproxy #고가용성 #테스트 #alb #application #load balancer #application
- aws #아키텍트 #과정 #vpc #인프라 구축 #auto scailling #lauch template #ec2 instace #private #subnet
- 쓰레드 #쓰레드풀 #프로세스
- aws #아키텍트 #과정 #vpc #인프라 구축 #haproxy #round robin #process #high ability #auto scailling #app server #launch template
- aws #아키텍트 #과정 #vpc #인프라 구축 #rds #endpoint #cloudwatch #monitoring
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #OSI #ISO #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- 공간복잡도 #공간자원 #캐시메모리 #SRAM #DRAM #시간복잡도
- aws #아키텍트 #과정 #vpc #인프라 구축 #t.g #target group #alb #application #load #balancer #web #server
- aws #아키텍트 #과정 #vpc #인프라 구축 #s3 #bucket #객체 스토리지 #objects storage #events #upload #알림
- 업로드 #lambda #함수 #모바일 이미지 #썸네일 이미지
- aws #아키텍트 #과정 #vpc #인프라 구축
- aws #아키텍트 #과정 #vpc #인프라 구축 #php #alb #application #load #balancer #security #group #igw #ec2 #vpc #virtual #private #cloud
- aws #아키텍트 #과정 #vpc #인프라 구축 #rds #replica #복제본 #aurora #database #고가용성
- aws #아키텍트 #과정 #vpc #인프라 구축 #sqs #message #queue #sns구독
- aws #아키텍트 #과정 #vpc #인프라 구축 #aurora #database #rds #rdbs #load #balancer #web #page #haproxy
- 썸네일 #이미지
- 프로세스 #CPU #시공유 #커널
- aws #아키텍트 #과정 #vpc #인프라 구축 #second nat #gateway #routing table #route53 #고가용성 #private subnet #
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #웹개발
- aws #아키텍트 #과정 #vpc #인프라 구축 #ec2 #instance #launch #template #생성 #ami #amazone #machine #image
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #KDT #기본문법 #데이터베이스 #Computer #Science #CPU #메모리
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #vpc #인프라 구축 #sqs #trigger #python3.9 #패키지 #
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- aws #아키텍트 #과정 #vpc #인프라 구축 #db #장애조치 #reand only #replica #events
Archives
- Today
- Total
요리사에서 IT개발자로
스파르타 코딩클럽(부트캠프) 6장 DBMS(데이터베이스 관리 시스템)의 기능과 종류 본문
DBMS 개요
DBMS란 Database Management System
1. 데이터를 한곳에 모은 저장소를 만든다.
2. 이 저장소에 여러사용자가 접근하게 한다.
3. 데이터를 저장 및 관리 등의 기능을 수행하며 공유한다.
4. 공유하는 환경을 제공하는 응용 소프르웨어 프로그램이다.
공유 저장소(서버)를 구축, 사용자들에게 접근정보를 공유하여 데이터를 처리할 수 있는 인터페이스를 제공하고 복구 기능과 보안성 기능 또한 제공된다.
DBMS 용어
튜플 (Tuple)
- 테이블에서 행을 의미한다.
- 레코드(Record) 혹은 로우(Row)라고도 한다.
- 튜플은 릴레이션에서 중복되는 값을 가질 수 없다.
튜플의 수는 카디날리티(Cardinality)
어트리뷰트 (Attribute)
- 테이블에서 열을 의미한다.
- 칼럼(Columm)이라고도 한다.
어트리뷰트의 수는 디그리(Degree)
Degree : 정도 -> 도가 지나치다
릴레이션 (Relation=Table)
- 관계형 데이터베이스에서 정보를 구분하여 저장하는 기본 단위
- Ex)유저정보 > 유저테이블, 게시글 정보 > 게시글 테이블 등
키(Key)
- 테이블에서 행의 식별자로 이용되는 테이블의 열을 의미한다. Ex) 유저ID, 게시글ID
- 키는 주키와 외래키로 나뉘며 하나의 테이블에서 주키는 1개 or 1쌍으로만 구성, 외래키는 여러개로 구성될 수 있다.
- 주키(PK) : 현재 테이블에서 행을 식별하는 식별자
- 외래키(FK) : 현재 테이블과 연관되어있는 외부 테이블과 연관된 행을 식별하는 식별자(조인할 때 사용하여 조인키라고도 한다)
식별자(Identifier)
여러 개의 집합(인스턴스) 체를 담고 있는 하나의 테이블에서 각각을 구분할 수 있는 논리적인 이름, 개념이며 이 구분자를 식별자 라고 한다.
도메인 (Domain)
- 도메인은 하나의 어트리뷰트가 취할 수 있는 같은 타입의 원자값들의 집합이다.
- 성별 어트리뷰트의 도메인 : Male, Female 값만 가능하다.
- 나이 어트리뷰트의 도메인 : Age 값만 가능
- 이 외의 값은 입력될 수 없다.
DBMS 기능과 요구사항
DBMS는 DB를 효율적이고 직관적이고 안전하게 사용 할 수 있게 해주는 기능을 갖고 있다.
효율적
- 동일한 데이터가 저장되는것을 방지하는 중복제어기능
- 무결성 제약 조건을 정의/검사하는 기능
직관적
- 서로 다른 데이터 간 관계를 표현해주는 관계를 표현한다.
- 편리한 인터페이스 제공
안전
- 접근하는 사용자마다 다른 권한을 주는 접근통제기능이다.
- 데이터가 잘못 수정/삭제 되었을 경우 백업하는 기능이 있다.
Transaction(트랜잭션)
트랜잭션이란
DBMS의 요구사항을 충족시킬 핵심기능
데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
- Ex) 회원가입 절차 = 가입 트랜잭션, 결제 절차 = 결제 트랜잭션
트랜잭션은 데이터베이스 시스템에서 병행제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용된다.
- Ex) 회원가입, 결제는 작업 단위로 병행하여 처리
- Ex) 회원가입 처리중 잘못된 항목이 존재하여 가입 불가시 가입취소 처리
- Ex) 결제 처리 중 잔액부족 등 결제가 불가능 할 경우 결제취소(회복) 처리
사용자가 시스템에 대한 요구 시 시스템이 응답하기 위한 상태 변환과정의 작업단위로 사용된다.
- Ex) 회원 가입 요구시 가입완료 응답을 하기까지의 작업 단위 = 가입 트랜잭션
- Ex) 결제 요구시 결제완료 응답을 하기까지의 작업단위 = 결제 트랜잭션
트랜잭션의 특성
데이터의 무결성을 보장하기 위하여 DBMS의 트랜잭션이 가져야 할 특성
원자성(Atomicity) :
- 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료 or 모두 반영되지않도록 복구되어야한다.
- 또한 트랜잭션 내 모든 명령은 반드시 완벽히 수행되어야한다.
- 완벽히 수행되지 않고 하나라도 오류가 발생하면 전부 취소처리 되어야한다.
일관성 (Consistency)
- 트랜잭션이 그 실행을 성공적으로 완료하면 언제든 일관성 있는 데이터베이스 상태로 변환한다.
- 트랜잭션 수행 전, 수행 후 의 상태가 같아야한다.
독립성(Isolation)
- 둘 이상의 트랜잭션이 동시에 실행되는 경우 어느 하나의 트랜잭션 실행 중 다른 트랜잭션이 끼어들 수 없다.
영속성, 지속성(Duarability)
- 성공적으로 완료된 트랜잭션의 결과는 시스템 고장이 발생하더라도 영구적으로 반영되어야 한다.
DBMS는 데이터 관리의 원칙 중 안전, 공유, 일관성, 손상방지 등의 원칙을 트랜잭션 단위로 해결한다.
RDB(관계형 데이터베이스) = SQL DB
개요
- 현재 가장 많이 사용되고 있는 데이터베이스의 한 종류
- 테이블(Table)로 이루어져 있고 테이블은 키(Key) 와 값(Value)로 나타낸다.
- 데이터 종속성을 관계 (Realaionship)로 표현하는 것이 큰 특징이다.
특징
- 데이터의 분류, 정렬, 탐색 속도가 빠르다.
- 신뢰성이 높고 어떠한 상황에서도 무결성을 보장한다.
- SQL이라는 표준 언어로 관리가 가능하기에 개발언어, 데이터베이스 종류 등에 변화가 있어도 기존에 사용하던 어플리케이션은 그대로 사용이 가능하다.
- 기존에 작성된 스키마를 수정하기가 어렵다.
- 데이터베이스의 부하를 분석하기가 어렵다.
연관관계 (1:1, 1:N, N:M)
관계형 데이터 베이스에 들어있는 관계형에 관계란?
각 테이블의 행과 행이 연결되는 관계를 의미
테이블 간 관계는 1:1 , 1 : N, N:N 관계가 있다.
각 테이블들은 기본키(Primary Key) 와 외래키(Foreign Key) 를 통해 맺어진다.
1:1 = 나 : 나의 휴대폰 = 유저 : 프로필
- 나는 1개의 핸드폰을 가지고 유저는 1개의 프로필정보를 가지는 것과 동일한 연관관계라고 할 수 있다.
- 하나의 테이블과 다른 하나의 테이블만 연결된것을 1:1 이라 한다.
1:N = 나 : 모임장 = 유저 : 게시글
- 각 모임에는 한명의 모임장과 여러 명의 사람이 존재하는데 이 한명의 모임에 속한 모임원들은 1:N이라고 할 수 있다.
- 게시글 또한 한명의 유저만 작성하기에 1:N의 관계라고 한다.
N:N = 나 : 모임 = 게시글 : 해시태그
- 여러 모임에는 각자 여러 명의 회원을 가지고 있다.
- 같은 사람이 여러 모임에 가입할 수 있다.
- 이런 모임과 여러 회원들의 관계를 N : N으로 표현된다.
- 게시글에 사용되는 해시태그 연관관계를 살펴보았을 때 여러 게시글이 여러 해시태그들과 관계를 가질 수 있음으로 N:N으로 표현된다.
SQL(Structured Query Language)
SQL은 특정회사에서 만드는 것이 아니다.
국제 표준화 기구에서 SQL에 대한 표준을 정하여 발표하고 있는데 이를 표준 SQL이라 한다.
SQL(Structured Query Language)은 관계형 데이터 베이스에서 사용되는 언어
에스큐엘 or 시퀄 이라고도 읽는다.
관계형 DBMS 중 MySQL을 배우기 위해 SQL을 필수로 익혀야 한다.
SQL이 데이터베이스를 조작하는 언어이긴 하나 일반적인 프로그래밍 언어 (C, 자바, 파이썬 등)와는 조금 다르다.
SQL 상용화 문제점
- SQL을 사용하는 DBMS 만드는 회사가 여러 곳 이기에 표준 SQL이 각 회사 제품의 특성을 모두 포용하지 못한다.
- DBMS를 만드는 회사에서는 되도록 표준 SQL을 준수하되 각 제품의 특성을 반영한 SQL을 사용한다.
SQL 특징
- SQL 이라는 표준 언어로 관리가 가능하기에 개발언어, 데이터베이스 종류 등에 변화가 있어도 기존에 사용하던 애플리케이션은 그대로 사용이 가능하다.
- 이 서비스를 위한 데이터는 데이터베이스(DBMS)를 사용하게 된다.
- 위 내용을 모두 어플리케이션 마다 구현, 예외를 처리하려면 엄청난 리소스가 들지만 DBMS에서는 이를 제공하여준다.
.위 3가지 DBMS 제품 (Oracle, SQL Server, MySQL)이 모두 표준 SQL을 포함하고 있어 SQL을 익히면 대부분의 DBMS에 공통적으로 적용 할 수 있다
SQL 언어 종류
DDL(Data Definition Language)
- 데이터 정의어, 관계형 데이터베이스의 구조를 정의하는 언어.
- CREATE, ALTER, DROP, RENAME 문이 있다.
DML(Data Manipultion Language)
- 데이터 조작어, 테이블에서 데이터를 입력, 수정, 삭제,조회 한다.
- INSERT, UPDATE, DELETE, SELECT 문아 있다.
DCL(Data Control Language)
- 데이터 제어어, 데이터베이스 사용자에게 권한을 부여, 회수 한다.
- GRANT, REVOKE, TRUNCATE 문이 있다.
TCL(Transaction Control Language)
- 트랜잭션을 제어하는 명령어이다.
- COMMINT, ROLLBACK, SAVEPOINT 문이 있다.
DBMS 제작회사 종류 유형
DBMS | 제작사 | 작동 운영체제 | 기타 |
Oracle | Oracle | Unix, Linux, Windows | 상용 시장 점유율 1위 |
MySQL | Oracle | Unix, Linux, WIndows, Mac | 오픈 소스 (무료), 상용 |
PostgreSQL | PostgreSQL | Unix, Linux, Windows, Mac | 오픈 소스 (무료) |
MariaDB | MariaDB | Unix, Linux, Windows | 오픈소스(무료) MySQL초기 개발자들이 독립하여 만듬 |
SQLite | SQLite | Android, iOS | 모바일 전용, 오픈 소스(무료) |
Oracle
- 미국 오라클(Oracle) 사의 관계형 데이터베이스 관리 시스템(RDBMS)
- 오픈 소스 DBMS가 있음에도 안전성과 유지보수를 보장 받을 수 있다는 장점이 있어 비IT업종 기업에서 많이 사용한다.
특징
- 기업용으로 주로 사용
- 대량의 정보관리를 할 경우 타 DBMS에 비해서 좋은 성능을 보인다.
- 오라클 자체 SQL 쿼리를 사용하기에 표준 SQL 형식과 약간 다르다.
MySQL
- 관계형 데이터베이스 관리 시스템(RDMS)
- 오픈 소스이며 다중 사용자와 다중 쓰레드를 지원한다.
특징
- 오픈 소스 라이센스를 따르기 때문에 무료로 사용이 가능하다.
- 표준 SQL 형식을 사용한다.
- 오픈 소스이기에 기술 지원 한계가 있다.
PostrgreSQL
- 오픈소스 객체 - 관계형 데이터베이스 시스템 (ORDBMS)
- MacOS 서버의 경우 기본 데이터베이스로 사용된다.
- 북미나 일본에서 많이 사용한다.
특징
- 초기 개발 단계부터 완벽한 ACID와 MVCC를 지원하는 아케텍쳐로 설계됬다.
- 다양한 데이터베이스 객체를 사용자가 임의로 만들 수 있는 기능을 SQL차원에서 제공한다.
- 테이블 상속 기능을 이용해 하위 테이블이 생성 가능하다.
- 오픈 소스임에도 상용 RDBMS급의 기능을 제공한다.
- 기본적인 CRUD 성능은 경쟁 DB에 비해 좋지 않다.
MariaDB
- 오픈 소스의 관계형 데이터베이스 관리 시스템 (RDBMS)
- MySQL과 동일한 소스 코드를 기반하고 GPL v2 라이센스를 따른다.
- MySQL의 개발진들이 오라클 정책이 추구하는 바와 맞지 않아 개발한 DB이다.
특징
- MySQL과 거의 100% 호환성을 가지고 있다.
- MySQL에 비해 어플리케이션 부분 속도가 약 4~5천 배 빠르고 성능면에서 70% 보인다고 말한다.(정확하지 않다)
- MySQL보다 자유로운 MySQL이라고 이해하면 된다.
SQLite
- 독립형 파일 기반의 오픈소스 (RDBMS)
- 구글 안드로이드 운영 체제에 기본 탑재되어 있는 데이터베이스 이다.
- ACID를 준수한다.
특징
- 이름과 같이 가벼우며 사용하는 공간은 시스템에 따라 다르지만 평균 600Kb 미만의 공간을 차지한다
- 완전 독립형이기에 SQLite 가 작동하기 위해 시스템을 설치해야 하는 외부 종속성이 없다.
- 이식성이 뛰어나다
- 동시성의 제한, 사용자 관리 존재의 부재, 서버리스 데이터베이스이기에 보안이 약하다.
NoSQL 특징
NoSQL or Not Only SQL (SQL 뿐만이 아닌) 의 줄임말.
SQL뿐만 아니라 다른 여러 장점을 가지고 있다.
- 기존 관계형 데이터베이스의 한계를 뛰어넘기 위하여 만들어진 새로운 형태의 데이터베이스
- 관계형 데이터베이스보다 더 융통성 있는 데이터 모델을 사용, 데이터의 저장 및 검색에 특화된 매커니즘을 제공한다.
NoSQL은 대부분 분산 환경에서의 데이터 처리를 더욱 빠르게 하기 위하여 개발 되었다.
DBMS | 제작사 | 방식 | 작동 운영체제 | 기타 |
MongoDB | MongoDB Inc. | Document | Unix, Linux, Windows, Mac | 오픈소스(무료) 분산처리에 적합 |
Redis | Redis Labs | Key-Value | Unix, Linux, Windows, Mac | 오픈소스(무료) 캐싱에 적합 |
DynamoDB | AWS (아마존 웹 서비스) |
Key-Value | AWS 클라우드 Unix, Linux, Windows |
오픈소스(무료/유료) AWS에서만 사용 확장에 용이 |
HBase | Apache 소프트웨어 재단 | Wide-Column Store | Linux | 오픈소스(무료) 빅데이터에 적합 |
Neo4j | Neo4j Inc. | Graph | Unix, Linux, Widows, Mac | 오픈 소스(무료) 추천기능에 적합 |
MongoDB
유연한 스키마
- MongoDB는 유연한 문서 지향 데이터 모델을 통하여 데이터를 저장한다.
- 데이터의 구조를 동적으로 변경할 수 있음을 의미한다.
분산 아키텍쳐
- MongoDB는 수평적으로 확장 가능한 분산 아키텍쳐를 제공하여 대규모 데이터 처리 및 고가용성을 지원한다.
문서형 DB 특징
- JSON 객체와 비슷한 문서에 데이터를 저장한다
- 각 문서에는 필드와 값의 쌍이 포함된다.
- 대량의 데이터를 수용하도록 수평 스케일 아웃이 가능하다.
Redis
인메모리 데이터 저장소
- Redis는 데이터를 메모리에 저장함으로 매우 빠른 데이터 액세스와 응답 시간을 제공한다
다양한 데이터 구조
- Reids는 문자열, 해시, 목록, 집합, 정렬된 집합 등 다양한 데이터 구조를 지원하여 유연한 데이터 모델링을 가능하게 한다.
Key-Value DB 특징
- NoSQL에서도 키, 값 데이터베이스가 존재한다
- 대량의 데이터를 저장해야 하지만 검색을 위해 복잡한 쿼리를 수행할 필요가 없는 경우에 사용한다
- 사용자 선호도 저장 or 캐싱에서 사용한다.
DynamoDB
관리형 서비스
- DynamoDB는 아마존 웹 서비스(AWS)의 관리형 NoSQL 데이터베이스 서비스로 서버 관리와 확장성에 대한 부담을 줄여준다.
높은 확장성
- DynamoDB는 데이터의 크기나 트래픽의 증가에 따라 자동으로 확장되어 수평적으로 확장이 가능한 성능을 제공한다.
Key-Value DB 특징
- NoSQL에서도 키, 값 데이터베이스가 존재한다
- 대량의 데이터를 저장해야 하지만 검색을 위해 복잡한 쿼리를 수행할 필요가 없는 경우에 사용한다
- 사용자 선호도 저장 or 캐싱에서 사용한다.
HBase
분산 저장 시스템
- HBase는 Hadoop 분산 파일 시스템(HDFS) 위에서 작동하며 대용량 데이터의 분산 저장과 처리를 지원한다.
일관된 읽기/쓰기 성능
- HBase는 일관된 읽기와 쓰기 성능을 제공하여 대규모 데이터에 대한 실시간 액세스를 지원한다.
Wide-Column Store
- 테이블, 행 및 동적 열에 데이터를 저장한다.
- 각 행이 동일한 열을 가져야 될 필요가 없다는 점에서 RDB 비해서 뛰어난 유연성을 제공한다.
- 대량의 데이터 저장에 적합하다
- IOT 데이터와 사용자 프로필 데이터 저장 시 사용한다.
Neo4j
그래프 데이터베이스
- Neo4j는 그래프 데이터 베이스로써 데이터 간의 관계를 중요시하며 효과적으로 저장 및 조회할 수 있다.
ACID 트랜잭션
- Neo4j는 원자성, 일관성, 고립성, 지속성(ACID)을 보장할 수 있는 트랜잭션을 지원하여 데이터의 적합성과 신뢰성을 유지한다.
그래프 DB 특징
- 소셜 네트워킹, 추천 엔진 등에서 사용한다
- 정점과 간선에 데이터를 저장한다
- 정점에는 사람, 장소, 사물에 대한 정보가 저장되어 있다.
- 간선에는 정점과의 관계에 대한 정보가 저장되어 있다.
DBMS 선택 방법
- 테이블 구조가 정해져 있으며 내부 데이터 수정이 빈번할 때 -> SQL DB(RDB)
- 테이블 구조가 정확히 잡혀있지 않으며(추가적으로 수정이 될 가능성이 높을 때) 대량의 데이터를 처리할 때 ->NoSQL DB
- DBMS(DB엔진)트렌드를 잘 따라가는 것도 중요하다.출처 : https://db-engines.com/en/ranking
반응형
'Computer Science' 카테고리의 다른 글
스파르타 코딩클럽(부트캠프) 8장 자료구조의 동작과 활용 (2) | 2024.03.26 |
---|---|
스파르타 코딩클럽(부트캠프) 7장 자료의 저장과 표현 (2) | 2024.03.25 |
스파르타 코딩클럽(부트캠프) 5장 DB(데이터베이스) 구조와 유형 (0) | 2024.03.21 |
스파르타 코딩클럽(부트캠프) 4장 프로세스 쓰레드와 쓰레드 (0) | 2024.03.20 |
스파르타 코딩클럽(부트캠프) 3장 프로세스 생명주기와 프로세스메모리 (2) | 2024.03.19 |