본문 바로가기
프로그래밍 놀이터/디자인 패턴, 리펙토링

[책 정리] 30. 데이터베이스는 세부사항이다. - Clean Architecture

by 돼지왕 왕돼지 2022. 11. 11.
반응형

-

아키텍처 관점에서 볼 때 데이터베이스는 엔티티가 아니다.

데이터베이스는 세부사항이라 아키텍처의 구성요소 수준으로 끌어올릴 수 없다.

데이터베이스는 데이터 모델이 아니다.

데이터베이스는 일개 소프트웨어일 뿐이고, 데이터에 접근할 방법을 제공하는 유틸리티다.

이러한 유틸리티는 저수준의 세부사항(메커니즘)일 뿐이라서 아키텍처와는 관련이 없다.

 

 

 

관계형 데이터베이스

 

-

앱의 유스케이스는 데이터를 행 단위로 배치한다는 방식을 알아서는 안 되며 관여해서도 안 된다.

데이터가 테이블 구조를 가진다는 사실은 오직 아키텍처의 외부 원에 위치한 최하위 수준의 유틸 함수만 알아야 한다.

많은 데이터 접근 프레임워크가 테이블과 행이 객체 형태로 시스템 여기 저기에서 돌아다니게 허용하는데, 아키텍처적으로 잘못된 설계다.

 

 

 

데이터베이스 시스템은 왜 이렇게 널리 사용되는가?

 

-

디스크의 느린 속도(시간 지연)을 완화하기 위해 색인, 캐시, 쿼리 계획 최적화가 필요해졌다.

그리고 데이터를 표현하는 일종의 표준적인 방식도 필요했다. 간단히 말해서 데이터 접근 및 관리 시스템이 필요해졌다.

시간이 지나면서 시스템은 뚜렷이 구분되는 두 가지 유형으로 분리되었다.

하나는 파일 시스템이었고, 다른 하나는 관계형 데이터베이스 관리 시스템(RDBMS)이었다.

 

 

 

디스크가 없다면 어떻게 될까?

 

-

디스크는 RAM 으로 대체되고 있다.

모든 데이터가 RAM 에 저장되면 이 데이터들을 파일구조가 아닌 연결 리스트, 트리, 해시 테이블, 스택, 큐 등의 데이터 구조로 체계화될 것이며,

데이터에 접근할 떄는 포인터나 참조를 사용할 것이다.

 

 

 

세부사항

 

 

 

하지만 성능은?

 

-

성능은 아키텍처의 관심사가 맞다.

하지만 데이터 저장소의 측면에서 성능은 완전히 캡슐화하여 업무 규칙과 분리할 수 있는 관심사다.

데이터 저장소에서 데이터를 빠르게 넣고 뺄 수 있어야 하는 것은 맞지만, 이는 저수준의 관심사다.

이 관심사는 저수준의 데이터 접근 메커니즘 단에서 다룰 수 있다.

성능은 시스템의 전반적인 아키텍처와는 아무런 관련이 없다.

 

 

 

개인적인 일화

 

 

 

결론

 

-

체계화된 데이터 구조와 데이터 모델은 아키텍처적으로 중요하다.

반면, 그저 데이터를 회전식 자기 디스크 표면에서 이리저리 옮길 뿐인 기술과 시스템은 아키텍처적으로 중요치 않다.

데이터는 중요하다.

그러나 데이터베이스는 세부사항이다.

 

 

반응형

댓글