-
[프리온보딩 백엔드 챌린지 2월] Week 1-1 ) CAP Theorem, RDBMS, NoSQL교육 2023. 2. 8. 23:06
https://www.wanted.co.kr/events/pre_challenge_be_4
데이터베이스의 원칙
- 무결성(integrity) : 데이터가 처리되는 과정에서 변경되거나 손상되지 않는 것
- 안정성(reliability) : 인증/인가되지 않은 사용자로부터 데이터를 보호함
- 확장성(scalability)
Scale Up : 서버에 CPU나 RAM 등을 추가하거나 고성능의 부품, 서버로 교환하는 방법
Scale Out : 접속된 서버를 여러 대 추가하여 처리 능력을 향상하는 방법, 로드밸런싱 필수
데이터베이스의 종류
- RDBMS (관계형 데이터베이스)
row와 column으로 이루어진 table 형태
SQL 사용
MySQL, PostgreSQL, MariaDB, Oracle Database 등
- key-value
key-value pair로 데이터 저장
key는 unique한 고유값으로 유지
테이블간 조인을 고려하지 않기 때문에 외부키나 컬럼별 constraints 등이 필요 없음
Redis, Riak, Oracle Berkely, AWS DynamoDB(Partition Key와 Sort Key로 나뉨) 등
- graph
데이터를 그래프의 형태로 저장
각 항목이 node로 이루어져 있고, node간의 관계는 edge를 사용해서 나타냄
SNS 등 서로 관계가 복잡한 상황에서 자주 사용
Neo4j, OrientDB, Titan, Virtuso 등
- document
구조가 자유로움 (스키마X)
일반적으로 json 또는 xml 형태
DB별로 데이터를 조작할 수 있는 언어가 따로 있음
MongoDB, CouchDB, Couchbase 등
Row Oriented Database와 Column Oriented Database
Row Oriented Database (행 기반 데이터베이스)
- row를 기준으로 column 값들이 나란히 저장됨
- row를 추가 및 삭제할 때 간편함
- 행 단위로 데이터를 조회할 때 빠른 성능을 보장함
- MySQL, Postgres 등
Column Oriented Database (열 기반 데이터베이스)
- column으로 삽입됨 (row보다 read 효율적, insert 느림)
- 특정 데이터 집합을 얻을 때 성능이 좋음
- Big-Query, Hbase 등
CAP Theorem : 일관성, 가용성, 파티션 허용을 모두 만족하는 것은 불가능하다.
Consistency (일관성) : 어떤 노드에 연결되었는지와 무관하게 모든 클라이언트가 동시에 동일 데이터를 볼 수 있음
Availability (가용성) : 하나 이상의 노드가 작동 중지된 경우에도 데이터를 요청하는 클라이언트가 응답을 받음
Partition-Tolerance (파티션 허용) : 시스템의 노드 간에 다수의 통신 단절에도 불구하고 클러스터가 계속해서 작동해야 함
넷플릭스(MySQL)는 가용성, 인스타그램(NoSQL)은 일관성을 중요시함
'교육' 카테고리의 다른 글