NoSQL : 관계형 데이터베이스보다 동적으로 스키마 형태를 관리, 행을 추가할 때 즉시 새로운 열을 추가할 수 있고, 개별 속성에 대해서 모든 열에 대해 데이터를 반드시 입력하지 않아도 됩니다.
ACID
특성을 따름Atomicity(원자성)
: 트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않는 것을 보장하는 것이다.
(불가능한 최소의 단위인 하나의 원자처럼 동작한다는 의미이다.)
Consistency(일관성)
: 미리 정의된 규칙에서만 수정이 가능한 특성을 의미한다.
(숫자 컬럼에 문자열값이 저장이 안되도록 보장한다.)
Isolation(고립성)
: 트랜잭션 수행시 다른 트랜잭션의 작업이 끼어들지 못하도록 보장하는 것이다.
Durability(영구성)
: 성공적으로 수행된 트랜잭션은 영원히 반영이 되는 것을 의미한다.
(한번 반영(commit)된 트랜젝션의 내용은 영원히 적용된다.)
CAP
이론을 따름 Consistency (일관성)
: 모든 요청은 최신 데이터 또는 에러를 응답받는다.
(DB가 3개로 분산되었다고 가정할 때, 하나의 특정 DB의 데이터가 수정되면
나머지 2개의 DB에서도 수정된 데이터를 응답받아야 한다.)
Availability (가용성)
: 모든 요청은 정상 응답을 받는다.
(특정 DB가 장애가 나도 서비스가 가능해야 한다.)
Partitions Tolerance (분리 내구성)
: DB간 통신이 실패하는 경우라도 시스템은 정상 동작 한다.
NoSQL : 쿼리는 데이터 그룹 자체를 조회하는 것에 초점을 두고 있습니다.
SQL : 데이터베이스에 대해서 정보를 요청하는 질의문, 테이블의 형식과 테이블 간의 관계에 맞춰서 데이터를 요청해야 합니다.
NoSQL : key-value, document, wide-column, graph 등 방식으로 데이터를 저장
SQL : 테이블에 저장, 미리 작성된 스키마를 기반으로 정해진 형식에 맞게 데이터를 저장
스키마가 없기 때문에 유연, 언제든지 저장된 데이터를 조정하고 새로운 '필드'를 추가 할수 있습니다,
애플리케이션이 필요로하는 형식으로 데이터가 저장됩니다.