SQL이란?
SQL = Structured Query Language
SQL은 '구조적인 쿼리 언어'라는 뜻으로, 관계형 데이터베이스(RDBMS)를 제어하기 위해 사용하는 프로그래밍 언어이다. SQL은 데이터베이스가 아닌 언어를 지칭하지만, 통상적으로 관계형 데이터베이스까지 포함하여 SQL이라 부른다.
특징
- 엄격한 스키마(=structure)에 따라 데이터가 저장된다.
- 관계를 통해 연결된 테이블에 데이터가 저장된다.
- 표(Table)와 행(Row)으로 데이터를 구분한다.
- MySQL, Oracle, postreSQL, msSQL 등이 많이 쓰인다.
NoSQL이란?
NoSQL = Not Only Structured Query Language
SQL과 반대되는 접근방식이라 NoSQL이라 해석하기도 하고, 구조적 쿼리 언어를 제외한 다양한 형태의 쿼리 언어를 포괄하기에 NoSQL(Not Only SQL)이라 해석하기도 한다. 비관계형 데이터베이스를 제어하는 언어로, 통상적으로 비관계형 데이터베이스 자체까지 포함하여 NoSQL이라 부른다.
특징
- 스키마 없음 / 관계 없음
- 데이터를 유연한 형태로 저장할 수 있다.
- 컬렉션(Collection)과 문서(Document)로 데이터를 저장한다. 이 때, 같은 컬렉션에 속한 문서여도 구조가 다를 수 있다.
- MongoDB, Firebase 등이 많이 쓰인다.
SQL | NoSQL |
엄격한 스키마(Structure) | 스키마 없음 / 유연한 데이터 구조 |
테이블 형태로 저장되는 데이터 | 컬렉션과 문서 형태로 저장되는 데이터 |
MySQL, Oracle, postreSQL, msSQL 등 | mongoDB, Firebase 등 |
ORM 이용 (Object Relation Mapping) | ODM 이용 (Object Document Mapping) |
명확한 스키마가 중요한 경우에 유리 | 수직 및 수평적 확장에 유리 |
ORM/ODM (Object-Relation-Mapping / Object-Document-Mapping)
백엔드에서 DB에 접속하기 위해 필요한 맵핑 툴. 이름으로 예상할 수 있듯 ORM은 관계형 DB, ODM은 비관계형 DB에 접속할 때 사용한다. 많이 쓰이는 ORM에는 sequalizem, typeorm. 많이 쓰이는 ODM에는 mongoose가 있다.
DB 관리 프로그램
DB 관리 프로그램은 IP 주소와 포트번호 등의 접속정보를 이용하여 해당 DB를 간편하게 확인하고 관리할 수 있게 도와준다. 실제 DB를 구동하는 서버 프로그램이나 ORM/ODM 등과는 상관이 없다. DBeaver, MySQL workbench 등이 많이 쓰인다.