Top

안드로이드 데이터베이스 [실전에 바로 적용할 수 있는 안드로이드 지침서]

  • 원서명Android Database Best Practices (ISBN 9780134437996)
  • 지은이아담 스트라우드(Adam Stroud)
  • 옮긴이오세봉, 김기환
  • ISBN : 9788960779952
  • 30,000원
  • 2017년 03월 23일 펴냄
  • 페이퍼백 | 316쪽 | 188*235mm
  • 시리즈 : 모바일 프로그래밍

책 소개

이 책에서 다루는 내용

■ SQLite 데이터베이스와 다른 관계형 데이터베이스의 차이점
■ SQL DDL를 통한 데이터베이스 구조화 및 DML를 이용한 데이터 조작
■ SQLite 데이터 타입 정의
■ 빠르고 효율적인 접근을 위한 데이터의 구조적 저장
■ 데이터베이스 생성, 조회, 수정, 삭제(CRUD) 연산 및 질의
■ 콘텐트 프로바이더를 이용한 앱 간 데이터 공유
■ 스레드 문제 처리 및 데이터의 효과적 표시
■ 새로운 액티비티나 서비스 시작 시 안드로이드 인텐트 API를 이용한 액티비티 간 데이터 전달
■ 앱과 원격 웹 API 간 통신 방법
■ 앱-서버 통신 관리 및 일반적인 문제 회피
■ 안드로이드 데이터 바인딩 API를 사용한 코드 축소 및 성능 향상

이 책의 대상 독자

안드로이드 앱을 조금이나마 만들어본 개발자를 위한 책이다. 특히 기본적인 안드로이드 컴포넌트(액티비티(Activity), 프래그먼트(Fragment), 인텐트(Intent), 애플리케이션 매니페스트(Manifest))를 이해하고 있고, 안드로이드 스레드(Thread) 모델에 익숙하다면 더욱 도움이 될 것이다. 관계형 데이터 시스템에 대한 지식이 있다면 더욱 도움이 되겠지만, 이 책에서 다룰 내용을 이해하는 데 반드시 필요한 것은 아니다.

이 책의 구성

이 책은 관계형 데이터베이스 이론과 관계형 모델의 역사, 이 모델이 어떻게 탄생했는지에 대한 논의로 시작한다. 그리고 구조화 질의어(SQL)를 거친 후 SQL을 사용해 어떻게 데이터베이스를 구축하고 다루며 조회하는지 알아볼 것이다. SQL을 논의할 때 안드로이드에 특화된 설명도 있지만 안드로이드에 특화되지 않은 일반적인 SQL을 주로 다룰 것이다.
SQLite에 관한 정보와 안드로이드와 어떤 관련이 있는지도 알아볼 것이다. 또한 이 책은 데이터베이스와 상호작용할 수 있는 안드로이드 API와 데이터베이스 모범 사례를 다뤘다.
데이터베이스, SQL, SQLite 기초와 함께 안드로이드 앱 개발자가 흔히 데이터베이스를 사용하면서 직면하는 문제에 대한 해결책도 다루었다. 스레드, 원격 데이터 접근, 데이터 표시와 같은 주제도 포함했다. 그리고 콘텐트 프로바이더(Content Provider)를 기반으로 하는 데이터베이스 접근 층에 대한 예제도 다루었다.
다음은 각 장의 내용을 간략히 설명한 것이다.
1장, ‘관계형 데이터베이스’에서는 관계형 데이터베이스를 소개하고 관계형 모델이 왜 과거의 데이터베이스 모델보다 인기가 많은지 알아본다.
2장, ‘SQL 들어가기’에서는 일반적인 데이터베이스와 관련하여 SQL을 설명한다. 이 장은 데이터베이스 구조를 만드는 SQL 언어에 대해 배우고, 데이터베이스 내부의 데이터를 다루는 기능을 논의한다.
3장, ‘SQLite 들어가기’에서는 SQLite 데이터베이스 시스템의 세부사항을 설명하고, 다른 데이터베이스 시스템과 어떻게 다른지 비교한다.
4장, ‘안드로이드 SQLite’에서는 안드로이드 앱을 위해 상주하는 데이터베이스 같은 안드로이드에 특화된 SQLite를 다룬다. 또한 이 장에서 앱의 외부로부터 데이터베이스에 접근하는 방법을 다룬다. 이 부분은 디버깅 시 중요할 수 있다.
5장, ‘안드로이드 데이터베이스와 작업하기’에서는 데이터베이스를 다루는 안드로이드 API를 알아보고 어떻게 앱에서 데이터를 받고 데이터베이스에 저장하는지를 알아본다.
6장, ‘콘텐트 프로바이더에서는 안드로이드에서 데이터 접근 메커니즘인 콘텐트 프로바이더 사용법을 알아보고, 언제 사용하는지 알아본다.
7장, ‘데이터베이스와 UI’에서는 로컬 데이터베이스로부터 데이터를 가져와 어떻게 사용자에게 보여주는지 소개한다. 안드로이드에 존재하는 스레드 문제를 다룬다.
8장, ‘인텐트로 데이터 공유하기’에서는 콘텐트 프로바이더 외의 방법으로 인텐트를 이용하여 앱 간에 데이터를 공유할 수 있는 방법을 알아본다.
9장, ‘웹 API와 커뮤니케이션’에서는 앱과 원격 웹 API간 양방향 커뮤니케이션을 위한 메서드와 도구들을 알아본다.
10장, ‘데이터 바인딩’에서는 데이터 바인딩 API로 어떻게 UI를 표현할 수 있는지 알아본다. 또한 관련 API도 살펴본다. 이 장에서 데이터베이스로부터 데이터를 보여주는 방법을 예제를 통해 알아본다.

