구슬이네 IT & Media / IT 와 미디어를 바라봅니다





출처 :

http://www.dbguide.net/knowledge.db?cmd=view&boardUid=149434&boardConfigUid=19&boardStep=&categoryUid=196



모바일 환경은 휴대성을 고려하기 위해서 한정된 자원을 사용해야 하는 많은 제약사항을 가지고 있다. 모바일 컴퓨팅 기기가 발전함에 따라서 기존과 같이 작은 용량을 가진 기기는 더 이상 찾아보기 힘들어졌으며, 메모리 기술이 발전함에 따라서 대용량을 지원하는 기기가 출현하게 되었다. 소용량의 메모리를 가지고 있는 기기의 경우에는 간단한 데이터 관리 시스템을 가지면 되었지만, 메모리가 커짐에 따라서 다루고자 하는 데이터가 많아지는 경우에는 안정성과 활용성을 고려한 데이터베이스 시스템이 사용되어야 한다. 이러한 모바일 환경상의 요구사항을 만족시키기 위한 데이터베이스 솔루션으로 대표적인 것이 SQLite이다. SQLite는 구글의 안드로이드나 애플의 아이폰 등에서 사용되는 솔루션으로 사용자 측면과 관리자 측면에서 모두 뛰어난 접근성을 가지고 있는 데이터베이스 관리 시스템이다. SQLite에 대해서 총 세 가지 이야기로 이루어지며, 지금의 두 번째 이야기에서는 SQLite의 내부 구조와 성능을 다루도록 한다.




SQLite는 SQL을 임베디드 환경에서 사용할 수 있도록 시스템에 최적화시킨 버전으로서 임베디드 시스템이 요구하는 적은 자원을 활용하면서 최고의 성능을 발휘할 수 있도록 하였다. 임베디드 시스템이 요구하는 조건들을 만족시킬 수 있기 때문에 많은 업체들이 SQLite를 임베디드 제품의 데이터베이스 솔루션으로 사용하고 있다. SQLite는 모바일 기기/플랫폼에서도 많이 사용되고 있으며, 모바일 기기 제조 대표업체인 심비안(Symbina)으로부터도 지원을 받고 있으며, 파이어폭스(Firefox)로 유명한 모질라(Mozilla)로부터도 지원을 받고 있다.
SQLite의 적용대상은 다음과 같다. 첫째로는 어플리케이션의 데이터 저장소로 사용되며, 둘째로 휴대용 모바일 기기를 위한 데이터베이스로서 사용될 수 있다. 셀룰러 폰, PDA, MP3 등의 다른 전자제품(전자 가제트)의 데이터베이스 엔진으로 사용가능하다. 왜냐하면 작은 풋-프린트(Footprint)를 가지면서, 메모리와 디스크 용량, 디스크 대역폭(Bandwidth)를 사용하기 때문이다. 이렇게 자원들을 적게 차지하면서 매우 높은 안정성을 가지기 때문에 유용하다. 셋째로 웹사이트의 데이터베이스로 사용될 수 있다. 디스크 파일에 별도의 설정을 할 필요 없고, 정보를 저장할 필요도 없으므로 중간 규모의 웹사이트 구성 시에 유용하게 사용될 수 있다.
SQLite는 www.sqlite.org라는 SQLite 홈페이지에서 소스 코드 및 실행 바이너리를 다운 받을 수 있다. SQLite 소스 릴리즈는 웹을 통해서 행해지며, 그 위치는 ‘http://www.sqlite.org/download.html’이다.

SQLite는 임베디드 기기에 최적화된 DB 솔루션이지만, FTS(Full Text Search)와 ODBC(Open DataBase Connectivity)를 모두 지원한다. ODBC는 SQL 액세스 그룹의 CLI(Call Level Interface)를 기반으로 한다



