취업대비반 2일차(DI, DB인덱스)

LeeJaewon·2023년 3월 28일
0

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

DI(의존성 주입, 의존관계 주입)
의존관계 주입(DI)은 느슨하게 결합된 소프트웨어 구성 요소를 생성할 수 있는 소프트웨어 디자인 패턴입니다. DI에서는 클래스 내에서 개체 종속성을 생성하고 관리하는 대신 외부 소스에서 클래스에 종속성을 주입합니다.
의존성을 주입하는 방법에는 생성자 주입, Setter 주입, 필드 주입 등이 있는데 Spring에서는 생성자 주입을 권장하고 있습니다. 생성자 주입은 생성자의 호출 시점에 1회 호출 되는 것이 보장되기 때문에 주입 받은 객체가 변하지 않거나, 반드시 객체의 주입이 필요한 경우 강제로 주입하기 위해 사용할 수 있습니다.

DI 사용시 다음과 같은 장점이 있습니다.

  • 구성 요소의 분리: DI는 구성 요소의 분리를 촉진하여 서로 독립적으로 만듭니다. 이는 유지 관리, 확장 및 테스트가 더 쉬운 모듈식 아키텍처로 이어집니다.
  • 유연성 및 확장성: 종속성이 외부화되므로 클래스 자체의 코드를 수정하지 않고도 쉽게 변경할 수 있습니다. 이렇게 하면 응용 프로그램이 발전함에 따라 코드가 더 유연하고 쉽게 확장됩니다.
  • 손쉬운 테스트: DI를 사용하면 종속성에 대해 걱정할 필요 없이 개별 구성 요소를 개별적으로 테스트하는 것이 더 쉬워집니다. 이는 테스트 중에 Mock개체를 삽입 할 수 있기 때문입니다.
  • 코드 가독성 향상: DI는 클래스에 필요한 종속성을 명확하게 하여 코드 가독성을 향상시킵니다. 이렇게 하면 코드를 더 쉽게 이해하고 유지 관리할 수 있습니다.

전반적으로 DI는 보다 유지 관리 및 테스트 가능한 소프트웨어를 만들기 위한 강력한 기술입니다. 종속성을 외부화하고 모듈성을 촉진함으로써 개발자가 유연하고 확장 가능하며 유지 관리하기 쉬운 소프트웨어를 구축하는 데 도움이 됩니다.

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

데이터베이스의 인덱스는 데이터에 빠르게 액세스할 수 있는 방법을 제공하여 쿼리 속도를 높이는 데 사용됩니다. 올바르게 사용하면 인덱스는 데이터베이스 쿼리의 성능을 크게 향상시킬 수 있습니다. 다음은 데이터베이스에서 인덱스를 잘 사용하면 얻을 수 있는 몇 가지 이점입니다.

  • 향상된 쿼리 성능: 인덱스는 데이터에 빠르게 액세스할 수 있는 방법을 제공하여 쿼리 성능을 크게 향상시킬 수 있습니다. 인덱스가 없으면 데이터베이스 엔진이 필요한 데이터를 찾기 위해 전체 테이블을 스캔해야 하므로 시간과 리소스가 많이 소모될 수 있습니다. 인덱스를 사용하면 엔진이 필요한 데이터를 빠르게 찾을 수 있으므로 쿼리 실행 시간이 빨라집니다.
  • 디스크 I/O 감소: 인덱스는 데이터베이스 엔진이 쿼리에 필요한 데이터만 검색할 수 있도록 하여 디스크 I/O도 줄일 수 있습니다. 인덱스가 없으면 엔진이 불필요한 데이터를 포함하여 전체 테이블을 읽어야 하므로 디스크 I/O가 증가하고 쿼리 성능이 느려질 수 있습니다.
  • 더 빠른 정렬 및 그룹화: 인덱스는 또한 엔진이 인덱싱된 열을 기반으로 데이터를 빠르게 검색하고 정렬할 수 있도록 하여 정렬 및 그룹화 작업 속도를 높일 수 있습니다. 이렇게 하면 정렬 또는 그룹화가 필요한 쿼리의 성능이 크게 향상될 수 있습니다.
  • 더 나은 동시성: 인덱스는 쿼리 중에 테이블이나 행이 잠기는 시간을 줄임으로써 동시성을 향상시킬 수 있습니다. 인덱스를 사용하면 엔진이 전체 테이블을 잠그지 않고 필요한 데이터를 신속하게 검색할 수 있으므로 다른 쿼리가 테이블에 동시에 액세스할 수 있습니다.
  • 향상된 데이터 무결성: 인덱스는 열에 대한 고유성 제약 조건을 적용하여 데이터 무결성을 향상시킬 수도 있습니다. 이렇게 하면 테이블에 중복 데이터를 삽입할 수 없으므로 데이터 불일치 및 오류를 방지할 수 있습니다.

요약하면 데이터베이스에서 인덱스를 잘 사용하면 쿼리 성능이 크게 향상되고, 디스크 I/O가 감소하고, 정렬 및 그룹화 속도가 빨라지고, 동시성이 향상되고, 데이터 무결성이 향상될 수 있습니다. 그러나 인덱스를 너무 많이 만들거나 인덱싱에 잘못된 열을 사용하는 등 인덱스를 잘못 사용하면 실제로 데이터베이스 성능에 부정적인 영향을 미칠 수 있다는 점에 유의해야 합니다. 따라서 데이터베이스에서 인덱스의 설계 및 사용을 신중하게 고려하는 것이 중요합니다.

profile
한 걸음 한 걸음 꾸준히

0개의 댓글