이미지 검색을 사용해 보세요
검색창 이전화면 이전화면
최근 검색어
인기 검색어

가격
25,000
10 22,500
YES포인트?
1,250원 (5%)
5만원 이상 구매 시 2천원 추가 적립
결제혜택
카드/간편결제 혜택을 확인하세요

이미 소장하고 있다면 판매해 보세요.

  •  국내배송만 가능
  •  문화비소득공제 신청가능

위키북스 데이터베이스 & 빅데이터 시리즈

책소개

2007년 졸트 Productivity 상 수상

목차

1장 진화적 데이터베이스 개발

1.1 데이터베이스 리팩토링
1.2 진화적 데이터 모델링
1.3 데이터베이스 회귀 테스트
1.4 데이터베이스 아티팩트 형상관리
1.5 개발자 샌드박스
1.6 진화적 데이터베이스 개발 기술의 장애물
1.7 무엇을 배웠나

2장 데이터베이스 리팩토링

2.1 코드 리팩토링
2.2 데이터베이스 리팩토링
2.3 데이터베이스 리팩토링의 분류
2.4 데이터베이스 냄새
2.5 어떻게 데이터베이스 리팩토링을 적합하게 할 것인가
2.6 데이터베이스 스키마를 보다 쉽게 리팩토링하기
2.7 무엇을 배웠나

3장 데이터베이스 리팩토링 프로세스

3.1 데이터베이스 리팩토링이 적절한지 검증한다
3.2 가장 적절한 데이터베이스 리팩토링을 선택한다.
3.3 원본 데이터베이스 스키마는 더 이상 지원되지 않음을 표시한다.
3.4 리팩토링 전, 후는 물론 리팩토링 도중에도 테스트를 한다
3.5 데이터베이스 스키마를 변경한다
3.6 소스 데이터 마이그레이션(Migration)
3.7 외부 액세스 프로그램을 리팩토링한다
3.8 회귀 테스트를 실행한다
3.9 작업한 내용에 대해 버전 관리를 한다.
3.10 리팩토링이 끝났음을 알린다.
3.11 무엇을 배웠나

4장 프로덕션으로 배포하기

4.1 샌드박스 사이의 효과적인 배포
4.2 데이터베이스 리팩토링의 번들화
4.3 배포 윈도우 스케줄링
4.4 시스템 배포
4.5 더 이상 지원되지 않는 스키마 제거
4.6 무엇을 배웠나

5장 데이터베이스 리팩토링 전략

5.1 작은 변경사항이 적용하기 더 쉽다
5.2 개개의 리팩토링은 유일하게 식별되어야 한다
5.3 여러 개의 작은 변경으로 큰 변화를 구현한다
5.4 데이터베이스 설정 테이블을 유지한다
5.5 뷰나 배치 작업보다 트리거를 통한 동기화를 사용한다
5.6 충분한 과도기를 가진다
5.7 데이터베이스 ‘변경 관리 위원회’ 전략을 단순화한다
5.8 다른 팀과의 협의 과정을 단순화한다
5.9 데이터베이스 접근을 캡슐화한다
5.10 데이터베이스 환경설정을 쉽게 할 수 있도록 한다
5.11 SQL 문장의 중복을 피한다
5.12 데이터베이스 자산을 형상관리 시스템하에 둔다
5.13 정치를 숙지한다
5.14 무엇을 배웠나


6장 구조적 리팩토링

구조적 리팩토링 구현의 일반적인 고려사항
컬럼 제거
테이블 제거
뷰 제거
계산된 컬럼 도입
대리 키 도입
컬럼 병합
테이블 병합
컬럼 옮기기
컬럼명 바꾸기
테이블명 바꾸기
뷰 이름 바꾸기
LOB 형식을 테이블로 대체
일대다 관계를 연관 테이블로 바꾸기
대리키를 자연키로 바꾸기
컬럼 분할
테이블 분할

7장 데이터 품질 리팩토링

데이터 품질 리팩토링 구현시 일반적인 문제
룩업 테이블 추가
표준 코드 적용
표준 타입 적용
키 통합 전략
컬럼 제약조건 제거
기본값 제거
NULL 값을 허용하지 않는 제약조건 제거
컬럼 제약 조건 도입
일반 형식 도입
기본 값 도입(Introduce Default Value)
NULL 값을 허용하지 않는 컬럼 만들기
데이터 옮기기
형식 코드의 속성 플래그화

8장 참조무결성 리팩토링

외래키 제약조건 추가
계산된 컬럼을 위한 트리거 추가
외래키 제약조건 삭제
캐스캐이딩 삭제
물리적 삭제
논리적 삭제
이력 데이터를 위한 트리거

9장 아키텍처적 리팩토링