■ [참고] CLI(Call Level Interface)
CLI(Call Level Interface)는 ISO/IEC 9075-3:2003에서 정의된 소프트웨어 표준이다. 어떻게 프로그램이 SQL 쿼리문을 DBMS(DataBase Management System)로 전송하는 지와 반환된 레코드 셋 들이 어떻게 어플리케이션에 의해서 다루어지는지에 대한 정의를 나타낸다. CLI를 통해서 다양한 어플리케이션 개발자들이 여러 가지 다른 환경에서도 효율적인 개발이 가능하며, SQL/CLI는 SQL 데이터베이스에 접근하기 위한 표준 인터페이스를 제공한다.

SQLite는 다음과 같은 임베디드 시스템을 위한 요구사항을 만족하는 DB 솔루션이다.

- 사용자가 사용하기 용이 할 것
- 관리가 용이할 것
- 갑작스런 외부 오류에 둔감할 것
- 여러 가지 플랫폼에 모두 적용 가능할 것
- 작은 풋-프린트(Footprint)를 가질 것

SQLite가 가지는 가장 큰 특성 3가지는 다음과 같다. 서버를 필요로 하지 않기 때문에 시스템 내에서 별도의 자원을 사용할 필요가 없으며, 다른 솔루션과 달리 설정이 필요 없으므로 사용자가 사용하기 편리하다. 또한 트랜잭션 처리가 이루어지므로, 데이터의 무결성을 보장해 줄 수 있다. 하지만, 이러한 구조를 통해서 장점뿐만 아니라 단점을 가질 수도 있는데, 여러 개의 어플리케이션이 동일한 데이터베이스에 접근하고자 할 때 어플리케이션 레벨에서 접근에 대한 조정이 필요할 수 있다는 점이 이례이다. 서버를 사용하는 경우에는 서버에서 여러 개의 어플리케이션이 요청하는 데이터베이스 접근을 자동으로 제어해주기 때문에 어플리케이션 개발자는 이러한 고려를 할 필요가 없다. 물론 사용자가 이러한 역할을 수행할 수 있는 서버를 구성한다면 문제는 쉽게 해결될 것이다.
SQLite의 주요 특성은 다음과 같다. 많은 장점을 활용하여 SQLite는 데스크탑 컴퓨터로부터 PDA, 셀룰러 폰, MP3 플레이어에 이르기 까지 많은 기기에 데이터베이스 솔루션으로 적용될 수 있다.




SQLite의 적용대상은 다음과 같다. 첫째로는 어플리케이션의 데이터 저장소로 사용될 수 있으며, 둘째로 휴대용 모바일 기기를 위한 데이터베이스로서 사용될 수 있다. 셀룰러 폰, PDA, MP3 등의 다른 전자제품(전자 가제트)의 데이터베이스 엔진으로 사용가능하다. 왜냐하면 작은 풋-프린트(Footprint)를 가지면서, 메모리와 디스크 용량, 디스크 대역폭(Bandwidth)를 사용하기 때문이다. SQLite는 자원들을 적게 차지하면서 매우 높은 안정성을 가지기 때문에 유용하다. 셋째로 웹사이트의 데이터베이스로 사용될 수 있다. 디스크 파일에 별도의 설정을 할 필요 없고, 정보를 저장할 필요도 없으므로 중간 규모의 웹사이트 구성 시에 유용하게 사용될 수 있다. 마지막으로 엔터프라이즈 RDBMS용으로도 사용될 수 있다. 정리하면, SQLite는 빠르고, 별도의 셋업 및 런칭이 필요 없기 때문에 다음과 같은 용도로 사용될 수 있다.



SQLite가 이렇게 다양한 용도로 사용되면, 다수의 어플리케이션이 SQLite 데이터베이스를 사용하는 경우가 발생한다. 그러면, SQLite는 동시에 하나의 데이터베이스파일에 여러 개의 어플리케이션 또는 동일한 어플리케이션의 여러 개 인스턴스(Instance)를 통해서 접근할 수 있을까? 여기서의 해답은 '예스(Yes)'이다. 여러 개의 프로세스가 동일한 데이터베이스를 동시에 열 수 있다. Sqlite2 버전은 동시에 여러 유저가 읽을 수 있도록 허용했으나 쓰는 것은 허용하지 않았지만, sqlite3는 읽기와 쓰기 모두에 동시 접근을 허용한다.

이후 .....