- SQL
- 정해진 스키마에 따라 데이터를 저장
- 데이터의 일관성을 보장
- 데이터의 중복을 허용하지 않음
- 수직 확장에 용이
- ACID 트랜잭션
- Schema-less (Schema-free)
- 정해진 스키마에 따라 데이터를 저장하지 않음
- 자유로운 스키마
- 데이터의 일관성을 보장하지 않음
- 데이터의 중복을 허용
- 수평 확장에 용이
- BASE 트랜잭션
- ACID 트랜잭션을 보장하지 않음
ACID와 대조적으로 가용성과 성능을 중시하는 특성을 가진 분산 시스템의 특성
- 기본적인 가용성 (Basically Avaliable)
- 부분적인 고장은 있을 수 있으나, 나머지는 사용이 가능하다. (* 주 서버가 안되더라도 백업 서버는 동작한다.)
- 소프트 상태 (Soft State)
- 노드의 상태는 외부에서 전송된 정보를 통해 결정됨.
- 분산 노드 간 업데이트는 데이터가 노드에 도달한 시점에 갱신. (* 최신 상태의 데이터로 덮어써진다.)
- 결과적 일관성 (Eventually Consistent) : 결국엔 모두 동일해진다.
- 일시적으로 비일관적인 상태가 되어도 최적으로는 일관성이 있는 상태가 되는 성질
- 시스템 부하, 네트워크 속도 등의 외부 요인으로 인해 일관성이 일시적으로 깨질 수 있다.
- mongoDB
- document store
- dynamoDB
- key-value store
- 노드 간의 관계를 데이터로 저장
- sns에서 사용자의 관계를 표현하기 위해 사용
- 페이스북 neo4j