Chapter 12 데이터 저장과 관리

Ruinak·2021년 9월 5일
0

Android

목록 보기
13/15
post-thumbnail

1. SQLite의 기본

  • 데이터베이스는 서버, PC, 인터넷 및 모바일 환경에서 없어서는 안 될 요소로 자리 잡았습니다.
  • 일반적인 컴퓨터에서 구동되는 데이터베이스 소프트웨어는 모바일 환경에서 사용하기에 너무 무겁습니다.
  • 이에 모바일 환경에 최적화된 데이터베이스로 SQLite가 개발되었습니다.
  • SQLite의 기본적인 개념과 동작은 PC용 데이터베이스와 거의 동일합니다.

1-1 데이터베이스의 기본 개념

  • 안드로이드에서 운용되는 SQLite를 학습하기에 앞서 데이터베이스(특히 관계형 데이터베이스)의 기본 개념과 용어를 이해해야 합니다.

데이터베이스의 정의

  • 지금은 모든 분야에서 데이터베이스라는 용어를 널리 사용합니다.
  • 현대 정보화 사회에서는 대부분의 생활과 업무가 데이터베이스와 직간접적으로 연관되어 있다고 할 수 있을 정도입니다.
    - 예를 들어 휴대전화의 문자 메세지, 교통카드, 편의점에서 사먹은 바나나맛 우유의 정보도 모두 데이터베이스에 저장됩니다.
  • 지속적이고 대량으로 발생하는 다양한 형태의 정보를 보관하려면 기존의 파일 시스템으로는 한계가 있기 때문에 고안된 것이 바로 데이터를 보관 • 관리하는 데이터베이스 시스템입니다.
  • 데이터베이스는 간단히 '대용량의 데이터 집합을 체계적으로 구성해놓은 것'으로 정의할 수 있습니다.
  • 데이터베이스는 혼자서 사용하는 것이 아니므로 여러 사용자나 시스템이 서로 공유할 수 있어야 합니다.
  • 데이터베이스 관리 시스템(DataBase Management System, DBMS)은 이러한 데이터베이스를 관리하는 시스템 또는 소프트웨어를 일컫습니다.
  • PC나 서버 컴퓨터에서 운영되는 유명한 DBMS로는 마이크로소프트의 SQL Server와 Access, 오라클의 Oracle Database와 MySQL, IBM의 DB2 등이 있습니다.

관계형 데이터베이스

  • DBMS는 크게 계층형(hierarchical), 망형(network), 관계형(ralational), 객체지향형(object-oriented), 객체관계형(object-relational) 등의 유형으로 구분됩니다.
  • 실제로는 관계형 DBMS(줄여서 RDBMS)를 가장 많이 사용하고 일부 멀티미디어 분야에서 객체지향형이나 객체관계형 DBMS를 활용하는 추세입니다.
  • SQL Server, Access, Oracle Database, DB2 등은 모두 관계형 DBMS에 속하며, SQLite도 관계형 DBMS입니다.
  • 관계형 DBMS는 업무가 변화하는 경우 다른 DBMS에 비해 변화에 쉽게 순응할 수 있는 구조로 되어 있고, 유지 • 보수 측면에서도 편리하다는 장점이 있습니다.
  • 대용량 데이터 관리와 데이터 무결성(integration)이 잘 보장되므로 데이터에 동시에 접근하는 응용 프로그램을 사용한다면 관계형 DBMS를 선택하는 것이 적절합니다.
  • 관계형 DBMS의 가장 큰 단점은 시스템 자원을 많이 차지하기 때문에 시스템이 전반적으로 느려질 수 밖에 없다는 것입니다.
  • 그러나 최근에는 하드웨어가 급속하게 발전하여 이러한 단점이 많이 보완되었습니다.
  • 모바일 환경에서 동작하는 SQLite는 관계형 DBMS의 단점을 극복하기 위해 동시 접근이나 대용량 데이터 관리에 제한을 두지만 관계형 DBMS의 표준 SQL이나 개념은 동일하게 적용됩니다.

