SQLite 소개 및 특징
- Public Domain Software
: 저자가 모든 사람들과 공유할 목적으로 그 권리를 주장하지 않는 프로그램.
다른 프로그램들의 구성 요소로 제한 없이 사용될 수 있다.
- SQLite 는 오픈소스(공공재) 이므로 상업적, 개인적으로 자유롭게 사용가능.
- 설치시 Setup 이나 Admin 설정이 없다.
- SQLite 는 임베디드 SQL 데이터베이스 엔진.
- 대부분의 SQL 데이터베이스들과는 달리 SQLite 는 독립적인 서버 프로세스를 가지고 있지 않다.
- 데이터 베이스 파일이 1 개의 파일로 구성 된다.
- SQLite 는 일상적인 디스크 파일에 직접 읽고 쓴다.
(멀티플 테이블, 인덱스, 트리거, 뷰 를 갖춘 완벽한 SQL 데이터베이스를 하나의 디스크 파일에 포함)
- 모든 특성이 가능하도록 설정하면 라이브러리 크기를 250KB 크기로 줄일 수 있다.
(선택적 특성을 제거하면 180KB 정도의 라이브러리 크기를 갖는다.)
- SQLite 는 최소의 스택 공간(16KB) 에서 사용하도록 만들 수 있다. 또한 매우 작은 힙 크기(100KB) 를 사용한다.
(휴대전화, PDA, MP3플레이어와 같은 작은 메모리 가젯에 적합한 데이터베이스 엔진)
- SQLite 는 일반적으로 더 많은 메모리를 주면 매우 빠르게 동작한다.
작은 메모리 환경에서도 좋은 성능을 보여준다.
- SQLite 는 신뢰성이 높다.
- API 개수가 적고, 간단하게 사용할 수 있다.
- SQL92의 대부분을 지원한다.
cf)SQL92
- 표준 SQL(ANSI/ISO SQL) 을 말함
- 1992년도에 제정되어서 SQL92 라고 말함.
- SQL2, SQL/92, SQL-92 로 쓰이기도 함.
지원하지 않는 리스트는 홈페이지에 정리되어 있음.
- ACID(Atomic, Consistent, Isolate, Durable) 보증
트랜젝션은 시스템 파괴와 전원 이상에도 원자성, 일관성, 독립성, 지속성(ACID)을 유지한다.
- 무설정 : 설치와 관리가 필요 없다.
- ANSI-C 로 짜여져 있다. TCL 바인딩을 포함, 가능한 독립적으로 다양한 언어에
대한 바인딩을 포함한다.
- 99% 이상 테스트가 진행된 주석이 잘 처리된 코드 이다.
- 사용자는 하나의 ANSI-C 소스코드 파일처럼 가능한 쉽게 다른 프로젝트에 뺄 수
있다.
- 자체 포함 : 외부 의존성이 없다.
- 크로스 플랫폼 지원
-특히 리눅스(유닉스) MacOS X, OS/2, Win32 그리고 Win32를 지원한다.따라서 다른 시스템으로 포팅하기 쉽다.
- 32bit/64bit 시스템간, 리틀인디언/빅인디언 아키텍처간 데이터베이스로 자유롭게 복사 가능
- 독립적인 커맨드 라인 인터페이스(CLI) 클라이언트를 SQLite 데이터 베이스 관리에 이용할 수 있다.
- Byte order 에 관계없이 데이터 파일의 공유가 가능
- 2 테라 바이트 크기의 데이터 파일 생성지원
- 효율적인 메모리 사용 : 25K 라인 정도의 C코드로 이루어져 있다.
- TCL, Perl, PHP, .NET, Java, Python, SmalTalk, Ruby 등의 다양한 언어지원
- 다른 라이브러리등의 도움없이 작동된다. libsqlite.so 와 sqlite 2개의 파일이면
작동 환경을 만들 수 있다.
- SQLite 는 서버/클라이언트 모델을 지원하는 RDBMS 가 아니다. 로컬에서만 사용
가능하며, 인터넷 응용을 원한다면 별도의 서버 프로그램을 만들어야 한다.
■ 잘 알려진 사용자
■ 사용 가능한 SQL 문장
ALTER TABLE
ANALYZE
ATTACH DATABASE
BEGIN TRANSACTION
comment
COMMIT TRANSACTION
COPY
CREATE INDEX
CREATE TABLE
CREATE TRIGGER
CREATE VIEW
DELETE
DETACH DATABASE
DROP INDEX
DROP TABLE
DROP TRIGGER
DROP VIEW
END TRANSACTION
EXPLAIN
expression
INSERT
ON CONFLICT clause
PRAGMA
REINDEX
REPLACE
ROLLBACK TRANSACTION
SELECT
UPDATE
VACUUM
■ 사용 불가능한 SQL 문장
FOREIGN KEY constraints
Complete trigger support
Complete ALTER TABLE support
Nested transactions
RIGHT and FULL OUTER JOIN
Writing to VIEWs
GRANT and REVOKE
■ SQLite 의 적절한 사용 처
SQLite 의 거의 모든 SQL database 엔진과 달리, 간단함을 주 디자인 목적으로 한다.
- 관리의 간단함
- 운영의 간단함
- 큰 프로그램에 간단하게 포함되기
- 유지와 커스터마이징의 간단함
■ SQLite 가 잘 작동하는 환경
- 프로그램 파일 포멧
- 임베디드 디바이스와 프로그램들
- Website
- 내부 또는 임시 데이터 베이스
- 커맨드라인 데이터셋 분석 툴
- 데이터베이스 교육
- SQL 언어 확장에 대한 시험
- 데모 또는 테스트 기간 동안 엔터프라이즈 데이터베이스의 대체
■ SQLite 가 부적절한 환경
- Client/Server Program
: 많은 client 프로그램이 네트워크를 통해서 데이터 베이스에 접근하는 경우
이럴 경우 SQLite 의 Performance 가 좋지 않다.
- 볼륨이 큰 Website
- 높은 동시 접속
: SQLite 는 전체 database 에 대해 reader/writer locks 을 사용한다.
따라서 어떤 프로세스가 database 의 특정 부분을 읽기 있을 때, 다른 모든 프로세스
는 database 의 쓰기가 금지 된다. 비슷하게 한 프로세스가 database 의 특정 부분을
쓰고 있다면 다른 모든 프로세스는 읽기가 금지 된다.
모든 경우에서 이 같은 점은 문제가 되지 않는다. 어플리케이션이 빠른 속도로 data-
base 에 작업을 한다면. 그러나 엄격한 동시성을 요구하는 어플리케이션에서는 문제가
될 수 있다. 이런 어플리케이션은 다른 database 엔진을 찾기를 권한다.
※ 참고 URL
1. SQLite 홈페이지
http://www.sqlite.org/index.html
2. SQLite 홈페이지 개인 번역 블로그
http://kjh0523.springnote.com/pages
3. SQLite Programming
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/SQLite/Document/article_article_SQLite_%C7%C1%B7%CE%B1%D7%B7%A1%B9%D6
4. SQLite Windows
http://www.joinc.co.kr/modules/moniwiki/wiki.php/SQLite%20Windows
5. SQLite 이야기
http://www.redwiki.net/wiki/wiki.php/SQLite%20%C0%CC%BE%DF%B1%E2
6. SQLite 소개
http://shinyoung.kr/310