오늘은 백엔드 지식 중 중요한 부분 중 하나인 database를 얘기해보려 한다.
백엔드는 database를 다루는 분야라고 해도 과언이 아닐 정도로 database는 중요하다.
RAM과 하드디스크를 일단은 제외하고 말해보려고 한다.
위 부분은 로컬에 저장되는 시스템으로 휘발성이 크고 시스템적으로 적합하지 않다.
따라서 database를 다뤄야 하는 부분이 점점 커지며 database management system(DBMS)이 나왔다.
종류로는 다음과 같다.
- 관계형 데이터베이스(Relational Database Service, RDS)
- 비관계형 데이터베이스(NoSQL)
둘의 특징을 설명하자면
관계형 데이터베이스는 데이터의 일관성을 유지하고 엄격하게 체크하고 관리하는 구조를 보장한다.
예를 들면 은행어플을 들 수가있다. 은행어플에 저장되는 유저정보와 계좌정보는 계좌이체할 시 오고가는 데이터들의 무결성을 체크하고 하나라도 적용이 되지 않거나 오류가 난다면 계좌이체가 불가능하게 해야한다. 이런 상황에서는 관계형 데이터 베이스를 사용하는 것이 적합하다.
관계형 데이터베이스의 가장 큰 특징중 하나가 트랜잭션(transaction)인데 트랜잭션은 데이터의 처리를 직렬적으로 처리하여 하나가 완료되어야만 그 다음으로 넘어갈 수 있는 특징이있다.
정규화를 해야하는 작업도 필요하다.
장점
단점
**트랜잭션 :
데이터의 상태를 변화시키기 위한 논리적인 하나의 작업 단위이다.
NoSQL은 그에비해 유연한 데이터구조를 가지고있다. 병렬적으로 수행하고 많은양의 데이터를 빠르게 처리할 수 있다. 스키마와 관계설정을 가지지 않아 데이터의 무결성은 떨어지나 속도와 성능은 빠르다.
따라서 NoSQL은 데이터를 거의 수정할 일이 없고 읽기를 자주하는 경우에 더 적합하다. 적용 사례는 빅데이터같이 대량의 정보를 분류하는 곳에서 사용한다.
장점
단점
표로 정리하면 다음과 같다.
큰 도움이 되었습니다, 감사합니다.