CRUD 메서드 추가
미러 테이블 추가
읽기 메서드 추가
뷰를 이용한 테이블 캡슐화
계산된 메서드 도입
인덱스 도입
읽기 전용 테이블 도입
데이터베이스에서 마이그레이션 하는 메서드
데이터베이스로 마이그레이션하는 메서드
뷰로 메서드 대체
메서드로 뷰 대체
공식 데이터 소스 사용하기

10장 메서드 리팩토링

10.1 인터페이스 변경 리팩토링
10.1.1 매개변수 도입(Add Parameter)
10.1.2 메서드 매개변수화(Parameterize Method)
10.1.3 매개변수 제거(Remove Parameter)
10.1.4 메서드 이름변경(Rename Method)
10.1.5 매개변수 순서 변경(Reorder Parameters)
10.1.6 매개변수를 명시적 메서드로 바꾸기(Replace Parameter with Explicit Methods)
10.2 내부적인 리팩토링(Internal Refactorings)
10.2.1 조건식 통합(Consolidate Conditional Expression)
10.2.2 조건절의 분해(Decompose Conditional)
10.2.3 메서드 추출(Extract Method)
10.2.4 변수 도입(Introduce Variable)
10.2.5 제어 플래그 제거(Remove Control Flag)
10.2.6 중개자 제거(Remove Middle Man)
10.2.7 매개변수 이름 변경(Rename Parameter)
10.2.8 리터럴을 참조 테이블로 대체(Replace Literal with Table Lookup)
10.2.9 중첩된 조건절을 단위별 조건절로 대체(Replace Nested Conditional with Guard Clauses)
10.2.10 임시 변수 분리(Split Temporary Variable)
10.2.11 알고리즘 대체(Substitute Algorithm)

11장 변환

데이터 추가(Insert Data)
새로운 칼럼 도입(Introduce New Column)
새로운 테이블 도입(Introduce New Table)
뷰 추가(Add View)
데이터 변경(Update Data)

부록 데이터 모델링을 위한 UML 표시법
용어 정리
참고 & 추천 도서
찾아 보기

품목정보

발행일
2007년 06월 29일
쪽수, 무게, 크기
400쪽 | 175*235*30mm
ISBN13
9788995856444

책 속으로

리팩토링(마틴 파울러 1999)은 소스코드를 조금씩 변경하는 것으로 그 디자인을 개선하고 그렇게 함으로써 기존보다 쉽게 작업할 수 있도록 하는 훈련된 방법이다. 리팩토링의 핵심적인 관점은 소스코드의 행위적 의미를 유지하는 것이다 -리팩토링 시 소스코드의 어떠한 추가나 삭제도 없다. 다만 그 질을 향상시킨다. 리팩토링 예는 getPersons() 오퍼레이션을 getPeople()로 이름을 변경하는 것이다. 이런 리팩토링을 구현하려면 오퍼레이션의 정의를 수정하고 나서, 애플리케이션 코드 전체에 걸쳐 이 오퍼레이션의 모든 호출을 변경하여야 한다. 리팩토링은 코드가 수정 전처럼 아무 문제 없이 다시 실행될 때까지는 끝난 것이 아니다.

이와 비슷하게, 데이터베이스 리팩토링은 데이터베이스 스키마를 간단히 변경하여 그 디자인을 개선하되, 그것의 행위와 정보의 의미는 모두 원래대로 유지하는 것이다. 테이블과 뷰 정의 같은 데이터베이스 스키마의 구조적 관점이나, 저장 프로시저와 트리거 같은 함수적 관점 중 하나를 리팩토링할 수 있다. 데이터베이스 스키마를 리팩토링할 때는 스키마 자체를 뜯어 고쳐야 할 뿐만 아니라, 해당 스키마에 종속성을 가진(커플링된) 비지니스 애플리케이션이나 데이터 추출 같은 애플리케이션 또한 재작성되어야 한다. 데이터베이스 리팩토링은 코드 리팩토링보다 그 구현이 훨씬 더 어렵기에 매우 신중해야 한다. 데이터베이스 리팩토링은 2장에서 자세하게 설명하며, 3장에서는 데이터베이스 리팩토링을 수행하는 프로세스에 대해 설명한다.

...... [ 1.1 데이터베이스 리팩토링] 중에서

추천평

마틴 파울러 (Martin Fowler, 시리즈 에디터)

10년 전 리팩토링이라는 말은 대개 스몰토크(Smalltalk) 커뮤니티와 같은 일부 사람들에게만 알려져 있었다. 갈수록 많은 사람들이 훈련된 효율적인 방법으로 리팩토링을 적용하여, 운영중인 코드를 수정해 나가는 것을 보면 놀라운 것이 사실이다. 그 결과 많은 사람들이 소프트웨어 개발에서¬ 코드 리팩토링을 필수적인 과정으로 생각하게 되었다.

