이번학기 데이터베이스 강좌를 통해 RDBMS인 oracle sql을 배우고 관계형 데이터베이스에 대해 공부해 볼 수 있었다. 그럼 관계형 데이터베이스에 대해 정리 하자면 현재 가장 많이 사용되고 있는 데이터베이스의 한 종류이다.
관계형 데이터베이스란 테이블(table)로 이루어져 있으며, 이 테이블은 키(key)와 값(value)의 관계를 나타낸다.테이블은 이름을 가지고 있으며, 행(row)과 열(column) 그리고 거기에 대응하는 값을 가진다. 즉 관계형 데이터베이스는 위와 같이 구성된 테이블이 다른 테이블들과 관계를 맺고 모여있는 집합체로 이해할 수 있습니다.
이처럼 데이터의 종속성을 관계(relationship)로 표현하는 것이 관계형 데이터베이스이다.
- 데이터의 분류, 정렬, 탐색 속도가 빠름
- 오랫동안 사용된 만큼 신뢰성이 높고, 어떤 상황에서도 데이터의 무결성을 보장
- 기존에 작성된 스키마를 수정하기가 어렵다
- 데이터베이스의 부하를 분석하는 것이 어렵다
이번 DSMP 프로젝트를 진행하게 되면서 MongoDB를 사용할 기회가 생겼다.
왜 비관계형 데이터베이스(NOSQL)를 사용하였냐면, 여러 환자의 질환 마다 다른 정보에 대한 스키마를 정적으로 지정하기 어려웠고, metadata의 확장성을 필요로 하며 복잡한 구조를 고려하여 NOSQL인 MongoDB를 사용하기로 하였다.
MongoDB를 사용하기 전 조금 더 비관계형 데이터 베이스에 대해 이해 할 필요가 있다고 생각한다.
NoSQL이라고도 부르며, Not Only SQL(SQL 뿐만이 아닌. 이라는 뜻)의 줄임말이다.
이 말은 곧 SQL뿐만 아니라 다른 여러 장점을 가지고 있다는 소리이다.
기존의 관계형 데이터베이스의 한계를 뛰어넘기 위해 만들어진 새로운 형태의 데이터베이스라서, 관계형 데이터베이스보다 더 융통성 있는 데이터 모델을 사용하며, 데이터의 저장 및 검색에 특화된 메커니즘을 제공한다. NoSQL은 분산 환경에서의 데이터 처리를 더욱 빠르게 하기 위해 개발되었다. 대표적으로 MongoDB, CouchDB 등이 있다
- 거대한 Map으로서 key-value 형식을 지원함.
- 관계형 db와 달리 PK,FK JOIN등 관계를 정의하지 않음.
- 스키마에 대한 정의가 없다.
- 대용량 데이터 처리를 하는데 효율적임.
- 읽기 작업보다 쓰기 작업이 더 빠르고 관계형 데이터베이스에 비해 쓰기와 읽기 성능이 빠름.
- 데이터 모델링이 유연함.
- 뛰어난 확장성으로 검색에 유리함.
- 최적화된 키 값 저장 기법을 사용하여 응답속도나 처리효율 등에서 성능이 뛰어남.
- 복잡한 데이터 구조를 표현할 수 있음.
- 쿼리 처리시 데이터를 파싱 후 연산을 해야해서 큰 크기의 document를 다룰 때는 성능이 저하됨.
MongoDB에 대해 좀 더 자세한 정리를 원하다면 아래 링크를 참고하길!
https://kciter.so/posts/about-mongodb
http://www.tcpschool.com/mysql/mysql_intro_relationalDB
https://newehblog.tistory.com/38?category=834445