• 빠르게 활용하는 모바일 데이터베이스 SQLite 3

  • 우상정, 신호철 지음

  • 임베디드 & 모바일 시리즈 _ 012, 데이터 & 데이터베이스 시리즈 _ 002
  • ISBN: 9788992939775
  • 25,000원 | 2011년 05월 12일 발행 | 384쪽



리차드 힙의 주도하에 개발된 SQLite3는 안드로이드, 아이폰에서 채택되면서 모바일 환경에서 가장 널리 사용되는 데이터베이스로 자리매김했습니다. 개발 초창기부터 임베디드 환경을 고려했기 때문에 SQLite3는 다른 데이터베이스의 대부분의 기능을 지원하면서도 상대적으로 라이브러리 크기가 작고, 메모리가 적은 환경에서도 뛰어난 성능을 발휘합니다. 또한 오픈소스 형태로 코드가 공개돼 있으며, 특별한 라이선스 없이 무료로 사용 가능해서 모바일 분야를 넘어서서 이제는 다양한 분야에서 활용되고 있습니다.

외국에는 별도의 서적으로 이미 SQLite3 서적이 출간됐음에도 아직까지 국내에서는 아이폰이나 안드로이드 서적에서 한두 장 정도의 분량으로 설명하는 데 그치고, 다루는 범위 또한 API 수준의 사용법에 머무는 경우가 대부분이었습니다. 또한 설계나 구현 단계에서 SQLite3에 관해 충분히 검토하지 못하고 추후에 성능 이슈나 최적화 문제로 고생하는 개발자를 많이 봐왔습니다.

그런 까닭에 이 책을 집필하면서 필자가 특히 신경 쓴 부분은 다음과 같습니다.

  • 주요 장을 기본편과 고급편으로 분리해서 개발자가 각 상황에 맞게 SQLite3을 익히고 활용할 수 있게 했습니다.
  • 개발자 관점에서 바라본 API 사용법과 시스템 관점에서 바라본 최적화 기법을 모두 다룹니다.
  • 새로운 기능이 많이 추가된 최신 버전의 SQLite3에 중점을 두면서 FTS와 같은 확장 기능과 안드로이드, 아이폰과 같은 플랫폼에서 사용하는 방법도 다룹니다.

이 책은 데이터베이스를 학습하기 위한 개론서라기보다는 SQLite3을 좀더 효율적으로 사용하기 위한 실용서에 가까워서 많은 개발자 여러분에게 큰 도움이 되리라 확신합니다.

SQLite는 무료로 사용할 수 있는 데이터베이스로서, 가볍고 속도가 빠르며 사용하기도 쉬워서 모바일 기기에 적합한 환경을 제공합니다. 하지만 기존 데이터베이스와는 다른 몇 가지 특징과 제약사항을 지니고 있어서 활용에 앞서 이러한 제약사항을 정확히 이해해야 합니다.

SQLite의 최신 기능과 최신 플랫폼상에서의 SQLite 사용법을 다룬 이 책은 여러분의 목표를 달성하는 데 큰 도움을 줄 것입니다. ‘빠르게 활용하는 모바일 데이터베이스 SQLite3’에서는 SQLite를 활용하기 위한 SQL 문법 및 C API의 다양한 사용법과 함께 다음과 같은 사항을 익힐 수 있습니다.

  • 임베디드 기기를 위한 SQLite 최적화
  • 안드로이드, 아이폰에서의 SQLite 활용
  • SQLite 관리 도구 활용
  • 실전에서 활용 가능한 최적화 기법

신호철

KAIST를 석사로 졸업하고 책임연구원으로 임베디드용 음성인식 개발, 잉크 검색 애플리케이션 개발, 임베디드용 데이터베이스 개발, 지능형 웹 검색 소프트웨어 개발, SLP 등의 과제를 거쳐 현재는 휴대전화 플랫폼을 개발 중이다. 저서로는 ‘빠르게 활용하는 파이썬 3 프로그래밍’, ‘IT Cookbook for Beginner C 기초’ 등이 있다.

