항해99 4주차 WIL

김상선·2022년 6월 5일
0

항해99

목록 보기
4/6

한 주 동안 있었던 일, 배운 것

05/30 (월) : node.js 심화 강의 1주차 수강, 강승현 멘토 세션

  • 저녁에 강승현 멘토님의 node.js 로드맵 세션 강의가 있었다. 로드맵 사이트를 참고하면서 어떤 것을 익혀야하는지 알려주셨다. 사실 하나도 못알아들었다. 멘토님은 중학교때부터 프로그래밍에 관심을 가지셨다고한다. 변화하는 웹 트렌드를 계속 학습하고 업무에 응용한다는 게 대단해보였다.
  • Node.js Roadmap site : https://roadmap.sh/backend

05/31 (화) : node.js 심화 강의 2주차 수강

이번엔 다시 JWT를 학습하게 되었다. 아무것도 모를 때는 어렵게 느껴졌는데, 두번째로 보니 이해할 수 있는 부분이 좀 더 많았던 것 같다.

06/01 (수) : node.js 심화 강의 3주차 수강

미들웨어와 라우터..아직 express가 익숙하지 않은 것 같다. 튜터님이 화살표 함수와 프로미스를 사용하는데, 쉬운 듯이 말씀하셔서 좀 당황했다. 아니 나는 아직 모릅니다..

06/02 (목) : 팀 & 개인 과제 제출
https://www.notion.so/3-Node-js-7f61588198fd498fb0f512036f579f06

06/03 (금) : 주특기 심화 주차 시작

주특기 심화주차가 시작되었다. 테스트코드 과제를 이해할 수가 없었다. 강의를 다 들어야 과제를 시작할 수 있다고 생각해서 강의에 집중하기로..

06/04 (토) : node.js 심화반 강의 4주차 수강

06/05 (일) : node.js 심화반 강의 4주차 수강


noSQL vs SQL

SQL

참고자료 : https://siyoon210.tistory.com/130

  • SQL을 사용하면 RDBMS에서 데이터를 저장, 수정, 삭제 및 검색 할 수 있다.

  • SQL(관계형 데이터베이스)에는 핵심적인 두 가지 특징이 있다.
    1. 데이터는 정해진 데이터 스키마에 따라 테이블에 저장
    2. 데이터는 관계를 통해 여러 테이블에 분산.

  • 데이터는 테이블에 레코드로 저장되는데, 각 테이블마다 명확하게 정의된 구조가 있다. 해당 구조는 필드의 이름과 데이터 유형으로 정의된다.

  • 따라서 스키마를 준수하지 않은 레코드는 테이블에 추가할 수 없다. 즉, 스키마를 수정하지 않는 이상은 정해진 구조에 맞는 레코드만 추가가 가능한 것이 관계형 데이터베이스의 특징 중 하나다.

장점

  • 명확하게 정의된 스키마, 데이터 무결성 보장
  • 관계는 각 데이터를 중복없이 한번만 저장

단점

  • 덜 유연함. 데이터 스키마를 사전에 계획하고 알려야 함. (나중에 수정하기 힘듬)
  • 관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있음
    대체로 수직적 확장만 가능함

NoSQL

  • 관계형데이터 베이스와 반대되는 접근방식을 따른다.
  • 스키마가 없으며, 관계도 없다.
  • NoSQL에서는 레코드를 문서(documents)라고 부른다.
  • SQL과 핵심적인 차이:
    - SQL은 정해진 스키마를 따르지 않으면 데이터 추가가 불가능.
    - NoSQL에서는 다른 구조의 데이터를 같은 컬렉션에 추가가 가능.
  • 문서(documents)는 Json과 비슷한 형태로 가지고 있다. 관계형 데이터베이스처럼 여러 테이블에 나누어담지 않고, 관련 데이터를 동일한 '컬렉션'에 넣는다.

  • 여러 테이블에 조인할 필요없이 이미 필요한 모든 것을 갖춘 문서를 작성하는 것이 NoSQL이다. (NoSQL에는 조인이라는 개념이 존재하지 않음)

장점

  • 스키마가 없어서 유연함. 언제든지 저장된 데이터를 조정하고 새로운 필드 추가 가능
  • 데이터는 애플리케이션이 필요로 하는 형식으로 저장됨. 데이터 읽어오는 속도 빨라짐
  • 수직 및 수평 확장이 가능해서 애플리케이션이 발생시키는 모든 읽기/쓰기 요청 처리 가능

단점

  • 유연성으로 인해 데이터 구조 결정을 미루게 될 수 있음
  • 데이터 중복을 계속 업데이트 해야 함
  • 데이터가 여러 컬렉션에 중복되어 있기 때문에 수정 시 모든 컬렉션에서 수행해야 함 (SQL에서는 중복 데이터가 없으므로 한번만 수행이 가능)

ORM(Object Relational Mapping) 이란?

ORM(Object Relational Model)은 사물을 추상화시켜 이해하려는 OOP적 사고방식과 DataModel을 정형화하여 관리하려는 RDB 사이를 연결할 계층의 역할로 제시된 패러다임으로 RDB의 모델을 OOP에 Entity 형태로 투영시키는 방식을 사용한다.

Node에서 사용하는 ORM 모듈

  • Sequelize
  • Mongoose
  • TypeORM
  • SheetJS js-xlsx

ORM 사용의 장점과 단점

  • 장점
    1. 개발의 생산성 향상
    2. 명확한 쿼리 (버그와 실수 감소, 높은 가독성)
    3. DB 의존성 감소(개발자는 DB에 상관없이 Object에 집중 가능)
  • 단점
    1. 수정과 디버그의 어려움
    2. 복잡한 쿼리 작성의 문제 (ORM이 지정한 명령만 가능)
    3. Raw쿼리에 비해 느린 실행속도

https://kyungyeon.dev/posts/3

profile
일요일을 좋아합니다.

0개의 댓글