개요
- 아키텍처 관점에서 볼 때 데이터베이스는 엔티티가 아니다. 즉 데이터베이스는 세부사항이라서 아키텍처의 구성요소 수준으로 끌어올릴 수 없다
- 소프트웨어 시스템의 아키텍처와 데이터베이스의 관계를 건물로 비교하면 건물의 아키텍처와 문 손잡이의 관계와 같다.
- 애플리케이션 내부 데이터의 구조는 중요하지만 데이터베이스는 데이터 모델이 아닌 일개 소프트웨어 일 뿐이다. 데이터베이스는 데이터에 접근할 방법을 제공하는 유틸리티
관계형 데이터베이스
- 관계형 테이블은 특정한 형식의 데이터에 접근하는 경우에는 편리하지만, 데이터를 테이블에 행 단위로 배치한다는 자체는 아키텍처적으로 볼 때 전혀 중요하지 않다.
- 애플리케이션의 유스케이스는 이러한 방식을 알아서는 안되며 관여해서도 안 된다.
디스크가 없다면 어떻게 될까?
- 한때는 디스크가 성행했지만, 이제는 소멸 중인 부품이다. 머지않아 디스크는 테이프드라이브, 플로피 드라이브, CD가 지나온 길을 따를 것이다. 디스크는 RAM으로 대체되고 있다.
- 모든 데이터가 RAM에 저장된다면 데이터를 어떻게 체계화할 것인가? ⇒ 연결 리스트, 트리, 해시 테이블, 스택, 큐 혹은 여타 무수히 많은 데이터 구조로 체계화할 것이며, 데이터에 접근할 때는 포인터나 참조를 사용할 것
- 데이터가 데이터베이스나 파일 시스템에 있더라도 RAM으로 읽은 후에는 다루기 편리한 형태로 그 구조를 변경한다. 입맛에 맞는 임의의 구조로.
- 데이터베이스가 세부사항이라고 말하는 이유는 바로 이러한 현실 때문이다. 데이터베이스는 그저 메커니즘에 불과하며, 디스크 표면과 RAM 사이에서 데이터를 이리저리 옮길 때 사용할 뿐
하지만 성능은?
성능은 아키텍처와 관련된 관심사가 아닌가? 당연히 맞다
- 데이터 저장소의 측면에서 성능은 완전히 캡슐화하여 업무 규칙과는 분리할 수 있는 관심사다.
- 데이터 저장소에서 데이터를 빠르게 넣고 뺄 수 있어야 하는 것은 맞지만, 이는 저수준의 관심사다.
체계화된
데이터 구조와 데이터 모델은 아키텍처 적으로 중요하다.
반면, 그저 데이터를 회전식 자기 디스크 표면에서 이리저리 옮길 뿐인 기술과 시스템은 아키텍처 적으로 중요치 않다.