SQL은 '구조화된 쿼리 언어(Structured Query Language)'의 약자이다. SQL을 사용하면 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 저장, 수정, 삭제 및 검색할 수 있다. 이러한 관계형 데이터베이스의 데이터는 정해진 데이터 스키마를 따라 데이터베이스 테이블에 저장되며, 관계를 통해 연결된 여러 개의 테이블에 데이터가 분산되는 특징이 있다.
데이터는 테이블(table)에 Rows로 저장되며, 각 테이블에는 명확하게 정의된 구조(structure)가 있다. 그리고 구조(structure)는 컬럼의 이름과 데이터 유형으로 정된다. 관계형 데이터베이스에서 스키마를 준수하지 않는 Row는 추가할 수 없다.
SQL 기반의 데이터베이스의 또 다른 중요한 부분은 관다. 데이터들을 여러 개의 테이블에 나눠서 데이터들의 중복을 피할 수 있다. 테이블을 나눠서 데이터를 저장하면, 테이블에서 중복 없이 하나의 데이터만을 관리하기 때문에, 다른 테이블에서 부정확한 데이터를 다룰 위험이 없다는 특징이 있다.
NoSQL은 기본적으로 SQL(관계형)와 반대되는 접근방식을 따르기 때문에 지어진 이름이다.
NoSQL 데이터베이스의 종류는 키-값 데이터베이스, 도큐먼트 데이터베이스, 그래프 데이터베이스 등으로 나뉜다. 키-값 데이터 베이스는 키와 값으로 구성된 배열구조의 데이터베이스로 NoSQL 데이터베이스 중 가장 단순한 구조이다. 도큐먼트 데이터베이스는 필드와 값의 형태로 구성된 데이터를 JSON 포맷으로 관리하는 데이터베이스로 NoSQL 데이터베이스 중 가장 인기가 높다고한다. 그래프 데이터베이스는 노드와 관계로 구성된 데이터베이스로 근접한 객체를 모델링할 목적으로 설계되었다.
NoSQL은 각 DBMS별로 차이가 있으나 일반적으로는 다음과 같은 특징을 가지고 있다.
그렇다면, 어떤 상황에서 어떤 데이터베이스 솔루션을 사용해야 할까.. 두 가지 중 하나의 솔루션을 선택해야 되는 문제에서는 어떤 데이터를 다루는지, 어떤 애플리케이션에서 사용되는지 고려해야 한다.