이번주는 SQL과 sequelize에 대한 사용과 미들웨어 동작을 파악하기 위한 시간들을 가졌다.
WIL을 통해 진행했던 내용들을 한번에 정리하고 싶었지만, 아직까지 sequelize에 대해 모르는 부분이 많아서 조금더 사용해보고 올려야겠다고 생각했다.
먼저 SQL과 noSQL 그리고 ORM에 대해 찾아보면서 공부한 점에 대해 작성하도록 할 것이다.
.
.
.
객체-관계 매핑
클래스
를 사용하고, 관계형 데이터베이스는 테이블
을 사용한다.스키마 X
관계 X
SQL과 핵심적으로 차이가 있는 부분은 스키마와 관계가 없어서 언제든 다른 구조의 데이터를 같은 컬렉션에 추가할 수 있다는 점이다.
NoSQL에서는 레코드를 문서(documents)라고 부른다. 위 사진처럼 문서는 Json과 비슷한 형태를 가지고 있다. 유저의 정보, 게시글의 정보, 댓글의 정보, 서버의 정보 등을 한개의 컬렉션
안에 담아 사용할 수 있다. 이것은 여러개의 테이블을 조인할 필요없이 모든것을 갖춘 문서로 사용가능하며, 그로인해 높은 유연성을 갖고있다. 이는 빠르게 성장하는 스타트업에서 많이 사용한다.
정해진 데이터 스키마에 따라 테이블에 저장
관계를 통해 여러 테이블에 분산
데이터는 테이블
에 레코드로 저장되는데, 각 테이블마다 명확하게 정의된 구조 스키마
를 갖는다. 따라서 스키마를 준수하지 않은 레코드는 테이블에 추가할 수 없다. 또한 데이터의 중복을 피하기 위해 관계
를 이용한다. 이는 하나의 테이블에서 중복없이 하나의 데이터만을 관리하기 때문에 다른 테이블에서 부정확한 데이터를 다룰 위험이 없어지는 장점이 있다. 여러 테이블에서 데이터를 호출할 때, noSQL이라면 여러 데이터 베이스를 한번씩 불러와야 하지만, SQL 같은 관계형 데이터 베이스에서는 includ 기능을 사용하여 필요한 데이터를 한번에 불러올 수 있다.
하지만 스키마의 영향을 받고 정해진 규칙이 있는만큼 데이터에 지정한 형태에 맞지 않으면 저장할 수 없으며, 스키마 또는 데이터베이스의 테이블을 수정하는데 있어서 noSQL보다 까다롭다.