RDBMS vs NoSQL
RDBMS는 데이터베이스를 이루는 객체들의 릴레이션을 통해서 데이터를 저장하는 데이터베이스입니다. SQL을 사용해 데이터의 저장, 질의, 수정, 삭제를 할 수 있으며 데이터를 효율적으로 보관하는 것을 목적으로 하고 구조화가 굉장히 중요합니다.
장점으로는 명확한 데이터 구조를 보장하고, 중복을 피할 수 있습니다.
NOSQL은 RDBMS에 비해 자유로운 형태로 데이터를 저장합니다. 또한 수평확장을 할 수 있고 분산처리를 지원합니다. 다양한 형태의 NOSQL 데이터베이스가 있고, 대표적으로 key-value store, bigtable, dynamo, document db, graph db 등이 있습니다.
RDBMS와 NoSQL은 서로 대체될 수 있는 것이 아니고, 각각 필요한 시점에 적절히 선택해서 사용해야 합니다. 둘 다 같이쓰는 상호보완적인 존재가 될 수도 있습니다.
RDB는 효율적인 데이터 관리를 위해서 정규화를 사용하는데
RDB를 사용했을 때 장점은
- 데이터 중복 방지
- 복잡하고 다양한 질의 가능
등이 있고 단점은
- 여러 테이블을 join 해야한다
- 조회가 느리다.
- 확장이 어렵다.
등이 있습니다.
NOSQL은
- 데이터 가시성이 뛰어남
- RDB에서 Outer Join 하면 보기가 어려움 → JSON 형태로 Document 내부에 Document를 두는것이 가능
- Join 없이 조회가 가능해서 응답 속도가 빠르다.
제가 참여한 프로젝트에서는 채팅로그를 저장하기 위한 데이터베이스로 MongoDB를 사용했습니다. 그 이유는,, RDBMS를 썼을 때보다 데이터 중복이 발생할 수 있지만, 접근성과 가시성, 읽기 성능이 좋고 (사실 채팅 로그는 데이터 중복이 발생해도,, 괜찮은,, ) 응답 속도가 빠르기 때문입니다. 또한, Document 지향 Database로 저장할 때 BSON(Binary-JSON) 형태로 저장합니다.
- JSON 보다 텍스트 기반 구문 분석이 빠르다. (처리가 빠르다)
회고)
참여한 프로젝트 중 [열줌쉬어]라는 프로젝트에서 채팅 기능을 구현했는데, 사용자가 많은 서비스일 경우, 대량의 동시 접속자를 처리하고 실시간으로 메시지를 전달해야 하는 특성상 서버 부하가 매우 크기때문에 MSA 형태를 채택하여 채팅 서버를 따로 구축하는것이 좋지만, 참여한 프로젝트에서는 규모가 작고, 사용자 수가 적으므로 채팅과 관련된 모든 기능과 로직이 단일한 서버내에서 구현되고 실행되는 MA 형태로 채팅 기능을 구현하였다.
프로젝트 내에서 채팅은 스터디 그룹 별로 채팅방이 있는 단체 채팅방 구조였는데, 채팅 내용을 저장하기 위해서는 데이터베이스가 필요했다.
채팅은 빈번하게 발생하는 작은 데이터 이므로, 성능과 확장성이 뛰어난 NoSQL 데이터베이스를 선택하는 것이 좋다고 들었다. RDBMS를 사용하여 데이터베이스를 구축할 순 있으나, RDBMS 의 정해진 스키마 구조로 인한 확장성의 한계와 데이터 삽입, 수정, 삭제 시 높은 처리 비용을 필요로 하기 때문에 좋은 선택은 아니라고 한다.
또한, MongoDB는 문서 지향적인 데이터 모델을 제공하여 채팅로그를 JSON 형태로 저장할 수 있다. 데이터베이스 별로 서로 장단점이 달라서 구현하는 서비스를 고려하여 적절한 데이터베이스를 선택해야겠다고 생각했당!!!!~!~!!~!!~
-> 요약하자면, 채팅 데이터를 빠르게 저장하고 조회할 수 있고 확장성이 높아서 ,JSON형태의 데이터라서 MongoDB 사용했습니다. ㅎㅎ
'CS' 카테고리의 다른 글
스턱스넷 : Stuxnet 핵이 된 디지털 웜 (0) | 2024.06.21 |
---|---|
Monolithic vs MSA (2) | 2024.04.21 |
비동기 처리 (0) | 2024.01.24 |
URI vs URL (0) | 2024.01.12 |