나는 엔터프라이즈 응용 프로그램의 세계에서¬ 일하고 있으며 엔터프라이즈 응용 프로그램의 많은 부분은 데이터베이스와 함께 동작한다. 내가 쓴 리팩토링에 관한 원래 책에서¬, 데이터베이스 리팩토링은 새로운 문제로 등장하고 있기 때문에 리팩토링에 있어서¬ 데이터베이스는 중요한 문제영역이라고 지적하였다. 이러한 문제들은 데이터베이스 전문가와 소프트웨어 개발자 사이에서¬ 불신과 몰(沒)이해로 인한 단절된 벽으로 말미암아 생긴 엔터프라이즈 소프트웨어 세계의 슬픈 영역이다.

스캇(Sccot)과 프라모드(Pramod)에 관해 내가 좋아하는 한 가지는 앞서¬ 설명한 두 영역을 넘나들며 서로 다른 방법으로 열¬심히 일하고 있다는 것이다. 스캇은 두 영역간의 갈라진 틈을 잇는 가교 역할을 하는 데이터베이스 코드를 작성하고 있으며, 그의 객체 관계형 매핑(object-relational mapping)에 대한 성과물은 나의 엔터프라이즈 애플리케이션 아키텍쳐에 많은 영향을 미쳤다. 프라모드는 덜 알려졌을지 모르나, 그가 나에게 준 충격은 실로 대단했다. 그와 함께 ThoughtWork사에서¬ 일할 때, 우리는 데이터베이스 리팩토링은 불가능하다고 이야기를 했다. 하지만 프라모드는 이러한 기존의 생각을 거부하고 개략적인 아이디어와 함께 데이터베이스 스키마를 일관되게 유지할 수 있으면서¬ 변경 가능하거나 제어할 수 있는 프로그램의 원리에 대해 연구했다. 이것은 소프트웨어 개발의 영역에서¬ 코드로부터 시작하여 진화적인 디자인을 사용할 수 있게끔 해주었다. 프라모드는 우리의 많은 고객들과 ThoughtWorks 직원에게 이러한 테크닉을 적용하여 끊임없이 일어나는 데이터베이스 디자인에 대한 장애물을 영영 떨쳐버리게 하였다.

이 책은 응용 프로그램과 데이터 사이에 적당한 다리가 없는 곳에 살았던 두 사람의 교훈을 정리하여 데이터베이스를 위한 리팩토링 테크닉을 소개한다. 이미 리팩토링 경험을 가지고 있다면, 다른 것과 비교했을 때 주요한 차이점은 단지 응용 프로그램과 데이터 구조를 변경하는 것뿐만 아니라 데이터 자체의 연속적인 이관을 관리하는 점이라는 것을 알게 될 것이다. 이 책은 이러한 일을 어떻게 하는지를 알려주고, 이러한 두 가지 내용을 바탕으로 프로젝트 진행을 도와준다.

나는 이 책이 출판돼 정말 기뻤다. 하지만 이것은 첫 단계라고 생각한다. 리팩토링에 대한 책을 출판한 뒤에 나는 자동으로 리팩토링 작업을 해주는 정교한 도구를 찾을 수 있어 기뻤다. 나는 데이터베이스에도 똑같은 일이 일어나고 스키마와 데이터의 연속적인 이관을 모든 사람들이 쉽게 할 수 있도록 해주는 도구를 만드는 회사가 나타나길 바란다. 그러한 일이 일어나기 전에 이 책은 여러분만의 프로세스와 도구를 만드는 데 도움이 될 것이다. 나중에 이 책은 리팩토링 도구의 사용에 있어 기초적인 정보를 제공함으로 인해 영속적인 가치를 가지게 될 것이다.

<추천평>

데이터베이스 리팩토링의 새 장을 여는 이 책은 데이터베이스 스키마를 바꾸는 일이 어렵지 않으며, 데이터를 마이그레이션하는 일도 부담스러워 할 필요가 없고 또한 데이터베이스 전문가가 고객과 개발자로부터 받는 변경 요청으로 과중한 부담을 가질 필요가 없다는 사실을 밝혀주고 있다. 진화적인 디자인은 기민함(agility)의 중심에 있다. 앰블러(ambler)와 세달라지(sadalage)는 애자일 데이터베이스가 서서히 발전하는 방식을 보여준다.
- 조슈아 커리프스키(Joshua Kerievsky), Industrial Logic의 창립자, 패턴을 활용한 리팩토링의 저자

이 책은 진화적 데이터베이스 개발의 기초를 설계할 뿐 아니라, 데이터베이스 리팩토링의 실용적이고 상세한 많은 예제를 제공한다. 애자일 개발론에 관심이 있는 데이터베이스 직종의 사람이라면 반드시 읽어야 할 책이다.
- 더그 배리(Doug Barry), Barry & Associates 대표, Web Services and Service-Oriented Architectures: The Savvy Manager’s Guide 저자

