Top

데이터 접근 패턴 Data Access Patterns [데이터베이스와 효율적으로 상호작용하는 25가지 소프트웨어 디자인 패턴]

  • 원서명Data Access Patterns (ISBN 9780321555625)
  • 지은이클리프턴 녹
  • 옮긴이임혜연
  • ISBN : 9788960774292
  • 40,000원
  • 2013년 05월 20일 펴냄
  • 페이퍼백 | 528쪽 | 188*250mm
  • 시리즈 : 데이터 과학

책 소개

효율적인 고품질의 데이터 접근 코드는 기업용 애플리케이션의 성능과 사용성에 결정적이다. 그리고 기존 시스템의 성능을 향상시키는 데 데이터 접근 코드를 최적화하는 것보다 더 좋은 방법은 없다. 개발자는 데이터베이스 엔진, 플랫폼, 언어, 애플리케이션과 상관없이 반복적으로 같은 관계형 데이터베이스에 접근하는 도전에 부딪힌다. 『데이터 접근 패턴 Data Access Patterns』에서 저자 클리프턴 녹은 25가지의 검증된 솔루션을 알아보고, 각각을 명쾌하고 사용하기 쉬운 패턴 형태로 제시한다.

이러한 데이터 접근 패턴은 효율적인 데이터베이스 독립 애플리케이션을 만들고, 이해하기 어려운 데이터베이스 의미 체계를 사용자에게서 숨기고, 개발과 유지 보수를 단순화하고, 동시성과 트랜잭션 지원을 향상시키고, 데이터 접근 병목을 제거하는 등의 광범위한 문제를 해결한다. 모든 패턴은 충분히 주석을 붙인 자바/JDBC 코드 예제와 인터페이스, 클래스, 관계를 나타내는 UML 다이어그램과 함께 설명했다.


[ 이 책에서 다루는 내용 ]

■ 분리 패턴: 다른 애플리케이션 로직으로부터 데이터 접근 코드를 분리해서 더 깔끔하고 신뢰성 있는 시스템을 만든다.
■ 리소스 패턴: 관계형 데이터베이스 리소스를 더 효율적으로 관리한다.
■ 입출력 패턴: ‘물리적’ 관계형 데이터와 그 데이터의 도메인 객체 표현 사이를 일관적으로 해석해서 I/O 연산을 단순화한다.
■ 캐시 패턴: 데이터 접근 최적화와 캐시 부담 사이의 트레이드오프를 최적화하기 위해 전략적으로 캐싱을 사용한다.
■ 동시 실행 패턴: 동시성과 트랜잭션을 더 효율적이고 신뢰성 있게 구현한다.

『데이터 접근 패턴 Data Access Patterns』은 전통적으로 가장 견고한 데이터 접근 솔루션에서만 쓰였던 기법을 알기 쉽게 설명한다. 그 기법을 모든 소프트웨어 개발자, 아키텍트, 디자이너에게 실용적으로 만들어 준다.


[ 이 책의 대상 독자 ]

이 책은 데이터 접근 소프트웨어의 구성 요소를 만드는 일을 맡은 소프트웨어 아키텍트, 디자이너, 엔지니어들을 위한 책이다. 또한 이 책의 자료는 공통적인 데이터 접근 문제와 해결책을 이해하려는 학생들에게도 적합하다.

독자가 이미 데이터베이스와 객체지향 개념에 익숙하다고 가정하고, 일반적인 데이터베이스와 객체지향 개념과 용어를 사용해 데이터 접근 패턴을 설명한다. 친숙하지 않은 용어를 만났을 때는 책의 마지막 부분에 있는 ‘용어 정리’를 참고하라.

이 책의 패턴은 다양한 플랫폼, 프로그래밍 언어, 데이터베이스에 적용된다. 각 패턴의 예제 코드는 Java 2 Standard Edition(J2SE), Java 2 Enterprise Edition(J2EE), Java Database Connectivity(JDBC) API를 사용해 작성됐다. 예제 코드는 데이터베이스 연산을 SQL로 표현했다. 자바와 JDBC를 이미 알고 있다면 예제 코드를 공부할 때 도움이 되지만, 잘 몰라도 무방하다. 복잡한 코드에는 주석과 설명을 붙였다.


[ 이 책의 구성 ]

이 책은 일종의 패턴 편람으로, 데이터 접근 패턴들을 자세히 설명한다. 이 책을 구성하는 절들은 여러 가지 패턴을 적용성에 기반을 두고 그룹으로 묶었다. 패턴 편람이므로, 패턴 설명을 반드시 순서대로 읽어야 할 필요는 없다. 특정 패턴이 다른 패턴이 정의하는 개념에 의존한다면 본문에 그 사실을 분명히 명시했다.

패턴들은 간결하고, 서술적이고, 친숙한 이름으로 식별된다. 패턴 이름은 대화와 문서에서 사용되기 때문에 중요하다. 상호작용하는 클래스들을 리소스 장식자(Resource Decorator)의 인스턴스라고 기술하는 것이 패턴의 각 요소들을 반복해 자세히 기술하는 것보다 훨씬 효율적이다.

