구체화 보기
Materialized view컴퓨팅에서 구체화된 보기는 질의 결과를 포함하는 데이터베이스 객체다. 예를 들어 원격으로 위치한 데이터의 로컬 복사본이거나 테이블 또는 조인 결과의 행 및/또는 열의 하위 집합이거나 집계 함수를 사용한 요약일 수 있다.
구체화된 관점을 설정하는 과정을 때때로 구체화라고 한다.[1] 이것은 함수 값의 메모화와 유사한 질의 결과를 기능 언어로 캐싱하는 형태로, 사전 컴퓨팅의 형태로 설명되기도 한다.[2][3] 다른 형태의 사전 컴퓨팅과 마찬가지로 데이터베이스 사용자들은 일반적으로 성능, 즉 최적화의 한 형태로 구체화된 뷰를 사용한다.[4]
원격 테이블을 기반으로 데이터를 저장하는 구체화된 뷰를 스냅샷이라고도[5] 한다(오라클 용어 사용 안 함).
관계형 모델을 따르는 모든 데이터베이스 관리 시스템에서 보기는 데이터베이스 질의의 결과를 나타내는 가상 테이블이다. 쿼리나 업데이트가 일반 보기의 가상 테이블을 다룰 때마다 DBMS는 이를 기본 기본 테이블에 대한 쿼리 또는 업데이트로 변환한다. 구체화된 뷰는 다른 접근방식을 취한다. 즉, 조회 결과는 원본 기본 테이블에서 때때로 갱신될 수 있는 콘크리트("구체화된") 테이블로 캐시된다. 이를 통해 추가 스토리지 비용과 구식 데이터로 인해 훨씬 더 효율적으로 액세스할 수 있다. 구체화된 뷰는 특히 실제 기본 테이블의 빈번한 쿼리가 비용이 많이 들 수 있는 데이터 웨어하우징 시나리오에서 사용된다.[citation needed]
구체화된 뷰에서 인덱스는 모든 열에 작성될 수 있다. 이와는 대조적으로, 일반적으로 기본 테이블의 인덱스 열에서 직접(또는 매핑이 있는) 열에서만 인덱스를 이용할 수 있다. 종종 이 기능은 전혀 제공되지 않는다.
구현
오라클
구체화된 뷰는 Oracle Database에 의해 먼저 구현되었으며, Query rewrite 기능은 버전 8i에서 추가되었다.[6]
Oracle에서 구체화된 보기를 생성하기 위한 구문 예:
만들다 구체화된 보기 MV_MY_VIEW 새로 고침 FAST 시작 와 함께 SYSDATE 다음 SYSDATE + 1 AS 선택 * From <table_name>; PostgreSQl
인 포스트그레SQL 버전 9.3 이상에서는 구체화된 뷰를 기본적으로 지원한다.[7] 버전 9.3에서 구체화된 뷰는 자동 리프레시되지 않으며, 생성 시에만 채워진다(단, 예외). WITH NO DATA 사용된다. 나중에 를 사용하여 수동으로 새로 고칠 수 있다. REFRESH MATERIALIZED VIEW.[8] 버전 9.4에서 새로 고침은 다음과 같이 구체화된 뷰에서 동시에 선택될 수 있다. CONCURRENTLY 사용된다.[9]
Postgre에서 구체화된 뷰를 작성하기 위한 구문 예제SQL:
만들다 구체화된 보기 MV_MY_VIEW [ 와 함께 (storage_message [= 가치를 매기다] [, ... ]) ] [ 테이블스페이스 tablespace_name ] AS 선택 * From <table_name>; SQL Server
Microsoft SQL Server는 "Indexed Views"라는 개념을 통해 구체화된 뷰를 구현한다는 점에서 다른 RDBMS와 다르다. 주요 차이점은 이러한 뷰는 뷰를 복합적으로 만드는 테이블의 원래 데이터와 항상 동기화되기 때문에 새로 고침이 필요하지 않다는 것이다. 이를 달성하려면, 출발지와 목적지의 선이 매핑에서 "결정론적"이어야 하며, 이것은 가능한 질의 유형을 제한한다. 이 메커니즘은 2000년 버전의 SQL Server 이후 실현되었다.
SQL Server에서 구체화된 뷰를 생성하기 위한 구문 예제:
만들다 보기 MV_MY_VIEW 와 함께 쉐마빈딩 AS 선택 COL1, SUM(COL2) AS 총계 From <table_name> 그룹 BY COL1; 바둑 만들다 유니크 군집화된 색인 XV 켜기 MV_MY_VIEW (COL1); 스트림 처리 프레임워크
Apache Kafka(v0.10.2 이후), Apache Spark(v2.0 이후) 및 Materialize[10] 모든 지원 데이터 스트림에 대한 구체화된 뷰 지원
다른이들
구체화된 뷰는 Sybase SQL Anywhere에서도 지원된다.[11] IBM DB2에서는 이들을 "구체화된 질의표"[12]라고 부른다. ClickHouse는 병합 시 자동으로 새로 고쳐지는 구체화된 뷰를 지원한다. [13] MySQL은 구체화된 뷰를 기본적으로 지원하지 않지만, 해결책은 트리거 또는 저장 프로시저를 사용하거나 오픈 소스 애플리케이션 Flexviews를 사용하여 구현할 수 있다.[15] 구체화된 뷰는 다이너모DB 스트림이 캡처한 데이터 수정 이벤트를 이용하여 아마존 다이너모DB에서 구현할 수 있다. 구글은 2020년[16] 4월 8일 베타 릴리스로서 빅쿼리에[17] 대한 구체화된 뷰의 가용성을 발표했다.
참조
- ^ 비교: C.J. Date (28 August 2006). The Relational Database Dictionary: A Comprehensive Glossary of Relational Terms and Concepts, with Illustrative Examples. "O'Reilly Media, Inc.". p. 59. ISBN 978-1-4493-9115-7. Retrieved 26 October 2016.
materialization[:] A somewhat unsophisticated technique for implementing operations on views according to which (a) the relational expression that defines the view is evaluated at the time the operation is invoked, (b) the view is thereby materialized, and (c) the operation in question is then executed against the relation so materialized.
- ^ Karen Morton; Kerry Osborne; Robyn Sands; Riyaj Shamsudeen; Jared Still (28 October 2013). Pro Oracle SQL. Apress. p. 48. ISBN 978-1-4302-6220-6.
- ^ Marie-Aude Aufaure; Esteban Zimányi (16 January 2012). Business Intelligence: First European Summer School, EBISS 2011, Paris, France, July 3-8, 2011, Tutorial Lectures. Springer Science & Business Media. p. 43. ISBN 978-3-642-27357-5.
- ^ Michael L. Gonzales (25 February 2003). IBM Data Warehousing: with IBM Business Intelligence Tools. John Wiley & Sons. p. 214. ISBN 978-0-471-45736-7.
- ^ C.J. Date (28 August 2006). The Relational Database Dictionary: A Comprehensive Glossary of Relational Terms and Concepts, with Illustrative Examples. "O'Reilly Media, Inc.". p. 59. ISBN 978-1-4493-9115-7. Retrieved 26 October 2016.
materialized view[:] Deprecated term for a snapshot. [...] The problem is [...] that (as the definition indicates) snapshots have come to be known, at least in some circles, not as snapshots at all but as materialized views. But snapshots aren't views; views are virtual and snapshots aren't, and 'materialized view' is a contradiction in terms (at least as far as the model is concerned). Worse yet, the unqualified term view is often taken to mean a materialized view specifically, and thus we're in danger of no longer having a good term for a view in the original sense.
- ^ Oracle8i Tuning Release 8.1.5. Ecst.csuchico.edu. 2012-02-09년에 검색됨
- ^ PostgreSQL: 구체화된 뷰. Wiki.postgresql.org (2010-05-07) 2013-09-25일에 검색됨.
- ^ PostgreSQL: 문서: 9.3: CREATE MATION View. PostgreSQL.com. 2014-01-25년에 검색됨
- ^ PostgreSQL: 설명서: 9.4: 새로 고침된 구체화 보기 PostgreSQL.com. 2015-01-23에 검색됨.
- ^ "CMU DB Talk: Building Materialize". Retrieved 26 June 2020.
- ^ 구체화된 뷰 – Wayback Machine에 2009-12-14년 Sybase SQL Anywhere 아카이브. Ianywhere.com. 2012-02-09년에 검색됨
- ^ SQL Server 2005 인덱싱된 뷰를 통한 성능 향상 Microsoft.com. 2012-02-09년에 검색됨
- ^ ClickHouse Documentation MaterializedView를 클릭하십시오. 클릭하우스.얀덱스. 2019-09-05에 검색됨
- ^ MySQL에서 구체화된 뷰 구현. Shinguz.ch (2006-11-06) 2012-02-09년에 검색됨
- ^ MySQL에 대한 Flexview – MySQL과 함께 점진적으로 새로 고칠 수 있는 구체화된 뷰. Flexviews.sourceforge.net. 2012-02-09년에 검색됨
- ^ "Release notes". Google.com. 8 April 2020. Retrieved 21 July 2021.
- ^ Google BigQuery Materialized Views 설명서 Google.com 2020-05-20년에 검색됨