초록
일반적으로 데이터베이스 시스템에서의 질의 수행은 대부분의 경우 빠른 응답시간과 더 적은 메모리 사용량을 장점으로 가지는 파이프라이닝 기법으로 이루어진다. 이 때, 질의 수행 계획(QEP)의 각각의 연산 노드들은 Open(), Next(), Close() 함수들을 지원하는 iterator의 인터페이스를 가진다. 그런데, 플래시 메모리 기반의 휴대용 기기들을 위한 임베디드 데이터베이스 시스템에서는 iterator의 Next() 함수뿐만 아니라, 현재 레코드의 이전 레코드를 리턴해주는 Previous()와 같은 함수를 필요로 하는 경우가 많다. 이는 임베디드 환경의 경우 각각의 프로그램이 사용할 수 있는 메모리의 양이 제한적이므로, 사용자가 이전 레코드를 요청하는 경우, 결과 레코드 커서가 현재 레코드를 기준으로 이전 레코드를 다시 가져와야 하기 때문이다. 본 논문에서는 이러한 임베디드 데이터베이스 시스템의 질의 수행 시 각각의 연산 노드들이 Next() 함수뿐만 아니라 Previous() 함수를 블록 단위로 지원할 수 있도록 새롭게 설계 구현하는 과정에서 발생하는 방향 전환 문제를 소개하고 이를 해결하기 위한 블록 단위 스키핑 기법을 제안한다.
Today, most of all the query processors in the world generally use the 'Pipelining' method to acquire fast response time (first record latency) and less memory usage. Each of the operator nodes in the Query Execution Plan (QEP) provides Open(), Next(), and Close() functions for their interface to facilitate the iterator mechanism. However, the embedded database systems for the mobile devices, based on the FLASH memory, usually require a function like Previous(), which returns the previous records from current position. It is because that, in the embedded environment, the mobile devices cannot fully provide it main memory to store all the query results. So, whenever needed the previously read records the user (program) should re-fetch the previous records using the Previous() function: the BACKWARD data fetch. In this paper, I introduce the 'Direction Switching Problem' caused by the Previous() function and suggest 'Block-wise Skipping' method to fully utilize the benefits of the block-based data transfer mechanism, which is widely accepted by most of the today's relational database management systems.