SQLite 모듈

Netezza 트랜잭션 외부에서 데이터를 지속할 수 있는 방법을 제공하기 위해 SQLite 데이터베이스가 nzLua 내부에 내장되어 있습니다. 이 기능의 주요 사용 사례는 디버그 로깅이지만, UDX에서 Netezza 데이터베이스로 직접 반환할 수 없는 조회 테이블이나 추가 데이터를 저장하는 데에도 사용할 수 있습니다(예: UDTF가 단일 결과 세트 대신 여러 개의 별개의 결과 세트를 반환해야 하는 경우).

SPUPad 기능은 일반적으로 이러한 목적에 더 나은 성능을 제공하지만, 각 트랜잭션이 끝날 때 SPUPad의 모든 데이터가 사라지는 반면 SQLite 데이터베이스의 데이터는 데이터베이스가 다시 시작되거나 s-blade가 실패할 때까지 남아 있습니다.

SQLite 데이터베이스에 저장할 수 있는 데이터의 최대 용량은 1GB 제한됩니다. 대규모 SQLite 데이터베이스는 삽입 중 인덱스 조회 및 인덱스 유지 관리를 위한 무작위 I/O 요청으로 인해 Netezza 데이터베이스의 전체 성능에 상당한 영향을 미칠 수 있습니다. SQLite 데이터베이스는 과도한 임의 입출력을 피하기 위해 가능한 경우 메모리에 캐시됩니다. 그러나 데이터베이스의 크기가 커지면 메모리를 사용할 수 없을 수도 있습니다. 이로 인해 많은 작은 I/O 요청이 발생하여 Netezza 데이터베이스의 순차적 읽기를 방해합니다.

각 데이터 슬라이스마다 고유한 SQLite 데이터베이스가 존재합니다. 동일한 데이터 슬라이스에서 동시에 실행되는 두 개의 UDX는 동일한 SQLite 데이터베이스에 액세스합니다. UDX는 SQLite 사용하여 데이터 슬라이스 간에 데이터를 공유할 수 없습니다. SQLite 데이터베이스는 행 수준 잠금을 지원하지 않습니다. 삽입, 업데이트 또는 삭제 문은 트랜잭션이 진행되는 동안 전체 SQLite 데이터베이스를 잠급니다. 기본적으로 SQLite 각 DML 문이 즉시 커밋되는 자동 커밋 모드로 작동합니다.

SQLite 지원하는 SQL 구문을 포함하여 SQLite 대한 자세한 설명서는 http://www.sqlite.org 에서 확인할 수 있습니다. nzLua UDX 내에서 SQLite 사용하는 몇 가지 예제는 ' /nz/extensions/nz/nzlua/examples/SQLite' 디렉터리에서 찾을 수 있습니다.