RDB - NoSQL

Minyuk·2022년 10월 5일
0

RDB (관계형 데이터베이스)

사전에 엄격하게 정의된 DB schema를 요구하는 table 기반 데이터 구조
-> 데이터 중복이 없기 때문에 데이터 update가 많을 때 유리

NoSQL (비관계형 데이터베이스)

table 형식이 아닌 비정형 데이터를 저장할 수 있도록 지원
-> 데이터 중복으로 인해 데이터 update 시 모든 컬렉션에서 수정이 필요하기 때문에 update가 적고 조회가 많을 때 유리

MongoDB

NoSQL의 종류 Bigtable, DynamoDB, Cassandra, MongoDB

db.createCollection("student")

db.student.insert({"id": 2022394, "name": "Nossi", "class": ["Math", "Eng"]})
db.student.insert({"id": 2021921, "name": "Bob", "class": ["Eng"]})

db.student.find() // Fetch all students in JSON format
db.student.findOne({"id": 2022394}) // Find one matching student

db.student.remove({"name": "Nossi"}) // Delete matching students
db.student.drop() // Drops the entire collection

RDB vs NoSQL

RDB (SQL)NoSQL
데이터 저장 모델tablejson document / key-value / 그래프 등
개발 목적데이터 중복 감소애자일 / 확장가능성 / 유연성
예시Oracle, MySQL, PostgreSQL 등MongoDB, DynamoDB 등
Schema엄격한 데이터 구조유연한 데이터 구조
⭐장점⭐- 명확한 데이터구조 보장- 유연하고 자유로운 데이터 구조
- 데이터 중복 없이 한 번만 저장 (무결성)- 새로운 필드 추가 자유로움
- 데이터 중복이 없어서 데이터 update 용이- 수평적 확장(scale out) 용이
⭐단점⭐- 시스템이 커지면 Join문이 많은 복잡한 query가 필요- 데이터 중복 발생 가능
- 수평적 확장이 까다로워 비용이 큰 수직적 확장(Scale up)이 주로 사용됨.- 중복 데이터가 많기 때문에 데이터 변경 시 모든 컬렉션에서 수정이 필요함
- 데이터 구조가 유연하지 못함- 명확한 데이터구조 보장 X
⭐사용⭐- 데이터 구조가 변경될 여지가 없이 명확한 경우- 정확한 데이터 구조가 정해지지 않은 경우
- 데이터 update가 잦은 시스템 (중복 데이터가 없으므로 변경에 유리)- Update가 자주 이루어지지 않는 경우 (조회가 많은 경우)
- 데이터 양이 매우 많은 경우 (scale out 가능)

0개의 댓글