원티드 챌린지 백엔드 1차 - 다양한 Database 비교

jongeun·2023년 2월 9일
0
post-custom-banner

데이터베이스의 원칙

  1. 무결성
    • 도덕성, 항상 정확해야하고, 데이터가 변경되거나 손상되면 안됨
  2. 안정성
    • 고장이 잘 안나야함
  3. 확장성
    • 데이터가 늘어났을 때 대비
    • RDB에서 많이 활용
    • 똑같은 서버를 늘리는 것 => NoSQL
    • redis랑 mysql는 확장성이 안좋음

다양한 데이터베이스 종류

RDBMS : 관계형 DB

  • 테이블이 들어가서 서로 관계를 사용해서 서비스 운영에 필요한 데이터들을 정의
  • MariaDB => mysql발전된 버전
    • column oreiented 될 수 없음
    • 많이씀
    • 중복 데이터 막는 것에 좋음
    • 예를 들어, 사용자 정보 데이터에 해당
    • column을 스키마라고 보면 됨
    • json도 가능하긴함, 길이에 제한이 있음
    • column 수정할때는 복사

NOSQL

  • 쓰는것도 빠름
  • 분산조회에 용이
  • 예를 들면 블로그 포스팅 데이터
  • 데이터 구조 변경, 데이터 수정에 용이

redis(key-value)

- key는 유니크
- 캐시용도
* 확장성은 많이 떨어짐
* 램 사이즈 크기밖에 못씀
* 많이씀
* 스케일 아웃하지 않음

dynamoDB(Key-value)

* partition key
* sort key

neo4j

* 그래프형 DB

mongoDB

-  컬렉션이 테이블, Documents가 로우
* Document 데이터베이스
* 자유로움
* jason형태로도 넣을 수 있음
* sacle out에 용이 => 클라우드 비용 절감
* 로그 남길 때 많이씀
* column oriendt이긴하지만, 다 때려박을 수 있음
* object id를 따로 넣어줌(pk랑 비슷)
* 인덱싱 따로 할 필요 없음

row oriented database

* 여러개의 row가 일열로 들어감
* read는 특정 컬럼 뽑을 때 시간 오래걸림

column oreiented

* read가 편함
* 빈자리에 있으면 넣음
* insert 느림
* 빅쿼리에 해당
* 특정 컬럼 데이터 가져올 때 용이

cap theorem

* 일관성
	* 금융
* 가용성
	* 이커머스
* partition- tolerance 분산 됬을 때도 괜찮다. 
	* 데이터 많을 떄
* 이 3개를 동시에 가질 수 없음
- 서비스에 적합한 데이터베이스 선택
- 넷플릭스: mysql, erd처럼 저장될꺼같음
- 인스타그램: 팔로우수가 떨어지는 오류, 가용성을 중요시여김
    - 포스트 쓰면 포스트가 남아있어야함
    - node하나에 일단 저장하고, 저장이 됬는지 안됬는지가 중요함
    - 데이터복구가 쉬움
profile
기록으로 성장하는 개발자 되기
post-custom-banner

0개의 댓글