저자/역자 소개

지은이의 말

최근 모바일 디바이스의 폭발적 증가는 모바일 앱의 수와 복잡성을 증가시켰다. 단순한 앱을 위한 플랫폼이 이제는 여러 가지 기능을 수행하는 많은 앱을 포함하고 있다. 모바일 디바이스가 다양한 데이터 소스로부터 많은 양의 데이터를 받을 수 있게 됐기 때문이다. 이에 따라 데이터를 효율적으로 저장하고 조회하는 것에 대한 요구가 점차 증가하고 있다.
전통적인 소프트웨어 시스템에서는 많은 양의 데이터를 데이터베이스에 저장하는데, 이 데이터베이스는 요청에 따라 데이터를 저장하고 조회하는 데 최적화돼 있다. 안드로이드 또한 이와 똑같은 기능을 제공하는 SQLite라는 데이터베이스 시스템을 갖추고 있다. SQLite는 요즘 앱에 맞는 기능을 지원할 뿐만 아니라 자원이 제한된 여러 모바일 디바이스 환경에서도 잘 작동한다. 이 책은 안드로이드에 내장된 데이터베이스 시스템을 어떻게 사용하는지에 대해 설명할 것이다. 그리고 실제 안드로이드 앱을 만들 때 맞닥뜨리게 될 문제에 대해서도 다룰 것이다.

지은이 소개

아담 스트라우드(Adam Stroud)

2010년부터 안드로이드 앱을 개발해 온 안드로이드 개발자다. Runkeeper, Mustbin, Chef Nightly와 같은 스타트업에서 근무했으며, 처음부터 안드로이드 개발을 이끌어왔다. 안드로이드와 오픈소스에 대해 강한 열정이 있고, 안드로이드에 관련된 모든 것에 흥미를 느끼고 있다.
또한 그는 안드로이드 개발 서적을 집필해왔고, 안드로이드 디바이스의 루트 접근 부여와 같은 넓은 주제를 가지고 대화하는 것을 즐긴다. 안드로이드 단체의 일원이 되는 것을 좋아하며, 괴짜 같은 안드로이드의 광팬들과 함께 지내기도 한다.
현재 새로운 스타트업의 기술 공동 창립자로서 안드로이드 개발과 감독을 맡고 있다.

옮긴이의 말