앰블러와 세달라지는 다른 저자들에 의해 매우 어려운 것으로 생각되던 문제에 대한 과감한 접근을 시작하였다. 그들은 데이터베이스 리팩토링 이면의 이론적인 부분과 함께 실제 적용에 있어 그 단계적인 과정을 확인되고 성의있는 방법으로 설명하고 있다. 하지만 정말 놀라운 것은 200 페이지가 넘는 예제 코드와 특정 데이터베이스 리팩토링 장애물을 극복할 수 있는 방법을 기술적으로 상세하게 설명한 예시였다. 이 책은 아이디어만 좋은 그럴듯한 또 다른 소개서가 아니라 개발자와 데이터베이스 관리자 모두 가까이 두고 활용할 수 있는 교과서이자 참고서적이다. 다른 이들은 시도조차 하지 않은 그 곳에서 용기있는 이 둘의 명성은 계속될 것이다.
- 케빈 아구아노(Kevin Aguanno), 수석 프로젝트 매니저, IBM 캐나다

실무 프로젝트에 종사하는 사람은 누구나 스콧과 프라모드가 리팩토링 데이터베이스를 가지고 소프트웨어 개발 생명 주기(software development life cycle)에 가져온 영향을 인정할 것이다. 기존의 데이터베이스를 다루는 것은 현실적으로 쉬운 일이 아니다. 우리가 직면하는 도전의 대부분은 문화적 차이에서 오는 것일 수 있고, 추진한다 하더라도 DBA의 방식에 의해 강요되어 불확실한 상태에 놓일 수 있다. 하지만 이 책은 기술적으로 리팩토링과 데이터베이스의 진화적 개발이 어떻게 애자일한 방법으로 처리될 수 있는지를 보여준다. 내가 만나는 바로 옆의 고지식한 DBA의 책상에 이 책을 놓아두고 싶다.
— 존 컨(Jon Kern)

이 책은 탁월한 책일 뿐만 아니라 애자일 개발론과 객체 기술(object technology) 분야에서 결과를 도출해 내야 하는 데이터 전문가에게 필요한 내용을 완벽히 담고 있다. 리팩토링 데이터베이스가 무엇이고, 어떻게, 왜 일어나는지 보여주는 잘 구조화된 책이다. 나는 데이터베이스를 개발하고 개선할 때마다 이 책을 마치 최고의 요리책처럼 이용할 생각이다.
- 데이비드 R. 해트즌, 편집자, The Data Management Center , First Place Software, Inc.

마틴 파울러(Martin Fowler)가 코드 리팩토링에 한 것을 스콧과 프라모드는 데이터베이스 리팩토링에서 해냈다. 저자는 데이터베이스의 품질을 향상시키는 데 이용할 수 있는 논리적인 프로시저들을 함께 포함하였다. 여러분이 데이터베이스를 다루고 있다면, 이 책은 당신을 위한 선물이다.
- 켄 퍼그(Ken Pugh), 저자, Prefactoring

데이터를 다루는 사람들이 애자일 랭크에 참여한 지는 오래된 일이고 앰블러와 사달라지는 그 조직을 선도하는 사람이다. 이 책은 데이터 모델러와 관리자뿐만 아니라 소프트웨어 개발자들도 꼭 읽어야 한다. 우리는 너무 오랫동안 다른 세계에 살았고, 이 책은 그동안 우리를 나누고 있던 장애물을 제거하는 데 도움을 준다. - 게리 K. 에번스, Agile Process evangelist, Evanetics, Inc.

진화적 디자인과 리팩토링은 이미 흥미있는 주제이고, 리팩토링 데이터베이스와 함께 이것은 더욱 더 좋아졌다. 이 책에서는 저자가 데이터베이스에서 리팩토링을 하는 기술적, 전략적인 내용을 함께 설명하고 있다. 리팩토링 이용하여 데이베이스 스키마는 프로덕션 환경으로 배포된 이후에도 안전하게 점진적으로 발전될 수 있다. 이 책과 함께라면 어떤 개발자라도 데이터베이스는 자신의 능력 범위 안에 있게 된다.
- 스밴 고츠(Seven Gorts)

데이터베이스 리팩토링은 중요한 주제이고 이 책은 커뮤니티에 기여하는 바가 큰 선구자적 역할을 하는 책이다.
- 플로이드 마리네스쿠(Floyd Marinescu), InfoQ.com과 TheServerSide.com의 설립자, EJB 디자인 패턴의 저자 마틴 파울러 (Martin Fowler, 시리즈 에디터)

리뷰/한줄평0

리뷰

첫번째 리뷰어가 되어주세요.

한줄평

첫번째 한줄평을 남겨주세요.