우상정

개발은 기술이 아니라 사람이 하는 것이란 생각에, 사람을 공부하는 프로그래머다. 게으름이 천성이라 쉬운 스크립트 언어로 업무를 즐기며, 딸 아이의 재롱과 급변하는 신기술에 자주 매료되곤 한다. 임베디드 데이터베이스 개발, 모바일용 검색 엔진 개발, 모바일 플랫폼 개발에 참여했으며, 현재는 KAIST에서 학술연수 중이다. 저서로는 ‘빠르게 활용하는 파이썬 3 프로그래밍’이 있으며, ‘소프트웨어 아키텍트가 알아야 할 97가지’ 번역에 참여했다.

 

감수의 글

권동섭, 명지대학교 컴퓨터공학과 교수

데이터베이스를 전공하고, 한때 SQLite와 유사한 데이터베이스 엔진을 만드는 일에 참여한 계기로 SQLite을 일찍부터 접하게 되었습니다. 우선 이 정도 규모의 데이터베이스가 있다는 사실에 놀랐고, 상용 데이터베이스 시스템 못지않은 성능에 놀랐고, 라이선스 자체가 없이 소스 코드까지 공개돼 있다는 사실에 놀랐습니다. 이런 장점을 지니고 있다 보니 현재 SQLite는 iOS나 안드로이드와 같은 임베디드 데이터베이스 분야를 석권한 최고의 강자가 되었습니다. 가볍고 빠르면서도 사용하기 쉽고, 게다가 무료라니, 무엇보다 iOS, 안드로이드, 레일즈 등 최근 각광받는 여러 개발 환경에서 기본적으로 제공되고 있으니 SQLite가 관심의 대상이 되지 않을 수 없는 상황이 되었습니다. 하지만 SQLite를 소개하는 번역서조차 마땅히 없는 상태에서 이렇게 좋은 책을 만나게 되어 반갑습니다.

이 책에서 가장 마음에 드는 점은 SQLite의 기능이나 사용법에만 초점을 맞추지 않고, 데이터베이스의 기본적인 개념과 원리들까지 체계적으로 설명하고 있다는 점입니다. 많은 데이터베이스 관련 도서들이 이러한 부분을 놓치고 있어서 안타까웠습니다. SQL 등의 기술 덕분에 데이터베이스를 사용하는 것은 쉬워졌지만, 사실 데이터베이스는 꽤 기본기가 필요한 분야입니다. 실제 업계의 사례들을 분석하다 보면 아주 기본적인 데이터베이스 이론조차 잘 모르거나 무시되고 있는 경우가 많고, 이것이 개발된 시스템의 성능 저하나 오류 등의 주요 원인인 것을 종종 발견합니다. 하지만 대학 교재에서나 사용될 만한 데이터베이스 이론 서적들은 너무 어렵고 복잡해서 실제 응용 환경에서 당장 활용하기 힘들고, 오라클이나 MySQL 등과 같은 특정 데이터베이스 사용과 관련된 응용 도서들은 시스템 사용법이나 활용에만 치우쳐 있어서 아쉬웠습니다. 하지만 이 책은 오랜 기간 실무에서 다져진 적절한 균형 감각을 통해 이론과 활용이라는 두 마리 토끼를 훌륭하게 잡고 있습니다. 이 부분은 SQLite와 관련된 해외 도서에도 찾을 수 없는 이 책만의 장점입니다.

