강의자료 수정!
Length of Data Header도 variable length integer로 확인
select * from sqlite_master(테이블을 관리하는 테이블=시스템테이블)
sqlite expert는 시스템 테이블은 보여주지 않는다.
sqlite_sequence가 우리가 과제로 했던 것
여기에 bookmarks와 history => 이것은 AUTOINCREMENT설정이 되어 있다. 그래서 따로 관리
free block/ free space 시험
Realm DB는 페이지 개념이 없고 object 단위이다.
object는 정해진 사이즈가 없다.
column단위로 저장(sqlite는 row단위로 저장)
row단위
민균 20
창현 23
동헌 50
column단위
민균 창현 동헌
20 23 50
DB는 search가 가장 많이 이용된다.
serach할때 row단위는 20 23 50도 보지만 column단위일때는 20 23 50 안보고
'창현'본뒤에 ->23
키워드 검색하는 것(indexing)은 realmnDB가 유용
A 10
B 20
C 40
오브젝트1 : A B C
오브젝트2 : 10 20 40
root->schema->오브젝트들
C 50으로 변경시
오브젝트를 새로 작성하고 오브젝트1->오브젝트3으로 가게끔 한다.
A 10
B 20으로 바뀔시 새 오브젝트들을 만들고 연결만 새로운 오브젝트에 해준다
기존 데이터가 지워지지 않는다.
따라서, 원래 뭐가 있었는지는 순서는 모르지만 어떤 데이터가 있었는지 복구가 가능하다.
처음에 Root Offset이 2개다.
transaction이 일어나면 root번갈아가면서 사용됨
이것은 SQLite에서 저널과 비슷한 개념
반면 realDB는 파일 내에서 2개의 Root Offset으로 복구함
File Attribute로 Root1, Root2 구분
SQLite에서 복구하는 방법 4가지
1. free block에서 레코드 복구
2. free space에서 복구
3. 미할당영역에서 페이지 단위로 복구
4. 저널에서 복구
일주일정도 전에 삭제한 거는 복구가능하지만
--------------------------------------------------------------------------------
/data/data/[package name] 에 있었던 것들 다 백업본에 있다.
삼성에서는 평문으로 날라와서 local device에서 암호화된다.
백업에는 암호화 필요
info.plist: 기기 관련 정보
Minfest.db 파일들의 경로
bplist: 직렬화