MySQL 튜토리얼 공식 사이트 - Introduction to Database 를 번역한 글입니다.
데이터베이스 뷰 소개(Introduction to Database View)
요약 : 이 튜토리얼에서는, database view라고 불리는 새로운 데이터베이스 객체에 대해서 배우고, 데이터베이스 뷰의 장단점에 대해서 다룹니다.
데이터베이스 뷰는 join을 사용한 SQL SELECT query 로 정의되는 논리적 혹은 가상의 테이블을 말합니다.
데이터베이스 뷰는 행과 열로 구성된 데이터베이스 테이블과 비슷하기에, 여기에 데이터 쿼리를 날릴수도 있습니다. 대부분의 MySQL을 포함한 데이터베이스 관리 시스템들은 몇몇 사전준비가 된 데이터 베이스 뷰를 거친 기초적인 테이블 내부에, 데이터를 업데이트하는 것이 가능합니다.
데이터베이스 뷰는 물리적인 스키마와 관련되어 있지 않기때문에 유동적입니다. 데이터베이스 시스템들은 join을 사용한 SQL SELECT 처럼 데이터베이스 뷰를 저장합니다. 테이블의 데이터가 변하면, 뷰도 역시 변화가 반영됩니다.
데이터베이스 뷰의 이점(Advantages of database view)
데이터베이스 뷰를 사용하면 다음과 같은 이점이 있습니다.
- 복잡한 쿼리들을 단순화 할 수 있습니다: 데이터베이스 뷰는 많은 기본적인 테이블들과 관련한 SQL 상태문에 의해서 정의됩니다. 외부 어플리케이션과 엔드 유저들에게 기초적인 테이블들의 복잡성을 없애 주는 데이터베이스 뷰를 사용할 수 있습니다. 데이터베이스 뷰를 통해, 많은 join을 가진 복잡한 상태문 대신에 간단한 SQL 상태문을 사용할 수 있게 됩니다.
- 데이터베이스 뷰는 특정 사용자에 대한 데이터 액세스를 제한합니다. 민감한 데이타들의 일부를 모든 유저가 쿼리할 수 있길 원치 않을 것이기 때문에, 특정 그룹의 유저에 대해 민감하지 않은 데이터들을 허용하는 데이터베이스 뷰를 사용할 수도 있습니다.
- 데이터베이스 뷰는 추가적으로 보안 레이어를 제공합니다. 보안은 어떤 관계형 데이터베이스 관리 시스템의 핵심적인 부분입니다. 데이터베이스 뷰는 데이터베이스 관리 시스템을 위해서 추가적인 보안을 제공합니다. 데이터베이스 뷰는 특정유저에게 읽기 전용 데이터를 드러내는 읽기전용 뷰를 만들수 있도록 허용합니다. 사용자들은 단지 읽기전용 뷰에 있는 데이터들을 복구할 수 있지만 업데이트 할 수는 없습니다.
- 데이터베이스 뷰는 행들의 산출을 가능하게 합니다. 데이터베이스 테이블은 데이터베이스 뷰가 어떻던지간에 행들을 계산할 필요는 없습니다.
orderDetails
테이블에quantityOrder
(정렬된 상품들의 수) 그리고priceEach
(상품 아이템마다 가격) 행들을 가지고 있다고 가정합시다. 하지만orderDetails
테이블은 주문의 라인 아이템 각각에 총 세일즈를 저장하기 위해서 계산된 행을 가지고 있지 않습니다. 만약 가지고 있다면, 데이터베이스 스키마는 좋은 디자인이 아니었을 것입니다. 이 경우에, 우리는 total이라고 이름 지어진 계산된 행을 생성할 수 있습니다. 이것은 계산된 결과를 표시하기 위한quantityOrder
와priceEach
의 제품입니다. 데이터베이스 뷰로부터 데이터를 쿼리할때, 산출된 열의 데이터가 즉시 계산됩니다. - 데이터베이스 뷰는 뒷쪽의 비교를 할 수 있습니다. 많은 어플리케이션들이 사용하고 있는 중앙 데이터베이스를 소유하고 있다고 가정해봅시다. 어느날, 새로운 비즈니스 요구에 맞는 데이터베이스를 다시 디자인하기로 결정했습니다. 몇몇 테이블들을 지우고 새로운 테이블들을 생성합니다, 그리고 다른 어플리케이션들에 영향을 미치는 변화를 원치 않습니다. 이 시나리오에서, 제거할 레거시 테이블들과 같이 똑같은 스키마들로 데이베이스 뷰를 생성할 수 있습니다.
데이터베이스 뷰의 단점
위의 장점들에 대비해서 데이터베이스 뷰 사용에는 여러 단점들이 있습니다.
- Performance: 뷰가 다른 뷰들에 기반해서 생성이 되었다면 데이터베이스 뷰에서 데이터를 쿼리하는 것이 느려질 수 있습니다.
- 테이블들의 독립성: 테이터베이스의 기초적인 테이블 기반인 뷰를 만듭니다. 뷰가 관련된 이런 테이블들의 구조는 언제 바뀌던간에, 뷰 또한 바뀌어야 합니다.
이 튜토리얼에서, 데이터베이스 뷰가 무엇인지 배웠습니다. 데이터베이스 뷰 사용의 장단점에 대해서 얘기를 했으니 데이터베이스 디자인에 효과적으로 적용할 수 있을 것입니다.