SQL 과 NoSQL 의비교
그럼 SQL과 NoSQL은 언제 어떤 것을 선택하는 것이 좋을까 ?
- SQL 의 특징
- 시작 단계에서 익혀야할 것들이 있다.
- 데이터가 고정적이고, 구조를 가진다.
- 데이터 찾기가 쉽다.
- 서로 다른 테이블에서 연관된 데이터를 연결해서 찾기가 쉽다. (Aggregate Queries)
- 각각의 개별적인 데이터를 분리해서 다른 테이블로 만드는 것이 쉽다.
- 확장이 어려움
- 상대적으로 비쌈
- NoSQL 의 특징
- 시작하기 쉽다.
- 데이터가 유연하다.
- 데이터를 찾기가 쉽다.
- 관계형이 아니므로, 연관된 데이터를 연결해서 찾기가 어렵고, 성능도 떨어진다.
- 하나의 데이터를 여러개로 분리하는 것이 어렵다.
- 확장이 쉬움
- 상대적으로 저렴함
확장성(Scaling)
SQL 같은 경우에는 서로 다른 테이블이 연관이 되어져 있기 때문에, 하나의 테이블에 있는 데이터가 다른 테이블에서 필요할 확률이 높다. 그래서 각각의 테이블을 다른 서버에 배포/관리하기 어렵다. 할 수는 있겠지만 .. 서로 연관이 되어져있기 때문에 묶어서 가져오기위해 여러가지 일들을 처리해줘야함.
그래서 테이블 안에 데이터가 많아지고, 데이터베이스에 성능을 올려야한다면 수직적으로만 확장이 가능하다. 즉, 서버자체의 RAM, CPU, Disk 를 증설해야한다.
반면에 NoSQL은 서로 다른 데이터들이 연관이 없으므로, 각각 다른 데이터의 collection을 다른 서버에 배포할 수 있다. 즉, 수평적으로 확장이 가능하다.
SQL – NoSQL 선택 기준
- The type of data
- 어떤 데이터 타입을 저장할건지
- The amount of data
- 얼마나 많은 사용자가 이용하는지 / 각각의 사용자마다 얼마나 많은 데이터를 유지하는지
- Data will be queried?
- 각각의 데이터들이 서로 관계가 있는지
- 관계가 있는 데이터를 묶어서 찾는게 필요한지
SQL / NoSQL 이 주로 사용되는 예제
- SQL
- Accounting Software
- E-commerce Platforms
- Customer Relationship Software (CRM)
- ..
- NoSQL
- Social Networks (Graph)
- Distributed Cache (Key-value)
- Content Management Systems (Document)
- Real-time analytics (wide-column)
사실 SQL 이냐 , NoSQL 이냐 .. 딱 하나만 골라야하는 것은 아니고, 많은 기업들이 Hybrid 형식을 취한다.
그 말은 , 하나의 제품에서 한 종류의 DB만 사용하는 것이 아니라 같은 소프트웨어라고 할지라도 필요에 따라 부분적으로 다른 DB를 사용한다.