데이터베이스 언어로, 데이터베이스에 쿼리를 보내 데이터를 다룰 수 있다.
구조화된(structured) 테이블을 사용하는 관계형 데이터베이스에서 활용된다.
즉, SQL 언어는 체계적으로 구조를 갖춘 형식에만 사용할 수 있다.
"스키마가 뚜렷하게 보인다. 테이블 간의 관계를 직관적으로 파악할 수 있다."
"질의문"
검색어도 일종의 쿼리로, 검색 시 보유한 데이터를 검색어을 이용해 필터링한다.
따라서, 쿼리는 저장되어 있는 데이터를 필터하기 위한 질의문이다.
SQL과 NoSQL은 만들어진 방식, 정보의 종류, 그리고 저장방법 등에 차이가 있다.
데이터 저장(Storage)
관계형은 스키마를 기반으로 정해진 형식에 맞춰 데이터를 저장한다.
비관계형은 필요에 맞게 다양한 형식으로 데이터를 저장한다.
스키마(Schema)
SQL을 사용하기 위해선 고정된 형식의 스키마가 필요하다.
처리하려는 데이터의 속성별로 column(field)에 정보를 미리 정해둬야 한다.
NoSQL은 보다 동적으로 스키마 형태를 관리할 수 있다. 꼭 틀을 지킬 필요가 없다.
쿼리(Querying)
관계형은 테이블의 관계와 형식에 맞춰 요청해야 하기에 구조화 된 쿼리 언어를 사용한다.
비관계형은 데이터 그룹 자체를 조회하는 것에 초점을 두기 때문에 꼭 SQL일 필요없다.
확장성(Scalability)
관계형은 수직적으로 확장, 즉 높은 메모리와 CPU를 사용해 비용이 많이 든다.
비관계형은 수평적, 즉 값싼 서버 증설, 클라우드 서비스를 이용하는 확장이다.
서버를 추가 구축하면 많은 트래픽을 보다 편리하게 처리 할 수 있다.
SQL vs NoSQL의 승자는 없다
각 장점을 살려 두 유형을 모두 사용하여 서비스에 알맞게 설계하고 있다.
비관계형 데이터베이스가 확장성이나 속도면에서 더 뛰어나지만,
고차원으로 구조화된 관계형 데이터베이스가 더 좋은 성능을 보여주는 서비스도 있다.
전자 상거래를 비롯한 모든 금융 서비스는 반드시 ACID 성질을 준수해야 하기 때문에 관계형 데이터베이스를 사용한다.