영구적 Data저장

채현·2023년 2월 28일
0

안드로이드

목록 보기
15/37

어플리케이션을 종료하는 순간 데이터 모두 소실됨 ( RAM에 저장되고, RAM은 휘발성 메모리)
데이터를 파일형태로 기기의 저장소에 저장해야함
데이터의 종류 및 구조에 따라 저장하는 방법이 다름

앱을 지우면 내외부저장소의 폴더까지 모두 삭제됨
내외부저장소 모두 파일 입출력 형태 (File I/O : Stream)로 저장됨

ⓐ Internal Storage (내부저장소)

내부저장소의 경로 : data/data/앱 전용 폴더 (패키지명)/files
경로를 몰라도 Stream이 알아서 열어줌
스마트폰 내에는 민감정보가 많기때문에 보안 강력 --> 쓸 수 있는 공간 한정 (전용폴더)
기본적인것은 내부저장소에 파일형태(앱별파일)로 저장됨
저장된 파일은 외부에서 절대 접근불가

ⓑ External Storage (외부저장소)

비교적 볼륨이 큰 파일이 저장
무조건 물리적으로 떨어져 있는것은 아님
ex. 내장메모리형 외부저장소(Buit-in), SD card, C타입 USB...

SD card만 이동하면 외부에서 데이터 접근 가능 --> 보안이 되어있는 앱 전용 폴더

  • API 29버전 기준
    이전 Legacy Storage (권한만 있으면 데이터 접근가능)
    이후 Scoped Storage (데이터가 보호되어 있어 접근 불가능)
    --> 저장소를 다루는 개념 및 방법론이 아예 바뀜

디바이스별로 외부저장소를 일컫는 폴더명이 다름 Storage or mnt or Sdcard
SD card 하드코딩❌ --> Environment
외부저장소 경로 : Android/data/앱 전용 폴더 (패키지명)/files
경로가 제각각, Stream이 알아서 해줄 수 없음 --> File 객체로 직접 열어야함

ⓒ Shared Preference

설정값을 저장과 같은 단순값들을 파일입출력없이 간단하게 저장하기 위함
내부저장소에 .xml 파일로 저장됨, 정해져있는 자료형만 저장되며 이어붙이기❌ 덮어쓰기⭕
ex. 로그인정보, 배경음악 on/off...

ⓓ SQLite Database

내부저장소에 어떠한 데이터를 Excel처럼 표로 저장
경로 : 내부저장소(앱 저장 공간 : 패키지명)/database
대량의 데이터가 컬럼값이 3 이상일때 사용하는 것을 권장

메모장으로 작성해도 여러 데이터를 저장은 가능하나, 읽을때 데이터정보를 알 수 없어 불편
데이터가 구조를 가지고 있을경우 하나의 Database로 저장
DBMS (DataBase Management System) : Excel처럼 표로 만들어줌
MySQL, MsSQL, Oracle --> desktop에 적합함 (무거움)
mobile에 적합하게 가벼운 소프트웨어 --> SQLite : 경량 데이터베이스용
안드로이드 운영체제에서 기본적으로 가지고 있는 프로그램

Database : 자료형태/파일구조 <-- ❕ 구분 ❕ --> DBMS : Database를 만들어주는 프로그램

Excel파일(.xls) 안에 sheet를 여러 개 만들 수 있는 것처럼
Database파일(.db) 안에 table이 여러 개 있을 수 있음 (db파일 자체가 표가 아님)

컴퓨터의 데이터를 취급하기 위한 작업 : CRUD (Create Read Update Delete) 작업
--> CRUD작업을 위해서 SQL (Structured Query Language) 사용

CRUD
insert(값)
create(표)
selectupdatedelete

🔍 App Inspection (Database Inspector)
만들어진 표 확인 가능

0개의 댓글