내일배움캠프 TIL (230222): typeorm @Entity() database vs. schema / @Index()

Jiumn·2023년 2월 23일
0

typeorm @Entity() database vs. schema

nestjs 게시판 엔티티 만들기 강의를 보다가 생긴 의문.

@Entity({ schema: 'board', name: 'articles' })

@Entity 속성 중 database와 schema의 차이가 뭐지? schema 속성을 반영했을 때 특별히 mysql db에서 달라진 점을 발견하지 못했기 때문이었다.

스키마(schema)는 MySQL 에서 데이터베이스(database)와 동일한 의미를 갖는다. 때문에 데이터베이스 대신에 스키마를 사용 할 수 있다.

하지만 Oracle에서는 schema가 database의 일부를 의미하기 때문에 db의 종류에 따라 차이가 발생할 수 있다고 한다.


typeorm @Index()

@Index(): 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조, B+ Tree 알고리즘을 사용, 책에 색인(목차)을 추가하는 것과 같음

단점

  • 인덱스를 관리하기 위해 DB의 약 10%에 해당하는 저장공간 필요
  • create, delete, update가 빈번한 속성에 index를 걸게 되면 index 크기가 커져서 오히려 성능 저하되는 역효과 발생

사용하면 좋은 경우

  • 데이터의 중복도가 낮은 컬럼
  • 규모가 작지 않은 테이블
  • JOIN,WHERE 또는 ORDER BY절에서 자주 사용되는 컬럼

예시
user 테이블의 id에 @Index() 사용

profile
Back-End Wep Developer. 꾸준함이 능력이다.

0개의 댓글