1인 1스마트폰 시대에 안드로이드는 생활 속 깊숙이 파고들었고 스마트폰 시장에서 빼놓을 수 없는 플랫폼의 선두주자로 자리매김 했다. 또한 스마트폰을 넘어 패스트푸드 무인 계산기, 지하철, 쇼핑몰의 옥내 광고, 레스토랑 전자 메뉴판 등 주변의 다양한 머신에서 안드로이드를 볼 수 있는 광경도 이제 낯설지가 않다. 하지만 누구든지 안드로이드를 개발할 수 있는 접근성은 낮아졌으나 안드로이드의 높은 이해도가 필요하다.
모바일 데이터베이스는 엔터프라이즈급 데이터베이스의 데이터 양과 복잡한 관계를 갖지 않지만 클라이언트 데이터의 관리도 소홀히 할 수 없다. 이를 위해서는 클라이언트의 데이터베이스의 특성을 제대로 이해하고 파악해야 견고하고 효율적인 애플리케이션을 작성 할 수 있다. 또한 사용자의 데이터가 중요해지는 만큼 어떻게 이를 구조적으로 저장, 관리해야 하는지 전략을 내세워 데이터 무결성을 유지해야 한다.
이 책에서는 관계형 데이터베이스의 탄생부터 시작해 어떻게 지금의 모습으로 진화했는지 알아보고, SQL의 기초 및 개념에 배운다. 또한 실무에 바로 적용할 수 있는 안드로이드 SQLite 컴포넌트와 API를 이용해 데이터베이스 관리와 업그레이드 전략에 대해 알차게 다루었다. 안드로이드의 콘텐트 프로바이더, 인텐트뿐만 아니라, 서드파티를 이용한 원격 데이터를 사용자에게 보여주는 방법을 대해 기술했다. 모바일 애플리케이션 제작 시 필요한 기본적인 데이터 공유, 관리 방법에 대해 궁금하거나 사용자에게 데이터를 효율적으로 보여주길 원하는 독자에게 이 책을 추천한다.

옮긴이 소개

오세봉

티맥스 소프트에서 웹 어플리케이션 서버를 개발하다 빅데이터에 관심이 생겨 KT 넥스알에 입사했다. 재직 중에 『하이브 완벽 가이드』(한빛미디어, 2013), 『케스케이딩 완벽 가이드』(한빛미디어, 2014)와 『MVC 구조의 확실한 해답 AngularJS 디렉티브』(에이콘, 2016)을 번역했다. KT 넥스알을 나와 어린이용 스마트워치(LINE 키즈폰)를 출시했으며 이때부터 안드로이드 개발을 시작했다. 대학 때부터 웹을 비롯한 UI에 관심이 많아 안드로이드 UI에 적응하는 데 오래 걸리지는 않았지만 SQLite를 비롯한 안드로이드 서비스는 자료가 많지 않아 시행착오를 많이 겪어야 했다. 마침 이 책을 번역하게 돼 참고할 만한 자료에 목말라하는 사람들에게 도움을 줄 수 있어서 기쁘다. 현재는 SK텔레콤에서 빅데이터를 이용한 데이터 분석과 관련된 일을 하고 있다.

김기환

어린이용 스마트워치(LINE 키즈폰)을 개발하면서 안드로이드의 매력에 빠졌다. 모바일과 UI, UX에 관심이 많으며 번역 및 개발을 취미로 삼고 있다. 번역서로는 『MVC 구조의 확실한 해답 Angular JS 디렉티브』(에이콘, 2016)이 있다.

목차

