본문은 [웹 프로그래머를 위한 데이터베이스를 지탱하는 기술]를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 1. SQL문의 실행 효율 의식하기 SELECT문, UPDATE문, DELETE문은 많은 레코드 중에서 조건에 맞는 것을 찾아오는 처리이므로 검색 처리를 고속으로 끝내는 것이 매우 중요하다. 1) 적절한 인덱스가 사용되고 있는지 확인 고속의 SQL문을 작성하는 데 있어서 중요한 것이 여럿 있지만, 가장 중요한 것은 적절한 인덱스를 사용하는 것이다 인덱스를 전혀 사용할 수 없는 경우는 테이블 전체의 레코드를 검색해야 한다 테이블이 거대한 경우 이 작업은 매우 무거워지며, 다른 작업에도 영향을 미쳐 서비스 다운을 초래할 수 있다 인..
본문은 [웹 프로그래머를 위한 데이터베이스를 지탱하는 기술]를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 1. 데이터 모델링 기술의 중요성 애플리케이션을 만들 때 중요한 것이 바로 "어떤 데이터 항목이 필요한가"를 제대로 파악하는 것이다 애플리케이션 가동 후에 항목(=열)을 추가하는 것은 쉽지 않다 기능 추가가 자주 발생하는 애플리케이션에서 데이터 항목을 완벽하게 미리 밝혀내는 것은 불가능하다 따라서 데이터 항목을 추가하기 용이한 디자인도 중요하다 2. 예제를 사용하여 생각해 보자 이 장에서는 직원과 소속조직/부서를 취급하는 애플리케이션에서 필요한 데이터 항목을 파악하여 적절하게 테이블 설계에 도입하는 과정을 보여주고자 한다. 애플..
본문은 [웹 프로그래머를 위한 데이터베이스를 지탱하는 기술]를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 1. 키와 값의 페어를 관리하고 싶다 1) 전체 검색은 대량의 데이터에 적합하지 않다 1장에서 얘기했던 것처럼 데이터를 처음부터 끝까지 순차적으로 찾는 선형 탐색은 선형 복잡도(O(N))를 지니고 있다 즉, 데이터 건수가 N배가 되면 N배의 계산량(시간)이 걸린다 이는 탐색 알고리즘에서 가장 비효율적이며, 데이터 건수가 아주 작은 경우에만 사용할 수 있다 2) 원하는 위치까지 순식간에 도달하는 방법 생각하기 배열처럼 데이터를 고정 크기로 관리하면 [PK X 로우의 크기]가 로우를 저장하는 시작 위치가 된다 이 방법을 이용하면 특..
본문은 [웹 프로그래머를 위한 데이터베이스를 지탱하는 기술]를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 1. 데이터베이스가 없으면 무엇이 곤란한가? 1) 대량의 데이터 중에서 필요한 것을 빨리 반환할 수 없다 (성능 X) 수천만 건 이상의 데이터를 선형 탐색하는 것은 그 자체로 시간이 오래 소요될 뿐만 아니라 데이터가 증기함에 따라 데이터의 양과 비례하여 탐색 시간이 증가한다 따라서 보다 효율적인 데이터 구조로 관리되어야 하는데, 데이터베이스는 B+Tree 인덱스나 해시 인덱스와 같은 구조를 통해 빠른 검색을 지원한다 2) 대량의 데이터를 메모리 내에서만으로는 취급할 수 없다 (안정성 X) 메모리의 크기는 한정되어 있으므로 대량의..
본문은 [도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지]를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 11.1 단일 모델의 단점 조회 기능을 구현하기 위해선 여러 애그리거트에서 데이터를 가져와야 하는데, 이때 조회 속도를 빠르게 만들기 위해서 여러 구현 방법을 고민해야 한다 예컨대 식별자를 이용해서 애그리거트를 참조하는 방식(3장)을 사용하면 즉시 로딩 등의 JPA의 쿼리 관련 최적화 기능을 사용할 수 없거나, 어떤 조회 기능을 사용하냐에 따라 같은 연관이더라도 즉시 로딩이나 지연 로딩으로 처리하는 게 다르기 떄문이다 이러한 고민은 시스템 상태를 변경할 때와 조회할 때 단일 도메인 모델을 사용하기 때문에 발생한다 ..