DI(Dependency Injection), DB 인덱스(Index)

이지섭·2023년 4월 3일
0

DI(Dependency Injection)에 대한 설명과 해당 기술의 장점

  • 프로그램은 객체의 조립으로 만들어진다
  • 클래스 a에서 클래스 b를 직접 생성해서 사용 (일체형, has-a 관계)
    b = new B();
    • b를 dependency라고 한다
  • 외부에서 생성된 객체를 가져와서 조립해서 사용(의존성 주입)
    public void setB(B b) {
    	this.b = b;
    }
    • 결합력을 낮춘다(다른 부품으로 갈아끼울 수 있다)
    • setter injection
      B b = new B();
      A a = new A();
      a.setB(b);
    • construction injection
      B b = new B();
      A a = new A(b);
    • Spring이 이런 역할을 대신해준다
  • Spring이 이런 역할을 어떻게 대신해주나?
    • IoC container - 객체가 생성되어 담겨져있는 컨테이너
    • IoC? Inversion of Control
      • 작은 부품이 만들어지고
      • 큰 부품이 만들어지고
      • 작은 부품이 큰부품으로 조립이 됨
    • 일체형이라면 A → B → C → D 순서로 생성한다
    • IoC라면 A ← B ← C ← D 역순으로 생성되어 조립된다

DB에서 인덱스를 잘 사용하면 어떤 장점이 있을까

  • 인덱스가 없다면 검색시 모든 행을 다 확인해봐야한다
    • 풀 스캔
  • 인덱스가 있다면 인덱스부터 검색함. 빠르게 찾고
    • 인덱스에서 찾은 데이터에서 원래 행을 찾아들어가서 값을 가져옴
  • 인덱스란?
    • 특정 컬럼만 따로 떼서 정렬해놓은것
    • 실제 db에서는 b+tree 이런식으로 정렬해놓음
  • 단점
    • 컬럼 복사, 정렬이라 그만큼 용량 차지
    • 검색 필요없으면 굳이 만들어둘 필요 없음
    • 삽입 수정 삭제 시 인덱스도 반영해줘야함 - 성능 하락
    • PK는 자동으로 인덱스 생성되어있음 - clustered index
profile
Stop thinking. Just do it.

0개의 댓글

관련 채용 정보