SQLite를 제대로 활용하고자 하시는 분들이라면 이 책이 분명 큰 도움이 되리라 믿습니다. 앞으로도 이런 좋은 책을 자주 만날 수 있기를 기대합니다.

  • Part 01. SQLite 소개
    • 주요 특징
    • 주요 사용처
    • SQLite3의 제약사항
    •  
  • Part 02. SQLite3 설치
    • 윈도우 환경에서의 SQLite3 설치와 사용
    • 리눅스 환경에서의 SQLite3 설치와 사용
    •  
  • Part 03. SQL
    • SQL 기본
    • SQLite3의 자료형
    • 테이블의 생성과 삭제
    • 레코드 입력
    • 레코드 조회(SELECT)
    • 레코드 수정(UPDATE)
    • 레코드 삭제(DELETE)
    • 내장 함수
    • 그룹화
    •  
  • Part 04. SQL 고급
    • 관계형 데이터베이스 설계
    • 기본키
    • 외래키
    • 중첩 질의
    • 조인 연산
    • 인덱스(Index)
    • 테이블 제약조건
    • 뷰(VIEW)
    • 트리거
    • 테이블 수정(ALTER TABLE)
    • 트랜잭션
    • 다른 데이터베이스 파일 연결
    • 동적 자료형
    •  
  • Part 05. SQLite3 C API 기초
    • 데이터베이스 연결
    • SQL 구문 실행 : sqlite3_exec() 활용
    • SQL 구문 실행 : sqlite3_get_table() 활용
    • SQL 구문 실행 : sqlite3_prepare(), sqlite3_step(), sqlite3_finalize() 활용
    •  
  • Part 06. SQLite3C API 고급
    • 잠금 상태 확인 : sqlite3_busy_handler()
    • 커밋 여부 확인 : sqlite3_commit_hook()
    • 롤백 여부 확인 : sqlite3_rollback_hook()
    • 업데이트 여부 확인 : sqlite3_update_hook()
    • 권한 체크 : sqlite3_set_authorizer()
    • 이스케이프 처리 : sqlite3_mprintf()
    • 가변인자를 이용한 이스케이프 처리 : sqlite3_vmprintf()
    • 사용자 정의 함수 : sqlite3_create_function()
    • 사용자 정의 정렬 함수 : sqlite3_create_collation()
    • SQL 문의종료 d5여부 확인 : sqlite3_complete()
    • 자동 커밋 모드 확인 : sqlite3_get_autocommit()
    • 최근 ROWID 확인 : sqlite3_last_insert_rowid()
    • 라이브러리 버전 확인 : sqlite3_libversion()
    • 메모리 사용량 체크 : sqlite3_memory_used()
    • SQL 문 확인 : sqlite3_sql()
    • 연결 공유 : sqlite3_enable_shared_cache()
    •  
  • Part 07. 임베디드 SQLite3 최적화
    • 실행계획을 통한 질의 최적화
    • 데이터베이스 파일 크기 최적화
    • 페이지 크기 최적화
    • 데이터베이스 파일 검사
    • 엄격한 자료형 검사
    • 데이터베이스 갱신과 트랜잭션
    • 저널 모드와 트랜잭션 성능 향상
    • 메모리 데이터베이스
    • 테이블 제약조건의 충돌 처리
    • 외래키 제약조건의 확장
    • SQLite3 설정 변경
    • 전문 검색
    •  
  • Part 08. 파이썬과의 연동
    • pysqlite 모듈
    • 데이터베이스 연결
    • SQL문 실행
    • 데이터 조회
    • 트랜잭션 처리
    • 예제-SQLite 실행 관리자
    •  
  • Part 09. 아이폰에서의 SQLite3 활용
    • UI 만들기
    • SQLite 연결
    •  
  • Part 10. 안드로이드스와 데이터베이스
    • 데이터베이스 관련 클래스
    • 안드로이드 데이터베이스 애플리케이션
    •  
  • 부록 A. Sqlite3 커맨드 라인 도구
    • 셸 모드
    • 인자 전달 모드
    •  
  • 부록 B. SQLite 관리 도구
    • SQLite Manager
  • 138쪽, CREATE TABLE 예제에서 6번째 줄

    gender TEXT -- 성별 --> gender TEXT, -- 성별

예제코드 관련 GitHub 페이지

관련 글


엮인 글

엮인 글 주소: http://wikibook.co.kr/sqlite-3/trackback/