2017-03-04 8 views
1

가상 테이블 문을 만들어 RAM에서만 테이블을 만듭니다? 그렇다면 RAM 장치가 적은 대형 데이터를 어떻게 처리 할 수 ​​있습니까?SQLite에서 가상 테이블 생성과 테이블 생성의 차이점은 무엇입니까?

sqllite에서 명령문 - 가상 테이블을 생성하는 메커니즘을 보여줍니다.

당신은 예에게 이상을 heres 쉽게 문하려면 다음

//Create a FTS3 Virtual Table 
    private static final String DATABASE_CREATE = 
     "CREATE VIRTUAL TABLE " + FTS_VIRTUAL_TABLE + " USING fts3(" + 
     KEY_CUSTOMER + "," + 
     KEY_NAME + "," + 
     KEY_ADDRESS1 + "," + 
     KEY_ADDRESS2 + "," + 
     KEY_CITY + "," + 
     KEY_STATE + "," + 
     KEY_ZIP + "," + 
     KEY_SEARCH + "," + 
     " UNIQUE (" + KEY_CUSTOMER + "));"; 
+0

FTS 테이블은 UNIQUE 같은 제약 조건을 무시합니다. –

답변

0

가상 테이블은 일반적인 메커니즘으로 구현되지 않습니다. 대신 모든 작업이 가상 테이블 모듈로 리디렉션됩니다.

실제로 의미하는 것은 가상 테이블 모듈이이를 구현하는 방법에 따라 달라집니다.

데이터베이스 외부에 저장된 데이터에 액세스하는 가상 테이블 모듈이 있습니다. 그러나 FTS의 경우 가상 테이블을 만들면 실제 테이블 데이터와 전체 텍스트 인덱스의 내용을 저장하는 동일한 데이터베이스에 여러 개의 shadow tables을 만들 수 있습니다. 이는 외부 데이터를 관리 할 필요가 없으며 모든 트랜잭션이 일반적인 트랜잭션 관리에 의해 자동으로 보호된다는 것을 의미합니다.

0

을 나는 documentation은 매우 분명하다 생각 :

는 가상 테이블은 외부 저장 또는 계산 엔진에 대한 인터페이스입니다 테이블로 보이지만 실제로는 정보를 데이터베이스 파일에 저장하지 않습니다.

가상 테이블 이 RAM에 상주 할 수 있습니다. 더 자주 그들은 일종의 디스크 파일이거나 다른 데이터베이스에 저장됩니다.

0

당신은이 링크에서 좋은 설명을 볼 수 SQL 문의 관점에서 https://sqlite.org/vtab.html

, 가상 테이블 오브젝트는 다른 테이블이나 뷰처럼 보인다. 그러나 뒤에서 가상 테이블에 대한 쿼리 및 업데이트는 데이터베이스 파일을 읽고 쓰는 대신 가상 테이블 개체의 콜백 메서드를 호출합니다.

가상 테이블은 메모리 내 데이터 구조를 나타낼 수 있습니다. 또는 SQLite 형식이 아닌 디스크의 데이터보기를 나타낼 수도 있습니다. 또는 응용 프로그램이 필요할 때 가상 테이블의 내용을 계산할 수 있습니다.