NoSQL 소개
- 비관계형 데이터베이스 기술을 아우르는 말
- 관계형 데이터베이스(RDB) vs. NoSQL(비관계형 데이터베이스)
- SQL과 NoSQL의 차이점
- 데이터 저장(Storage)
- 관계형 데이터베이스는 SQL을 이용해서 데이터를 테이블에 저장
- 미리 작성된 스키마를 기반으로 정해진 형식에 맞게 데이터를 저장
- NoSQL은 key-value, document, graph, wide-column 형식등의 방식으로 데이터를 저장
- 스키마(Schema)
- SQL을 사용하려면 형식이 고정된 스키마가 필요
- NoSQL은 스키마의 형태가 보다 동적(행을 추가할 때 즉시 열을 함께 추가할 수 있고, 개별 속성에 대해서 모든 열에 대한 데이터를 반드시 입력하지 않아도 된다는 장점)
- 쿼리(Querying)
- 관계형 데이터베이스는 테이블의 형식과 테이블간의 관계에 맞춰서 데이터를 요청
- 비관계형 데이터베이스의 쿼리는 데이터 그룹 자체를 조회하는 것에 초점 (구조화 되지 않은 쿼리 언어로도 데이터 요청이 가능)
- 확장성(Scalability)
- SQL 기반의 관계형 데이터베이스는 보통 수직적으로 확장
- NoSQL로 구성된 데이터베이스는 수평적으로 확장
- SQL 기반의 관계형 데이터베이스를 사용하는 케이스
- 데이터베이스의 ACID 성질을 준수해야 하는 경우
- 전자 상거래, 금융 서비스를 위한 소프트웨어 개발에서는 데이터베이스의 ACID 성질을 잘 준수하는 것이 필수 옵션
- 소프트웨어에 사용되는 데이터가 구조적이고 일관적인 경우(높은 성능 적은 서버?)
- NoSQL 기반의 데이터베이스를 사용하는 케이스
- 데이터의 구조가 거의 또는 전혀 없는 대용량의 데이터를 저장
- 클라우드 컴퓨팅 및 저장공간을 최대한 활용
- 빠르게 서비스를 구축하고 데이터 구조를 자주 업데이트 하는 경우
MongoDB
- 대표적인 NoSQL 의 종류
- Key-Value 타입
- 문서형(Document) 데이터베이스(JSON 유사 형식)
- Wide-Column 데이터베이스
- Document Databases
- 문서들은 BSON 형태로 저장이 되고 정해진 틀이나 데이터 타입이 없음(자유롭게 문자, 숫자, 객체, 배열 등을 저장)