Open SW-H opened 1 year ago
SQL
(=관계형 데이터베이스, MySQL)관계
명확하게 정의 된 스키마 → 데이터의 무결성 보장
중복 없음
복잡한 쿼리가 만들어질 수 있음
⇒ 관계를 맺고 있는 데이터가 자주 변경되는 경우 스키마의 변경이 적거나 확고한 경우
NoSQL
관계 없음
유연성, 언제든 새로운 필드 추가 가능
수평적 확장 가능
속도 증가
데이터 중복
데이터를 수정해야할 경우, 모든 테이블에서 수정해야함
⇒ 데이터 구조나 타입이 확고하지 않거나 자주 변경될 수 있는 경우 데이터베이스의 수평적 확장을 기획하는 경우 데이터 변경은 자주 없으나 읽기 작업이 많은 경우 막대한 양의 데이터를 다뤄야할 경우
구매 내역이나 게임의 로그 같은 데이터들은 매 초마다 엄청난 양이 생성되지만 한번 저장되고 난 뒤에는 수정될 일이 거의 없다. 이런 데이터들을 저장하는 데 데이터의 일관성을 보장하기 위해 ACID 트랜잭션을 지원할 필요는 없을 것이다. 거기다 생성되는 데이터의 양도 많기 때문에 장비의 성능에도 상당한 영향을 미칠 것이다. NoSQL은 이러한 데이터들을 효율적으로 저장할 수 있다. 여러 대의 장비에 빠른 속도로 저장이 가능하며, 데이터의 양이 누적되더라도 얼마든지 수평적 확장이 가능하기 때문이다.
실제로 페이스북이나 트위터같은 소셜 네트워크 서비스에서는 게시글들을 저장하는 데 NoSQL 데이터베이스를 사용하고 있다. 매 초에 수백 기가~수 테라바이트씩 생성되는 데이터들을 RDBMS를 사용해 저장한다면, 글 작성 버튼을 누른 후 글이 중앙 데이터베이스에 저장되기까지 한참을 기다려야 글을 성공적으로 게시할 수 있을 것이다. 하지만 NoSQL의 분산 데이터베이스를 사용한다면 부하가 분산되기 때문에 우리가 글쓰기 버튼을 누르고 한참을 기다릴 필요가 없게 된다. 또한 각종 검색 엔진에도 사용되는 것이 NoSQL인데, 웹 페이지 내의 텍스트들을 형태소 단위의 토큰으로 분리하여 토큰과 해당 토큰이 포함된 페이지들의 URL을 맵핑하는 Inverted Index(역 인덱스) 구조를 NoSQL을 통해 구현한다. 이런 기능을 일반적인 RDMBS로 구현했을 경우 검색 창에 단어를 입력했을 때마다 상당한 시간이 소요될 것이다.
금융 업계처럼 보수적이거나 저장해야 하는 데이터들이 고정적인 경우 RDBMS를 사용하는 것이 더 좋다. 반대로 웹이나 다량의 데이터를 한꺼번에 처리해야하는 메신저는 NoSQL 방식이 더 유리하다고 볼 수 있다.
출처 : 코딩월드뉴스(https://www.codingworldnews.com)
RDBMS
NoSQL
장단점 및 상황별 데이터베이스 선택 기준