SQLite 파일이란?
.sqlite 확장자를 가진 파일은 SQLite 소프트웨어로 생성된 경량 SQL 데이터베이스 파일입니다. 파일 자체에 있는 데이터베이스이며 모든 기능을 갖춘 독립형 고신뢰성 SQL 데이터베이스 엔진을 구현합니다. SQLite 데이터베이스 파일은 네트워크를 통해 이러한 파일을 간단히 교환함으로써 시스템 간에 풍부한 콘텐츠를 공유하는 데 사용할 수 있습니다. 거의 모든 모바일 및 컴퓨터는 데이터 저장 및 공유를 위해 SQLite를 사용하며 크로스 플랫폼 애플리케이션을 위한 파일 형식의 선택입니다. 컴팩트한 사용과 쉬운 사용성으로 인해 다른 애플리케이션에 번들로 제공됩니다. SQLite 바인딩은 C, C#, C++, Java, PHP 와 같은 프로그래밍 언어에 대해 존재합니다. , 그리고 많은 다른 사람들.
SQLite 파일 형식
실제로 SQLite는 SQLite 파일 형식을 사용하여 SQLite RDBMS를 구현하는 C 언어 라이브러리입니다. 매일 새로운 장치가 발전함에 따라 파일 형식은 이전 장치를 수용할 수 있도록 역호환성을 유지했습니다. SQLite 파일 형식은 데이터의 장기 보관 형식으로 간주됩니다.
데이터베이스 파일
SQLite 데이터베이스는 두 개의 파일을 통해 완전히 유지 관리됩니다.
- 주 데이터베이스 파일 - SQLite 데이터베이스의 완전한 상태를 포함합니다.
- 롤백 저널 - 추가 정보를 두 번째 파일에 저장하고 트랜잭션 수행 중에 사용합니다. SQLite가 WAL 모드인 경우 쓰기 헤드 로그 파일이 유지됩니다.
저널 파일
이 파일은 컴퓨터 충돌 등의 경우에 마지막 거래를 완료할 수 없는 경우를 대비하여 모든 정보를 유지하기 위한 것입니다. 이 파일은 데이터베이스 파일을 일관된 상태로 복원하는 데 사용됩니다.
페이지
기본 SQLite 데이터베이스 파일은 하나 이상의 페이지로 구성됩니다. 어느 시점에서든 기본 데이터베이스의 모든 페이지는 다음 중 하나인 단일 용도를 갖습니다.
- 잠금 바이트 페이지
- 무료 목록 페이지
- 자유 목록 트렁크 페이지
- 프리리스트 리프 페이지
- B-트리 페이지
- A 테이블 B-트리 인테리어 페이지
- 테이블 b-트리 리프 페이지
- 인덱스 b-tree 내부 페이지
- 인덱스 b-트리 리프 페이지
- 페이로드 오버플로 페이지
- 포인터 맵 페이지
SQLite 데이터베이스 파일의 크기는 몇 킬로바이트에서 몇 기가바이트까지 다양합니다.
SQLite 헤더
SQLite 데이터베이스 헤더는 데이터베이스 파일의 처음 100바이트에 있습니다. 모든 유효한 SQLite 데이터베이스 파일은 16바이트(16진수)로 시작합니다.
오프셋 | 크기 | 설명 |
---|---|---|
0 | 16 | 헤더 문자열: “SQLite 형식 3\000” |
16 | 2 | 데이터베이스 페이지 크기(바이트). 512와 32768 사이의 2의 거듭제곱이거나 65536의 페이지 크기를 나타내는 값 1이어야 합니다. |
18 | 1 | 파일 형식 쓰기 버전. 레거시 1개; 월 2. |
19 | 1 | 파일 형식 읽기 버전입니다. 레거시 1개; 월 2. |
20 | 1 | 각 페이지 끝에 사용되지 않은 “예약된” 공간의 바이트. 보통 0. |
21 | 1 | 최대 내장 페이로드 비율. 64세여야 합니다. |
22 | 1 | 최소 내장 페이로드 비율. 32세여야 합니다. |
23 | 1 | 리프 페이로드 비율. 32세여야 합니다. |
24 | 4 | 파일 변경 카운터. |
28 | 4 | 데이터베이스 파일의 페이지 크기. “헤더 내 데이터베이스 크기”. |
32 | 4 | 첫 번째 자유 목록 트렁크 페이지의 페이지 번호입니다. |
36 | 4 | 자유 목록 페이지의 총 수. |
40 | 4 | 스키마 쿠키. |
44 | 4 | 스키마 형식 번호. 지원되는 스키마 형식은 1, 2, 3 및 4입니다. |
48 | 4 | 기본 페이지 캐시 크기입니다. |
52 | 4 | 자동 진공 또는 증분 진공 모드일 때 가장 큰 루트 b-트리 페이지의 페이지 번호, 그렇지 않으면 0입니다. |
56 | 4 | 데이터베이스 텍스트 인코딩. 값 1은 UTF-8을 의미합니다. 값 2는 UTF-16le을 의미합니다. 값 3은 UTF-16be를 의미합니다. |
60 | 4 | user_version pragma에서 읽고 설정한 “사용자 버전"입니다. |
64 | 4 | 증분 진공 모드의 경우 참(0이 아님). 그렇지 않으면 거짓(영)입니다. |
68 | 4 | PRAGMA application_id에 의해 설정된 “응용 프로그램 ID”. |
72 | 20 | 확장을 위해 예약되었습니다. 0이어야 합니다. |
92 | 4 | 유효한 버전 번호입니다. |
96 | 4 | SQLITE_VERSION_NUMBER |