logo

[MySQL] 가상 테이블

 

가상 테이블

가상 테이블, 또는 뷰(view)는 실제 테이블에 저장되어 있는 데이터를 기반으로 하지만, 데이터를 저장하고 있지 않는 데이터베이스 객체입니다. 가상 테이블은 하나 이상의 실제 테이블에서 데이터를 추출해 조합하여 만들어진 결과물을 표현합니다. 이는 실제 데이터를 복제하지 않고, SQL 쿼리를 저장하는 방식으로 작동합니다. 사용자는 이를 마치 실제 테이블처럼 쿼리할 수 있으며, 데이터베이스는 사용자의 쿼리를 실행하기 위해 내부적으로 해당 가상 테이블을 정의한 SQL문을 실행합니다.

 

가상 테이블 사용 시 이점

  1. 데이터 추상화 및 간소화: 가장 큰 이점 중 하나는 데이터베이스의 복잡성과 구조를 사용자로부터 숨길 수 있다는 것입니다. 사용자는 복잡한 쿼리를 모르더라도, 미리 정의된 가상 테이블을 통해 필요한 정보에 쉽게 접근할 수 있습니다.

  2. 보안: 특정 데이터에 대한 접근을 제한할 수 있습니다. 예를 들어, 민감한 정보가 포함된 열이나 행을 숨기고, 사용자에게 필요한 데이터만 노출하는 가상 테이블을 생성할 수 있습니다.

  3. 유지보수 용이성: 데이터 구조가 변경되어도 가상 테이블의 정의만 업데이트하면 됩니다. 이를 통해 응용 프로그램 코드의 변경 없이 배포될 수 있고, 데이터베이스의 논리적 뷰를 쉽게 조정할 수 있습니다.

  4. 복잡한 쿼리의 재사용: 자주 사용되는 복잡한 쿼리를 가상 테이블로 저장함으로써, SQL 문을 간소화하고 재사용할 수 있습니다.

 

가상 테이블 vs 물리적 테이블 비교

가상 테이블은 실제 데이터를 저장하지 않는 데이터베이스 구조 요소입니다. 대신, 정의된 쿼리를 통해 데이터에 동적으로 접근하여 사용자에게 필요한 정보를 제공합니다. 이는 데이터 추상화, 보안 강화 및 복잡한 쿼리의 재사용성을 목적으로 합니다. 가상 테이블의 주요 이점 중 하나는 데이터 구조가 변경되어도 가상 테이블의 정의만 업데이트하면 되므로 유지보수성이 뛰어나다는 점입니다. 또한, 접근 제어를 통해 높은 수준의 데이터 보안을 제공할 수 있습니다. 그러나 가상 테이블을 사용할 때는 물리적 테이블에 접근해야 하기 때문에, 특히 복잡한 쿼리를 사용하는 경우 성능 저하가 발생할 수 있습니다.

반면, 물리적 테이블은 실제 데이터를 디스크에 저장하는 구조로, 데이터의 영구적 저장을 목적으로 합니다. 이를 통해 데이터에 직접 접근할 수 있으므로, 가상 테이블에 비해 빠른 읽기와 쓰기 작업이 가능합니다. 물리적 테이블의 주요 장점은 성능 측면에서 빠른 데이터 처리 능력을 갖추고 있다는 것입니다. 하지만, 데이터 구조에 변경이 필요한 경우, 물리적 테이블의 수정과 함께 데이터 이관 작업이 필요하며, 이는 유지보수 측면에서 번거로움을 초래할 수 있습니다. 보안 측면에서는 데이터 자체에 대한 접근 제어만 가능하므로, 가상 테이블보다는 다소 제한적인 보안 수준을 제공합니다.

 

예제

MySQL에서 가상 테이블을 생성하는 기본적인 방법은 CREATE VIEW 문을 사용하는 것입니다. 다음은 employees 테이블을 기반으로 가상 테이블(뷰)를 생성하는 예시입니다.

CREATE VIEW employee_summary AS
SELECT employee_id, name, position
FROM employees
WHERE active = 1;

이 예제에서 employee_summary 뷰는 employees 테이블에서 활성 상태의 직원들에 대한 요약 정보(직원 ID, 이름, 직무)만을 제공합니다. 사용자는 이 뷰를 마치 실제 테이블처럼 쿼리할 수 있게 됩니다.

SELECT * FROM employee_summary;

이처럼 가상 테이블은 데이터베이스 사용의 다양한 측면에서 활용될 수 있으며, 특히 대규모 및 복잡한 데이터베이스 환경에서 그 유용성이 더욱 부각됩니다.

Previous