목차
  • 1장. 관계형 데이터베이스
    • 데이터베이스의 역사
      • 계층형 모델
      • 네트워크 모델
      • 관계형 모델의 소개
    • 관계형 모델
      • 릴레이션
      • 릴레이션의 성질
      • 관계
      • 관계형 언어
      • 관계 해석
    • 데이터베이스 언어
      • 알파
      • 큐얼
      • 씨큐얼
    • 요약

  • 2장. SQL 들어가기
    • 데이터 정의 언어
      • 테이블
      • 트리거
    • 데이터 조작 언어
      • INSERT
      • 질의
    • 요약

  • 3장. SQLite 들어가기
    • SQLite의 특징
    • SQLite 성질
      • 외래 키 지원
      • 전문 검색
      • 원자성 트랜잭션
    • SQLite가 지원하지 않는 것
      • 제한된 JOIN
      • 읽기 전용 뷰
      • 제한된 ALTER TABLE
    • SQLite 데이터 타입
      • 스토리지 클래스
      • 타입 친화성
    • 요약

  • 4장. 안드로이드 SQLite
    • 디바이스에서 데이터 저장
    • 안드로이드 데이터베이스 API
      • SQLiteOpenHelper
      • SQLiteOpenHelper 생성자
      • SQLiteOpenHelper.onUpgrade()
      • SQLiteDatabase
    • 데이터베이스 업그레이드 전략
      • 데이터베이스 다시 생성하기
      • 데이터베이스 조작하기
      • 테이블 복사한 후 삭제하기
    • 데이터베이스 접근과 메인 스레드
    • 안드로이드 데이터베이스 분석
      • adb로 데이터베이스 접근하기
      • 서드파티 툴로 안드로이드 데이터베이스에 접속하기
    • 요약

  • 5장. 안드로이드 데이터베이스와 작업하기
    • 안드로이드에서 데이터 다루기
      • 테이블에 로우 삽입하기
      • 테이블에서 로우 수정하기
      • 테이블 로우 치환하기
      • 테이블에서 로우 삭제하기
    • 트랜잭션
      • 트랜잭션 이용하기
      • 트랜잭션과 성능
    • 질의하기
      • 편리한 질의 함수
      • 문자열 질의 함수
    • 커서
      • 커서 데이터 읽기
      • 커서 관리하기
    • CursorLoader
      • CursorLoader 생성하기
      • CursorLoader 시작하기
      • CursorLoader 재시작하기
    • 요약

  • 6장. 콘텐트 프로바이더
    • REST를 닮은 콘텐트 프로바이더 API
    • 콘텐트 URI
    • 콘텐트 프로바이더로 데이터 공개하기
      • 콘텐트 프로바이더 구현하기
      • 콘텐트 리졸버
    • 원격 콘텐트 프로바이더를 외부 앱에 공개하기
      • 프로바이더 수준 권한
      • 개별적인 읽기/쓰기 권한
      • URI 위치 권한
      • 콘텐트 프로바이더 권한
    • 콘텐트 프로바이더 계약
    • 외부 앱에서 접근 허용하기
    • 콘텐트 프로바이더 구현하기
      • android.content.ContentProvider 상속하기
      • update()
      • getType()
    • 콘텐트 프로바이더를 언제 사용해야 하는가?
      • 콘텐트 프로바이더 단점
      • 콘텐트 프로바이더의 장점
    • 요약

  • 7장. 데이터베이스와 UI
    • 데이터베이스의 데이터를 UI로 보여주기
      • 커서 로더로 스레드 다루기
      • 커서 데이터를 UI에 바인딩하기
      • RecyclerView
      • 관찰자 역할의 커서
      • 액티비티에서 콘텐트 프로바이더 접근하기
      • 반환된 데이터 처리
      • 데이터 변경에 반응하기
    • 요약

  • 8장. 인텐트로 데이터 공유하기
    • 인텐트 전송
      • 명시적 인텐트
      • 암시적 인텐트
      • 인텐트로 액티비티 시작하기
    • 암시적 인텐트 받기
    • 인텐트 생성하기
      • 액션
      • 엑스트라
      • 엑스트라 데이터 형식
      • 인텐트에 추가하면 안 되는 것
    • ShareActionProvider
      • 공유 액션 메뉴
    • 요약

  • 9장. 웹 API와 통신하기
    • REST와 웹 서비스
      • REST 개요
      • REST와 유사한 웹 API 구조
    • 원격 웹 API 접근하기
      • 표준 안드로이드 API로 웹 서비스 접근하기
      • Retrofit으로 웹 서비스 연결하기
      • Volley로 웹 서비스 연결하기
    • 사용자 경험 향상을 위한 데이터 저장
      • 데이터 전송과 배터리 소모
      • 데이터 전송과 사용자 경험
      • 웹 서비스의 응답 데이터 저장하기
    • 안드로이드 SyncAdapter 프레임워크
      • AccountAuthenticator
      • SyncAdapter
    • 수동으로 원격 데이터 동기화
      • RxJava 간단히 훑어보기
      • Retrofit에 RxJava 추가하기
      • RxJava로 동기화하기
    • 요약

  • 10장. 데이터 바인딩
    • 안드로이드 프로젝트에 데이터 바인딩 추가하기
      • 데이터 바인딩 레이아웃
      • 데이터 바인딩으로 보일러플레이트 코드 대체하기
      • 데이터 바인딩 표현 언어

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[p.23]
부모와 자식 노드의 일대다수 관계에 있어 제약사항이 없는 그래프 구조
->
부모와 자식 노드가 일대다수 관계이기 때문에 제약사항이 없는 그래프 구조

[p.28]
후보 키 어트리뷰트의 일부분으로 튜플을 식별해서는 안 된다.
->
후보 키의 일부 속성으로 튜플을 식별하지 말아야 한다.

외래 키는 2개의 릴레이션을 또한 다른 하나와 관련시켜준다.
->
외래 키는 2개의 릴레이션을 서로 관련시켜준다.

[p. 34]
가능한 한 모든 정렬된 쌍으로 가지는
->
가능한 모두 정렬된 쌍으로 가지는