SQL과 NoSQL 차이는 무엇일까?

2023. 10. 6. 15:36Trip to Database

MongoDB를 사용하면서 SQL과 NoSQL를 다 맛보았다. SQL은 딱히 내가 직접적으로 이용까지 한 것은 아니지만 SQLD 자격증을 취득과 친구들과 간단한 프로젝트를 진행하면서 MySQL을 사용했다. 프론트엔드 입장에서 DB 지식이 크게 중요한 것은 아니지만 데이터가 어떻게 API을 타고 오는지 그 흐름을 아는 것은 개발자로서 중요하다고 생각이 들어 간략히 정리해본다. 아마존 AWS 문서를 참고했다.

 

차이점

 

- 구조

 

> 가장 큰 차이점이지 않을까 싶다. SQL 데이터베이스는 관계형 데이터베이스 시스템으로 데이블, 행, 열의 정보를 구조화하는 방식이다. 각 테이블마다 스키마를 구성하고 공통의 정보를 조인하여 원하는 정보를 뽑아낼 수 있다. 마치 엑셀 데이터처럼 데이터가 쌓이고 다른 테이블에 더하고 싶은 데이터가 있다면 공통의 데이터를 기반으로 종합된 데이터를 얻을 수 있다. INNER JOIN, OUTER JOIN 등 쿼리 문을 사용할 수 있다. 

 

비관계형 데이터베이스는 관계형 데이터베이스 시스템처럼 행과 열로 이루어진 테이블 형식의 스키마를 사욜하지 않는다. 쉽게 생각하면 JSON 데이터처럼 저장이 된다. 뭔가 종합된 데이터를 쓸 때는 각 데이터베이스의 메서드를 활용해야한다. 

MongoDB의 경우 populate 메서드를 활용했었다. 

 

-  데이터 무결성 매커니즘

 

> 원자성, 일관성, 격리 및 내구성(ACID)은 데이터 처리에서 오류나 중단이 발생하더라도 데이터 무결성을 유지할 수 있는 데이터베이스 기능이다. 관계형 데이터베이스 모델은 엄격한 ACID 속성을 따르기에 항상 함께 작업이 완료된다. 중간에 작업이 실패하면 지금까지 행한 절차 모두가 실패한다. 그렇기 때문에 데이터 정확성이 항상 보장된다. 비관계형 데이터베이스는 ACID를 꼭 따르는 것은 아니기에 데이터 무결성에서 취약점이 있다.

 

이 외에도 깊게 차이가 있지만 이해할 수 있는 내용만 남겨둔다.