SQL(Structured Query Language)과 NoSQL(Non Structured Query Language)은 데이터베이스다. 데이터베이스를 이루는 방식이 테이블과 관계형이라면 SQL, 문서와 비관계형이라면 NoSQL이라 부른다. 이름에서 알 수 있는 SQL이 먼저 생긴 데이터베이스 구조고, 후에 생긴 게 NoSQL이다.
SQL
데이터베이스를 구축한다면 사람들이 기본으로 생각하는 구조가 바로 SQL이다. 데이터베이스의 근간이자 오랜 기간 사용했기 때문이다. 우리가 아는 엑셀을 떠올리면 이해하기 쉽다. 데이터베이스 구조는 테이블로 이뤄져 있고 해당 테이블이 다른 테이블과 서로 관계를 맺으며 형성하기 때문에 관계형 데이터 베이스라 부른다. 모형은 IBM이 개발했으며, 여러 분야에 걸쳐 현재 가장 널리 사용되고 있다. SQL 언어가 가장 널리 사용되고 있는 이유는 미국 국립 표준 협회가 이를 표준으로 제정했기 때문이다.
SQL 방식으로 유명한 DB 관리 프로그램은 MySQL, MariaDB 등이 있다.
NoSQL
NoSQL의 특징은 구조화 되어 있지 않은 데이터를 저장하는 데 있다. 테이블이라는 형식에 얽매인 SQL과 다르게, 걸럼별, 문서별 등 자유롭게 데이터를 저장할 수 있다. SQL이 기록을 레코드라 부르면, NoSQL은 문서라 부르는 이유가 여기에서 나왔다. 이런 유연함을 가졌기에 데이터베이스 구조를 먼저 정의하지 않고 문서 작성하듯 시작할 수 있고, 문서마다 다른 구조로 구획할 수 있다. SQL이 정해진 스키마를 따르지 않으면 데이터를 넣지 못하는 데에 반해, NoSQL은 구조가 다르더라도 컬렉션을 언제든 추가할 수 있다.
NoSQL 방식으로 유명한 프로그램은 MongoDB, Redis등이 있다.
마무리
10여년 전에 제로보드로 한참 홈페이지를 만들었을 때가 있다. 웹호스팅을 결제하고, 제로보드 설치하고, 스킨 바꾸고, 기능 추가하고... 그러던중 게시글을 수정할 수 있어서 이것저것 만졌던 그 데이터가 MySQL이 관계형 데이터베이스라는 사실을 새롭게 알았다. 그래서 생각보다 쉽게 이해했다. 만드려면 create, 지우려면 delete를 써야한다고 무작정 썼었는 데 그게 결국 SQL 문법이었던 셈이다.
구글에서 만든 firebase를 수업 시간에 처음 경험했다. 데이터베이스는 SQL 방식만 알았던 사람이 firebase를 배우니 신세계처럼 보였다. 일일이 테이블을 만들지 않아도 되고, 열을 추가해서 미리 만들지 않아도 되고, 키를 지정하지 않아도 되는 게 신기했다. 프론트엔드에서 무작정 넣는대로 다 들어가니 너무나 자유로워보였다. 'NoSQL이 이런거구나' 바로 이해했다.
두 가지 데이터베이스 여러 글을 통해 읽어보니, 장단점이 분명했다. 여기도 무조건 어느하나가 더 좋은 게 아니었다. 새로나왔다고 좋은 줄 알았더니, 오히려 더 많은 데이터베이스를 관리하기엔 어려움이 있다고들 한다. 마치 자바스크립트와 타입스크립트의 느낌이었다. NoSQL이 자유로워서 좋지만, 때론 너무 자유로워서 힘들게 한단다. 수업시간에 듣기로는 간단한 프로그램이나 웹이거나, 프로토타입 등은 NoSQL로 자주 사용한단다. 다만 규모가 커진다면 관리 측면에서 어디에 어떤 데이터가 들어있고 이 데이터가 다른 데이터의 어떤 부분을 참조하는지 알기 어려워져, 그럴 땐 SQL이 훨씬 낫다고 한다.
초보 프론트엔드 개발자 입장에선 firebase같이 백엔드와 DB를 다 쉽게 제공해주는 NoSQL이 아주 효자노릇해줄 듯싶다. DB는 커녕 백엔드 구축은 아무것도 모르니까. 다만, 프론트엔드 개발이 익숙해진다면 언젠가 직접 백엔드와 데이터베이스를 구축해보고 싶은 마음이 있다. 그 시기가 빠르게 도달하길 바라본다...!
※ 잘못된 내용이 있을 경우 댓글로 알려주세요. 배우고 익히고 수정하겠습니다:)
'FE > Web' 카테고리의 다른 글
token, XSS, CSRF (1) | 2022.10.25 |
---|---|
Browser’s Rendering Process (0) | 2022.10.24 |
권한 분기 (0) | 2022.10.23 |
Cookie, Session, Local Storage (0) | 2022.10.12 |
Pagination vs Infinite Scroll (0) | 2022.09.28 |