SQL(Structured Query Language)은 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다.
대중적으로 많이 사용되는 MySQL, Oracle 등이 이에 포함된다.
NoSQL (non SQL or non relational) 데이터 베이스는 전통적인 관게형 데이터베이스 보다 덜 제약, 제한적인 모델로 이러한 시스템을 통틀어 NoSQL 이라고 한다. 가장 큰 특징은 확장성과 기용성, 높은 성능, 그리고 다양한 형태의 데이터를 수용 할 수 있다.
그 중 많이 사용되는 MongoDB, Cassandra, AWS(DynamoDB,Redis) 등이 있다.
각각의 장단점이 있어 용도에 따라 선택하여 사용한다.
Document는 RDBMS에서의 Row와 동일한 개념이다.
보통 JSON 형태의 key-value 로 이루어진 데이터 구조를 하나의 Document라고 본다.
{
"_id": "5f2ad6b54866e5109dd2367b"
"email": "star@gmail.com",
"password": "암호화된 비밀번호",
}
각 Document는 _id를 가지고 있는데 이 값은 Primary Key와 동일한 개념이다.
Collection은 Document의 그룹이다. RDBMS에서의 Table과 비슷한 개념이다. (다만 스키마를 가지고 있지는 않는다)
Database는 Collection들의 물리적인 컨테이너이고 또한 가장 상위의 개념이다. RDBMS와 동일.
BASE는 ACID와 대립되는 개념이다.
위와같이 BASE는 ACID와는 다르게 일관성을 일부분 포기하고 가용성을 더 우선시하는 로직을 가진다. 즉, 데이터가 완벽하지 않더라도 일단 내려준다는 뜻이다.
MongoDB에서 분산 시스템은 매우 중요하며 기본적인 시스템으로 반드시 알아야하는 부분이다.
데이터 무결성을 포기하며. 더 많은 데이터, 빠른 성능, 수평적인 확장이 가능한 데이터베이스가 필요해졌고 이를 토대로 만들어진 것이 MongoDB이다.
CAP 이론은 어떠한 분산 시스템이더라도 Consistency (일관성), Availability (가용성), Partition tolerance (분할 내성)를 모두 만족할 수 없다는 이론이다.
기본적으로 네트워크 파티션 상황은 반드시 발생한다를 가정하고 그에 따른 선택을 정리한 이론.
구분 | 구성 | 설명 |
---|---|---|
Partition | Availability | 가용성 |
Partition | Consistency | 일관성 |
Else | Latency | 시간 지연 |
Else | Consistency | 일관성 |
Partition은 네트워크 파티션이 발생한 상태. Else는 정상 상태를 의미.
각 패턴 상황에 맞게 가용성과 일관성 중 무엇을 우선시 할 것인지 정한다.
참고사이트 : MongoDB 이해하기