이 책의 ‘서론’에서는 데이터 접근 패턴을 학습하고 적용하는 동기를 보여주고, 각 패턴을 간단히 소개한다. 서론에서는 또한 이후 장에서 패턴 세부 사항을 기술할 양식을 미리 정의한다.

이 책의 나머지는 각 패턴 범주에 해당하는 부분으로 나뉜 패턴 목록이다.

•1부, '분리 패턴'에서는 데이터 접근 코드를 다른 애플리케이션 로직으로부터 분리함으로써 데이터 접근 세부 사항에만 연관된 변경 사항으로부터 야기된 결함에 덜 민감하고 더 깔끔한 애플리케이션 코드를 낳는 분리 패턴들을 다룬다.
•2부, '리소스 패턴'에서는 효율적인 데이터베이스 자원 관리를 위한 패턴들을 다룬다.
•3부, '입/출력 패턴'에서는 관계형 데이터의 물리적 형태와 도메인 객체 표현 사이의 일관된 해석을 사용해 데이터 입력과 출력 연산을 단순화하는 패턴들을 다룬다.
•4부, '캐시 패턴'에서는 전략적 데이터 캐싱을 가능하게 하는 패턴을 기술하고, 데이터 접근 최적화와 캐시 부담 사이의 트레이드오프를 다룬다.
•5부, '동시 실행 패턴'에서는 동시성 전략을 구현하는 패턴을 다룬다.

저자/역자 소개

[ 저자 서문 ]

데이터는 모든 기업의 근간을 이루는 중대한 요소다. 회계사는 금융 데이터를 사용해 결정을 내리거나 방어한다. 제조업자와 구매자는 재고와 주문 데이터에 기반을 두고 재고를 통제한다. 판매원은 고객 이력 데이터를 조사한다. 경영진은 회사의 제어 상태를 검사하기 위해 데이터를 필요로 한다.

기업용 소프트웨어는 이런 중요한 결정을 내리는 사람들이 데이터를 읽고, 쓰고, 정리할 수 있게 한다. 비즈니스 애플리케이션의 데이터 접근 기능은 품질과 유용성에 중요한 역할을 한다. 개발자는 효율적인 데이터 접근 코드를 설계하기 위해 상당한 노력을 해야 한다. 그렇지 않으면 전체 애플리케이션이 느려지거나 결함을 갖기 쉬울 것이다.

데이터 접근 패턴
기업용 소프트웨어 개발자는 애플리케이션 도메인에 관계없이 동일한 데이터 접근 문제와 씨름한다. 다음은 데이터 접근 구성 요소를 설계할 때 발생하는 공통적인 몇 가지 사례다.

•애플리케이션은 여러 가지의 데이터베이스 제품과 동작해야 한다.
•사용자 인터페이스는 이해하기 힘든 데이터베이스 의미 체계를 감춰야 한다.
•데이터베이스 자원 초기화는 느리다.
•데이터 접근 세부 정보로 인해 애플리케이션 코드는 개발과 유지 보수가 어려워진다.
•애플리케이션은 자주 사용하는 데이터를 캐시에 둬야 한다.
•동일한 데이터에 여러 사용자가 동시에 접근할 수 있어야 한다.

이런 문제에 대한 일반적인 솔루션이 있다. 매우 직관적이어서 그야말로 수천 명의 개발자가 저마다 자신만의 방법으로 해결한 솔루션도 있고, 일부는 모호해서 매우 견고한 데이터 접근 솔루션에서만 해결할 수 있었던 솔루션도 있다.

데이터 접근 패턴은 앞에서와 같은 일반적인 설계 문제를 해결하는 포괄적 전략을 기술한다. 패턴은 특정한 구현을 반드시 강제하지 않는다. 그 대신 솔루션의 기초를 형성하는 효율적인 설계와 구조를 기술한다.

이 책은 특히 관계형 데이터 접근(relational data access)에 적용되는 패턴들을 설명한다. 기업용 소프트웨어가 오늘날 사용하는 가장 일반적이고 검증된 데이터 저장 방식은 단연 관계형 데이터베이스다. 객체지향이나 계층형 데이터베이스 같은 다른 지속적인 기술은 인기가 높아지고 있는 중이다. 이런 대안 데이터베이스는 데이터를 런타임 객체 형태에 가깝게 저장함으로써 종래의 객체지향 디자인 패턴과 기법을 더 쉽게 적용할 수 있다.


[ 저자 소개 ]

클리프턴 녹 (Clifton Nock)
콜로라도 덴버에 있는 피플소프트의 시니어 소프트웨어 아키텍트다. IBM에서 5년 동안 iSeries 운영체제와 그 운영체제에 통합된 데이터베이스에 대한 접근을 단순화하는 프로그래밍 인터페이스를 설계하는 업무를 수행했고, 그 일과 관련된 9개의 미국 특허를 보유 중이다. 미네소타 주립대학에서 프로그래밍 강의 몇 개를 진행했고, 전 세계의 기술 컨퍼런스에서 발표했다. 미네소타 주립대학교의 컴퓨터 과학 석사학위가 있다.


