항해 99 [3주차] WIL

황유정·2021년 10월 3일
0

WIL

목록 보기
3/6
post-thumbnail

이번 주에 한 것

node.js를 이용한 기본주차 개인 프로젝트 배포를 끝냈고, 심화 주차에 들어갔다.

  1. JWT를 이용해 로그인/회원가입 기능 구현하기
  2. db유형에 구애 안받고 MYSQL 서버를 키고, Sequelize 라이브러리를 사용해 MYSQL 데이터를 읽고 쓰기
  3. 웹소켓 라이브러리인 socket.io(실시간 통신 가능) 이용해서 실시간 통신 가능한 기능 구현하기
  4. Test code 작성하기

이런 내용들을 강의를 통해 배웠다. 원래 Mongodb만 쓰다가 SQL로 바꿔서 쓰려니깐 혼란스럽고 익숙하지 않았다. 더 많이 공부해야 겠다.

그리고, 원래 TIL을 안 쓰다가, 첫 번째 기본주차 개인프로젝트를 배포하던 날, 다른 분들에게 도움을 받으며서 얘기를 듣다가, TIL은 무조건 작성하신다는 말을 듣고 자극을 받아 나도 이번에 9/28일 배포 후 9/29, 9/30, 10/2일꺼를 쓰게 되었다! 나는 보통 TIL에 내가 해결한 에러들에 대한 설명이나 그 날 뭘 했는지 적게 되었는데, 매일 하더라도 짧게나마 내가 느낀 것앞으로 노려할 것을 추가하면서 적고 싶다!

9/29-9/30 [TIL]: https://velog.io/@eujeong/930-%ED%95%AD%ED%95%B499-TIL
10/2 [TIL]: https://velog.io/@eujeong/102-TIL

사실 10/1일 TIL도 아주 간단하게 쓰고 임시저장 하고, 다음날 마저 써야겠다 하고 미뤘다가...까먹어서 그냥 날려 먹긴 했다. 앞으로 짧더라도 그때그때 TIL을 쓰는 버릇을 만들어야겠다.

이번 주 키워드1: ORM

출처:
1. https://gmlwjd9405.github.io/2019/02/01/orm.html
2. https://geonlee.tistory.com/207

ORM 이란 Object Relational Mapping, 객체-관계 매핑의 줄임말이다.

객체-관계 매핑은 OOP(Object Oriented Programming)에서 쓰이는 객체라는 개념을 구현한 클래스와 RDB(Relational DataBase)에서 쓰이는 데이터인 테이블 자동으로 매핑(연결)하는 것을 의미한다.

하지만, 객체 모델과 관계형 모델 간에 불일치가 존재하기 때문에, 이를 ORM 을 통해 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 불일치를 해결한다.

ORM의 Framework들

  1. JPA/Hibernate
    Hibernate ORM is an object–relational mapping tool for the Java programming language. It provides a framework for mapping an object-oriented domain model to a relational database.

  2. Sequelize
    Sequelize is a promise-based Node.js ORM for Postgres, MySQL, MariaDB, SQLite and Microsoft SQL Server
    => 이번에 사용했다!

  3. Django ORM
    Django is a Python-based free and open-source web framework that follows the model–template–views architectural pattern.

ORM의 장점

  • 객체지향적인 코드로 더 직관적이다
  • 재사용, 유지보수, 리팩토링이 유용하다
  • DMBS의 종속성이 하락한다
    - 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하기 때문에 RDBMS의 데이터 구조와 Java의 객체지향 모델 사이의 간격을 좁힐 수 있다.
    - 대부분 ORM 솔루션은 DB에 종속적이지 않다

ORM의 단점

  • ORM이 모든 걸 해결해줄 수 없다
  • 프로시저가 많은 시스템에선 ORM의 객체 지향적인 장점을 활용하기 어렵다

이번 주 키워드2: noSQL vs SQL

출처: https://www.mongodb.com/nosql-explained/nosql-vs-sql

NoSQL (“non SQL” or “not only SQL”) databases were developed in the late 2000s with a focus on scaling, fast queries, allowing for frequent application changes, and making programming simpler for developers.

Relational databases accessed with SQL (Structured Query Language) were developed in the 1970s with a focus on reducing data duplication as storage was much more costly than developer time. SQL databases tend to have rigid, complex, tabular schemas and typically require expensive vertical scaling.

간단히 말하자면,
SQL은 관계형 database이고, NoSQL은 비관계형 database이다.


출처: https://siyoon210.tistory.com/130

SQL은 구조화 된 쿼리 언어 (Structured Query Language) 의 줄임말이다.
SQL을 사용하면 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 저장, 수정, 삭제 및 검색 할 수 있다.

SQL의 특징

  • 데이터는 정해진(엄격한) 데이터 스키마 (= structure)를 따라 데이터베이스 테이블에 저장됩니다.
  • 데이터는 관계를 통해서 연결된 여러개의 테이블에 분산됩니다.

NoSQL은 기본적으로 SQL(관계형 데이터베이스)와 반대되는 접근방식을 따르기 때문에 지어진 이름입니다.

NoSQL의 특징

  • 스키마 없음 -> 그래서 더 유연함
  • 관계 없음

그러므로, SQL은 정해진 스키마를 따르지 않는다면 데이터를 추가 할 수 없지만, NoSQL에서는 다른 구조의 데이터를 같은 컬렉션(SQL에서의 테이블)에 추가할 수 있습니다.

앞으로 할 것

아직 심화주차 프로젝트를 하는 중인데, 생각보다 어렵다ㅠㅠ..그래도 10/8일까지의 시간이 있으니 열심히 하고, 저번처럼 빨리 끝내면 이번에 node.js 책을 샀는데, 책과 함께 유튜브 영상들이나 많은 자료들을 찾아보면서 공부하고 싶다! 우선 프로젝트부터 차근차근해야겠다!!

0개의 댓글

관련 채용 정보