Computer Science/데이터베이스

[데이터베이스] 관계형 DB와 비관계형 DB

excited-hyun 2021. 5. 13. 23:18
반응형

관계형 데이터 베이스

- 데이터는 엄격한 데이터 스키마에 따라 데이터베이스 테이블에 저장됨.

- 데이터는 관계를 통해서 연결된 여러 테이블에 분산 됨.

 

엄격한 스키마

데이터는 테이블에 저장되며, 각 테이블은 명확하게 정의된 구조가 있어 그를 준수하지 않는 데이터는 추가될 수 없다.

 

장점

- 데이터의 무결성 보장

- 데이터의 중복 최소화

- 데이터 베이스 추가 전 유효성 검사를 통해 품질 향상 가능.

- VIEW를 통한 보안 설정으로 허가된 사용자들만이 데이터에 접근하게 할 수 있음.

단점

- 관계를 맺고 있어 JOIN문이 많은 복잡한 쿼리문이 생길 수 있음.

- JOIN이 많은 복잡한 쿼리문이 생성된 경우 수정이 매우 번거로움.

- 수평적 확장이 어렵고 수직적 확장만 주로 가능해 데이터 처리량 성장에 한계.

- 가변성이 있는 데이터의 경우 저장이 쉽지 않음.

- 데이터베이스 모델링이 개발 전 완료되어야해 개발속도가 느려짐.

 

 

 

비 관계형 데이터 베이스

관계형 데이터 모델을 지양하고 대량의 분산 데이터를 저장하고 조회하는데 특화되어 있다.

- 스키마 없이 사용가능하거나 느슨한 스키마를 제공

- 데이터들이 일반적으로 동일한 컬렉션에 저장되어 JOIN을 통해 여러 컬렉션을 사용할 필요 없음

 

장점

- 스키마가 없기 때문에 훨씬 유연하여 데이터 조정에 용이함.

- 가변성 있는 데이터의 저장이 쉬움.

- 데이터베이스 모델링이 완료되기 전에도 테스트 데이터 조회가 가능.

- 응용프로그램이 요구하는 형식으로 저장되어 데이터를 읽는 속도가 빠름.

- 수직적 확장, 수평적 확장이 모두 가능.

단점

- 유연성으로 인해 데이터 구조 결정이 어려울 수 있음.

- NoSQL마다 쿼리 언어를 다르게 사용하는 경우가 많아 이식성이 낮음.

- 데이터베이스의 컬렉션이 다양한 경우 수정시 모든 컬렉션의 데이터를 수정해야함.

- 문서 저장에 단위 요소 수준에서 세밀한 보안을 제공하지 않음.

 

 

관계형 DB VS 비관계형 DB

관계형 DB를 사용하는게 좋은 경우

관계를 맺고 있는 데이터가 자주 수정되지 않는 경우

명확한 스키마가 요구되는 경우

 

비관계형 DB를 사용하는게 좋은 경우

- 정확한 데이터 구조를 알 수 없거나 수정, 확장이 될 수 있는 경우

- 막대한 양의 데이터를 다뤄야해 수직적, 수평적 확장이 필요한 경우

 

 

 

CS 면접 대비를 위해 아래 깃허브를 기반으로 작성 되었습니다.

github.com/JaeYeopHan/Interview_Question_for_Beginner

 

JaeYeopHan/Interview_Question_for_Beginner

:boy: :girl: Technical-Interview guidelines written for those who started studying programming. I wish you all the best. :space_invader: - JaeYeopHan/Interview_Question_for_Beginner

github.com

 

728x90
반응형