[ 옮긴이의 말 ]

프로그래머로 일하면서 작성하는 소프트웨어의 상당수는 데이터를 다루는 애플리케이션입니다. 그 중 많은 수의 애플리케이션이 데이터베이스를 사용합니다. 데이터 관련 작업이 주 역할인 애플리케이션의 성능과 유지 보수 적합성은 데이터베이스 접근 코드를 어떻게 작성하느냐에 달려 있습니다. 애플리케이션과 데이터베이스 사이의 상호작용은 필수적이지만, 데이터를 바라보는 방식이 각기 다르고 상호작용에는 비용 부담이 따르기 때문에 프로그래머가 적절한 완충지대를 마련해줘야 합니다. 이 책은 그런 상황에서 적용해볼 만한 데이터 접근에 관련된 소프트웨어 디자인 패턴을 소개합니다.

책에서 설명한 패턴을 적용해서 얻을 수 있는 장점에는 다음과 같은 것이 있습니다.

- 애플리케이션의 데이터 접근 코드가 특정 지점에 집중되어 개선 및 오류 수정 작업을 하기 쉬워집니다.
- 새로운 기술이나 데이터베이스 제품을 애플리케이션에서 사용하기 쉬워집니다.
- 관계형 데이터 형식이 변경될 때 연관된 도메인 객체를 맞추어 변경하기 쉬워집니다.
- 데이터베이스 접근 횟수를 최적화시켜 애플리케이션의 성능이 좋아집니다.
- 여러 애플리케이션 인스턴스가 동일한 데이터를 사용할 때 발생하는 문제에 대처할 수 있습니다.

원서가 2003년에 출간되었기 때문에, 책에서 사용한 예제가 현장과 조금 동떨어져 있을 수도 있습니다. 그렇지만 책의 내용은 소프트웨어 설계의 일반적인 부분을 다루었기 때문에 여전히 유효합니다. 소개된 패턴을 이해하면 개발하는 데 큰 도움이 될 것이라고 생각합니다. 직접 패턴을 애플리케이션 개발에 적용하고 발전시키는 경우는 물론, 하부 데이터베이스 접근 코드를 직접 작성하지 않고 이미 있는 프레임워크를 사용하는 경우에도 마찬가지입니다. 패턴을 이해하면 프레임워크 설계를 이해하기 쉬워지고, 적절하게 사용할 수 있기 때문입니다.

저자가 붙인 패턴 이름을 번역하는 데 고민이 많았습니다. 의미를 제대로 전달할 수 있고 이미 정착된 외래 용어가 없는 경우라면 번역 용어를 사용하려고 노력했고, 패턴 이름의 경우에는 『GoF의 디자인 패턴』(피어슨에듀케이션코리아, 2007)에 사용된 용어를 독자들이 받아들일 만한 일반적인 것으로 보고 그에 따랐습니다.


[ 옮긴이 소개 ]

임혜연
KAIST에서 전산학 전공으로 학사와 석사과정을 마쳤다. 5년 동안 검색엔진 개발 업무를 했고, 지금은 사용자와 더 가까운 애플리케이션을 개발 중이다. 하고 싶은 일은 많은데, 시간과 집중력이 한정돼 있어 늘 아쉬워 한다.

목차

목차
  • 1부 분리 패턴
  • 데이터 모델과 데이터 접근
  • 도메인 객체와 관계형 데이터
  • 분리 패턴
  • 1장 데이터 접근자
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 2장 능동적 도메인 객체
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 3장 객체/관계형 맵
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 4장 계층 중첩
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 2부 리소스 패턴
  • 리소스와 맥락
  • 리소스와 동시성
  • 데이터 접근 리소스
  • 리소스 관리
  • 리소스 패턴
  • 5장 리소스 장식자
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 6장 리소스 풀
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 7장 리소스 타이머
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 8장 리소스 기술자
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 9장 리트라이어
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 3부 입출력 패턴
  • 입출력 연산
  • 아이덴티티 객체
  • 입출력 패턴
  • 10장 선택 팩토리
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 11장 도메인 객체 팩토리
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 12장 갱신 팩토리
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 13장 도메인 객체 조립자
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 14장 페이징 반복자
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 4부 캐시 패턴
  • 캐시 연산과 투명성
  • 캐시된 데이터
  • 캐시 패턴
  • 15장 캐시 접근자
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 16장 요구 캐시
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 17장 준비된 캐시
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 18장 캐시 검색 시퀀스
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 19장 캐시 컬렉터
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 20장 캐시 복제자
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 21장 캐시 통계
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 5부 동시 실행 패턴
  • 작업 단위
  • 작업 사본
  • 동시 실행 문제
  • 동시 실행 솔루션
  • 동시 실행 패턴
  • 22장 트랜잭션
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 23장 낙관적 잠김
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 24장 비관적 잠김
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드
    • 연관 패턴과 기술
  • 25장 원상회복 트랜잭션
    • 설명
    • 배경
    • 적용 가능성
    • 구조
    • 상호작용
    • 결과
    • 전략
    • 예제 코드

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안