데이터베이스 관련 용어

  • 건물을 지으려면 설계도를 먼저 그려야 하듯이 데이터베이스를 구축하려면 '데이터베이스 모델링'을 먼저 해야 합니다.
  • 데이터베이스 모델링은 현실 세계에서 사용되는 데이터를 DBMS 안에 어떻게 옮겨놓을지를 결정하는 과정입니다.
    - 네이버나 다음과 같은 포털 사이트에 가입하는 회원을 어떻게 DBMS에 넣을 것인가?
  • 회원 자체를 컴퓨터에 넣을 수는 없기 때문에 회원을 나타내는 특성(또는 속성)을 추출하여 DBMS에 데이터로 넣어야 합니다.
  • 회원의 신분을 나타내는 정보 중 대표적인 이름, 생년월일, 이메일, 주소, 연락처 등의 정보를 DBMS에 저장합니다.
  • 이러한 정보는 단편적으로 저장하는 것이 아니라 테이블이라는 표 형태의 틀에 맞추어 넣어야 합니다.
  • 아래는 회원 정보를 테이블로 구현한 모습입니다.

용어 정리

  • 데이터 : john, lee@paran.com. 1980과 같은 하나하나의 단편적인 정보를 뜻합니다.
  • 테이블 : 회원 데이터가 표 형태로 표현된 것을 말합니다. 여기서는 네이버 데이터베이스를 구현하기 위해 회원 정보를 보관할 '회원 테이블'을 만들었습니다.
  • 데이터베이스(DB) : 테이블이 저장되는 장소로 주로 원통 모양으로 표현합니다. 각 데이터베이스는 고유한 이름을 가져야 합니다.
  • 열(column 또는 field) : 각 테이블은 1개 이상의 열로 구성됩니다. 회원 테이블의 경우 '아이디', '회원 이름', '이메일', '출생 연도'라는 4개의 열로 구성되어 있습니다.
  • 열 이름 : 각 열을 구분하는 이름입니다. 열 이름은 각 테이블 안에서 중복되지 않아야 합니다.
  • 데이터 형식 : 열의 데이터 형식을 말합니다. 회원 테이블의 회원 이름 열은 '숫자'가 아닌 '문자' 형식이어야 합니다. 또한 출생 연도는 '숫자(정수)' 형식이어야 합니다. 출생 연도에 '빠른' 같은 글자가 들어가면 안 되기 때문입니다. 데이터 형식은 테이블을 생성할 때 열 이름과 함께 지정합니다.
  • 행(row) : 실제 데이터를 말합니다. 'john/John Bann/john@naver.com/1990'이 한 행의 데이터입니다.
  • SQL(Structured Query Language, 구조화된 질의 언어) : DBMS(SQLite)에 어떤 작업을 하고 싶다면 DBMS가 알아듣는 말로 해야 하는데 이것이 SQL입니다. 즉 SQL은 사용자와 DBMS가 소통하기 위한 언어입니다.
  • 여기서는 SQLite를 사용하는 데 필요한 DBMS의 기본적인 개념과 용어, 최소한의 SQL문과 사용법만을 다룰 것입니다.

1-2 SQLte에서의 데이터베이스 구축

  • 아래는 데이터베이스 구축 및 운영 절차입니다.
  • 안드로이드 시스템에는 SQLite가 이미 설치되어 있으므로 1단계는 생략합니다.

실습은 추후에 진행하겠습니다.

2. SQLite의 활용

2-1 SQLite 프로그래밍

안드로이드 앱 개발을 위한 SQLite 동작 방식

  • 안드로이드 앱에서 SQLite를 사용할 때는 일반적으로 SQLiteOpenHelper 클래스, SQLiteDatabase 클래스, Cursor 인터페이스를 이용합니다.
  • SQLiteOpenHelper 클래스를 상속받아 새로운 클래스를 생성합니다.
  • 생성한 클래스에는 데이터베이스 파일과 테이블을 생성하는 내용을 코딩합니다.
  • SQLiteOpenHelper 클래스의 getWritableDatabase( )를 사용하면 SQLiteDatabase를 반환받고, execSQL( ) 또는 rawQuery( ) 등으로 SQL문을 실행합니다.
  • SELECT문은 Cursor 인터페이스를 반환받은 후에 반복해서 테이블의 행 데이터에 접근하게 됩니다.
  • 아래는 각 클래스에서 주로 사용되는 메서드입니다.

실습은 추후에 진행하겠습니다.

profile
Nil Desperandum <절대 절망하지 마라>

0개의 댓글