전체 글
-
Index ScanSTUDY/DB 2023. 4. 12. 23:42
인덱스 탐색 데이터베이스는 인덱스를 활용하여 빠르게 데이터를 찾을 수 있다. 인덱스 탐색에는 수직적 탐색과 수평적 탐색이 있는데, 수직적 탐색을 통해 먼저 찾고자 하는 데이터의 범위를 결정한 후, 수평적 탐색을 수행하여 실제 데이터를 검색한다. 1. 수직적 탐색 - 인덱스에서 데이터를 찾기 위해 트리 구조를 따라 내려가는 과정 - 대표적인 인덱스 구조인 B-Tree 인덱스에서 수직적 탐색은 루트 노드에서 시작하여, 찾고자 하는 데이터에 해당하는 리프 노드에 도달할 때까지 하위 노드로 이동하는 과정 - 트리의 깊이에 비례하는 시간이 소요 2. 수평적 탐색 - 인덱스에서 데이터를 찾기 위해 동일한 레벨의 노드들 사이를 이동하는 과정 - B-Tree 인덱스의 경우, 리프 노드들은 연결 리스트로 구성되어 있음 ..
-
-
-
-
-
[도메인 주도 개발 시작하기] 11. CQRSSTUDY/DDD 2023. 1. 10. 00:35
시스템이 제공하는 기능은 크게 두 가지로 나눌 수 있다. 상태를 변경하는 기능 상태 정보를 조회하는 기능 상태를 변경하는 범위와 상태를 조회하는 범위가 정확하게 일치하지 않기 때문에 단일 모델로 두 종류의 기능을 구현하면 모델이 불필요하게 복잡해진다. 단일 모델을 사용할 떄 발생하는 복잡도를 해결하기 위해 CQRS를 사용한다. CQRS는 Command Query Responsibility Segregation의 약자로, 상태를 변경하는 명령을 위한 모델과 상태를 제공하는 조회를 위한 모델을 분리하는 패턴이다. CQRS는 복잡한 도메인에 적합하다. 도메인이 복잡해질수록 명령 기능과 조회 기능이 다루는 데이터 범위에 차이가 난다. CQRS를 사용하면 각 모델에 맞는 구현 기술을 선택할 수 있다. 예를 들어 ..
-
[도메인 주도 개발 시작하기] 10. 이벤트STUDY/DDD 2023. 1. 10. 00:13
1. 시스템 간 강결합 문제 쇼핑몰에서 구매를 취소하면 환불을 처리해야 한다. 이때 환불 기능을 실행하는 주체는 주문 도메인 엔티티가 될 수 있고, 응용 서비스에서 환불 기능을 실행할 수도 있다. 1. 도메인 엔티티에서 실행 public class Order { ... // 외부 서비스를 실행하기 위해 도메인 서비스를 파라미터로 전달받음 public void cancel(RefundService refundService) { verifyNotYetShipped(); this.state = OrderState.CANCELED; this.refundStatus = State.REFUND_STARTED; try { refundService.refund(getPaymentId()); this.refundStat..
-
[도메인 주도 개발 시작하기] 9. 도메인 모델과 바운디드 컨텍스트STUDY/DDD 2022. 12. 27. 22:07
1. 도메인 모델과 경계 한 도메인은 여러 하위 도메인으로 구분되기 때문에 한 개의 모델로 여러 하위 도메인을 모두 표현하려고 시도하면 오히려 모든 하위 도메인에 맞지 않는 모델을 만들게 된다. 또한 논리적으로 같은 존재처럼 보이지만 하위 도메인에 따라 다른 용어를 사용하는 경우도 존재한다. 하위 도메인마다 같은 용어라도 의미가 다르고 같은 대상이라도 지칭하는 용어가 다를 수 있기 때문에 한 개의 모델로 모든 하위 도메인을 표현하려는 시도는 올바른 방법이 아니며 표현할 수도 없다. 하위 도메인마다 사용하는 용어가 다르기 때문에 올바른 도메인 모델을 개발하려면 하위 도메인마다 모델을 만들어야하고, 각 모델은 명시적으로 구분되는 경계를 가져서 섞이지 않도록 해야 한다. 여러 하위 도메인의 모델이 섞이면 모델..