데이터 저장소
DB(데이터 저장소)기능 + 엔진(데이터를 정의 및 조작하는 기능)을 가진 응용 프로그램
데이터 베이스는 관계형 데이터베이스, 비관계형 데이터 베이스 두가지로 구분된다.
관계형 데이터 베이스는 데이터를 관리할 때 SQL을 사용하고 데이터마다 연결할 수있어 RDBMS라고도 불린다. 비관계형 데이터 베이스는 SQL을 사용하지 않기 때문에 NO SQL 데이터 베이스라고 불리기도 한다.
RDBMS는 데이터를 행과 열의 형태인 테이블로 데이터를 저장하며, 테이블 간의 관계를 정의할 수 있다.
ex) 쇼핑물 서비스에서 상품정보 테이블과 판매사 테이블을 연결하여 두 데이터를 함께 사용할 수 있다.
NoSQL은 키-값(key-value) 저장, 문서(document) 저장, 그래프(graph) 데이터 저장 등 다양한 형태의 데이터 저장 방식을 사용한다.
SQL에서의 테이블(table) -> NoSQL에서는 컬렉션(Collection)
SQL에서의 레코드(record) -> NoSQL에서는 문서(document)
둘은 데이터 저장 방식이 다르고 DB 확장 방식도 다른 것을 확인했다.
그렇기에 각 DB를 사용하기 적절한 상황도 다르다. 다음은 어는 상황에 관계형, 비관계형 DB를 사용하면 좋은지 정리했다.
ACID는 Atomicity(원자성), Consistency(일관성), Isolation(격리성), Durability(지속성)을 의미한다.
데이터베이스에서 트랜잭션이 실행되는 과정에서 안정성을 보장하기 위해 필요한 성질이다.
SQL을 사용하면 데이터베이스와 상호 작용하는 방식을 정확하게 규정할 수 있기 때문에, 데이터베이스에서 데이터를 처리할 때 발생할 수 있는 예외적인 상황을 줄이고, 데이터베이스의 무결성을 보호할 수 있다.
전자 상거래, 금융 서비스 등의 소프트웨어 개발에서는 반드시 데이터베이스의 ACID 성질을 준수해야 한다. 이러한 경우 일반적으로 SQL을 이용한 관계형 데이터베이스를 사용한다.
소프트웨어(프로젝트)의 규모가 많은 서버를 필요로 하지 않고, 일관된 데이터를 사용하는 경우 관계형 데이터베이스를 사용하는 사례가 많다.
다양한 데이터 유형과 높은 트래픽을 지원하도록 설계된 NoSQL 데이터베이스를 사용해야만 하는 이유가 없기 때문이다.
대부분의 NoSQL 데이터베이스는 저장할 수 있는 데이터의 유형에 제한이 없다. 필요에 따라 언제든지 데이터의 새 유형을 추가할 수 있으며 소프트웨어 개발에 정형화되지 않은 많은 양의 데이터가 필요할 경우 NoSQL을 적용하는 것이 효율적일 수 있다.
클라우드 기반으로 데이터베이스를 구축하면 저렴한 비용으로 솔루션을 제공받을 수 있다. 소프트웨어에 데이터베이스의 확장성이 중요하다면 NoSQL 데이터베이스를 사용하는 것이 좋다.
NoSQL 데이터베이스의 경우 스키마를 미리 준비할 필요가 없기 때문에 빠르게 개발하는 과정에 매우 유리하다. 따라서 시장에 프로토타입을 빨리 출시해야 하는 경우에 NoSQL이 적합하다.
또한, 소프트웨어 버전 별로 많은 다운타임 없이 데이터 구조를 자주 업데이트해야 하는 경우, 스키마를 매번 수정해야 하는 관계형 데이터베이스보다 NoSQL 기반의 비관계형 데이터베이스를 사용하는 게 적합하다.
다운타임(Downtime) : 은행 점검 시간과 같이 데이터베이스 서버를 오프라인으로 전환하여 데이터 처리를 진행하는 작업 시간