SQL vs. NoSQL
업데이트:
SQL
SQL은 Structured Query Language의 약자로, 관계형 데이터베이스와 상호작용 할 때 사용되는 언어이다. 관계형 데이터베이스라는 의미로도 사용된다고 한다.
관계형 데이터베이스
관계형 데이터베이스의 큰 특징 두 가지는 엄격한 스키마와 관계이다.
✅ 정해진 데이터 스키마에 따라 테이블에 데이터를 저장한다.
✅ 관계를 통해 연결된 여러 테이블에 데이터가 분산된다.
즉, 정해진 구조에 맞지 않는다면 레코드를 추가할 수 없고 관계라는 것을 이용해 데이터의 중복을 방지한다.
관계형 데이터베이스 관리 시스템, RDBMS
▪️ MySQL ▪️ Oracle ▪️ PostgreSQL ▪️ Microsoft SQL Server
NoSQL
앞서 살펴봤던 관계형 데이터베이스의 반대 개념으로 스키마와 관계가 없다. NoSQL에서는 레코드를 문서, 테이블을 컬렉션이라 부른다. SQL과 다르게 NoSQL에서는 다른 구조의 데이터를 같은 컬렉션에 추가할 수 있다.
비관계형 데이터베이스
✅ 유연성 — 스키마가 없어 필드의 추가, 삭제가 자유롭다.
✅ 확장성 — 수직, 수평 확장이 용이하다.
✅ 고성능 — 대용량 데이터를 처리하는데 뛰어나다.
✅ 가용성 — 여러 대의 백업 서버 구성이 가능해 서버 중단 없이 서비스할 수 있다.
확장, Scaling
▪️ 수직적 확장 : 데이터베이스 서버 성능 향상 ex. CPU 업그레이드
▪️ 수평적 확장 : 더 많은 서버가 추가되고 데이터베이스가 전체적으로 분산됨
데이터베이스
▪️ MongoDB ▪️ BigTable ▪️ Redis ▪️ RavenDB Cassandra ▪️ HBase ▪️ Neo4j ▪️ CouchDB
비교
. | SQL | NoSQL |
---|---|---|
데이터베이스 | 관계형 | 비관계형 |
스키마 | O | X |
데이터 중복 | X | O |
확장성 | 대체로 수직적 확장 | 수직 및 수평 확장 가능 |
적합 케이스 | - 관계를 맺고 있는 데이터가 자주 변경되는 경우 - 명확한 스키마가 사용자와 데이터에게 중요한 경우 - 데이터베이스의 ACID 성질을 준수해야 하는 경우 |
- 정확한 데이터 구조를 알 수 없을 경우 - 데이터 구조가 자주 업데이트 되는 경우 - 읽기는 잦지만 데이터 변경은 거의 없는 경우 - 데이터베이스를 수평으로 확장해야 하는 경우 |
댓글남기기