전체 글
-
[Database] Scale-Out(수평적 확장)과 Scale-Up(수직적 확장)legacy/Database 2024. 6. 28. 16:36
운영하는 서버의 사용자가 많아질수록 서버에 부하가 증가하여 많은 용량과 성능을 요구하게 된다. 이를 해결하고자 서버를 추가로 설치하는 방법과 기존의 서버의 성능을 높이는 방법이 있다. 전자의 방법을 ‘Scale-Out’이라고 하고, 후자의 방법을 ‘Scale-Up’이라고 한다. RDBMS를 사용하는 경우 수직적 확장(Scale-Up)이 필요하고, NoSQL을 사용하는 경우 수평적 확장(Scale-Out)이 유리하다. 1. Scale-Out (수평적 확장)수평적 확장이란 서버를 추가로 설치하여, 여러 대의 서버가 요청을 처리하는 방법이다. 예를 들어, 기존 1대의 서버에서 추가로 3대의 서버를 설치하면 총 4대의 서버가 사용자의 요청을 처리하게 된다.이 방식은 서버로 전달되는 부하를 여러 대의 서버로 나누..
-
[Database] 데이터베이스 키 종류legacy/Database 2024. 6. 26. 14:10
수퍼키 (Super Key)유일성 O, 최소성 X[학생번호] → 학생을 유일하게 결정한다. → 수퍼키 만족[이름, 나이, 성별] → 중복되는 학생이 존재할 수 있다. → 수퍼키 만족 X[학생번호, 나이, 성별] → 학생을 유일하게 결정한다. → 수퍼키 만족학생번호만으로도 학생을 유일하게 결정할 수 있기 때문에 최소성을 만족하지 않는다. 후보키 (Candidate Key)유일성 O, 최소성 O[학생번호] → 학생을 유일하게 결정하면서, 최소의 키를 갖는다. → 후보키 만족[학생번호, 나이, 성별] → 학생번호만으로도 학생을 결정할 수 있으므로 최소성을 만족하지 않는다. → 후보키 X 기본키 (Primary Key)일성 O, 최소성 O튜플을 식별할 때 기준이 되는 반드시 필요한 키이다.특징NULl을 저장할 ..
-
[Database] 트랜잭션이란?legacy/Database 2024. 6. 26. 10:27
트랜잭션이란?데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위를 의미한다. 트랜잭션은 여러 개의 작업을 하나의 단위로 묵어서 처리하여, 데이터베이스의 일관성(Consistency)을 유지한다. 일관성을 유지한다는 것은 트랜잭션이 수행된 후 데이터베이스는 일관된 상태를 유지해야함을 의미한다. 트랜잭션 전후에 유효한 상태를 유지하는 것을 의미한다. 트랜잭션의 특징 - ACID트랜잭션은 아래 4가지 상태를 만족해야 한다.원자성 (Atomicity)일관성 ( Consistency)격리성 (Isolation)지속성 (Duration) 원자성 (Atomicity)원자성이란 하나의 트랜잭션이 갖는 모든 작업을 모두 성공하거나 실패해야 한다. 하나의 작업이라도 실패하게 된다면 해당 트랜잭션은 실패한 것이기 때..
-
[Spring] @Autowired 과정legacy/Spring 2024. 6. 25. 14:13
@Autowired 주입 과정Spring Bean 생성애플리케이션이 시작되면서 스프링 컨테이너가 빈을 생성한다. 생성된 빈은 스프링 컨테이너에 의해 관리된다. → 이를 제어의 역전(IoC)라고 한다.의존성 탐색스프링 컨테이너는 @Autowired가 붙은 필드, 세터, 생성자를 탐색한다.의존성 주입2번을 통해 의존성 주입이 필요한 객체를 찾고, 찾은 객체의 클래스와 일치하는 인스턴스를 스프링 컨테이너에서 찾아서 주입한다. 이때, 찾은 객체의 클래스와 일치하는 Bean이 여러 개가 존재한다면 별도의 처리가 필요하다. → 아래에서 확인한다.주입 완료의존성 주입이 완료되면 초기화 콜백(@PostConstruct)이 호출된다. @Autowired를 통한 3가지 주입 방식생성자 주입@Servicepublic cla..
-
[Spring] Spring Bean이란?legacy/Spring 2024. 6. 24. 21:41
Spring Bean (스프링 빈)이란?IoC 컨테이너에 의해 프레임워크로부터 생성되고 관리되는 자바 객체를 의미한다. 스프링 컨테이너에 Bean을 등록하는 방법1. @ComponentScan에 의한 자동으로 Bean 등록@Component가 붙은 애너테이션을 사용하면 스프링 컨테이너에 의해 자동으로 Bean으로 등록된다. @Component가 붙은 대표적인 애너테이션은 다음과 같다.@Controller@Service@RepositoryControllerUserController는 UserService에 의존한다.@Controllerpublic class UserController { private UserService userService; public UserController(UserSe..
-
[Spring] DI(Dependency Injection)과 IoC(Inversion of Control)legacy/Spring 2024. 6. 24. 20:30
DI (Dependency Injection)다른 프레임워크와 달리 스프링은 의존 관계 주입이라는 차별점을 갖는다.개발자가 직접 객체를 생성하는 것이 아닌, 프레임워크에서 객체를 생성한 후 주입해 주는 방법이다. 방법 1. 개발자가 직접 객체를 생성한다.A 객체를 사용하기 위해 개발자가 생성자를 사용하여 B와 C 객체를 생성하는 방식이다.즉, 의존성 주입을 사용하지 않고 직접 객체를 생성하여 주입하는 방식이다.public class UserService { private UserRepository userRepository = new UserRepository(); public User findUser(String userId) { return userRepository.f..