MySQL이나 PostgreSQL와 같은 데이터베이스 관리 시스템이지만,
서버가 아니라 응용 프로그램에 넣어 사용하는 비교적 가벼운 데이터베이스이며,
안드로이드에서 제공하는 애플리케이션 DB의 한 종류이다.
특징
1) 내장 가능한 오픈소스 Database로 C언어로 개발되었고 일반적인 SQL로 쿼리가 가능하다.
2) 작고 빠르며 독립적이다.
3) 신뢰성이 높고 파일 형식은 안정적이며 크로스 플랫폼이다.
- 크로스 플랫폼: 다양한 플랫폼에서 사용할 수 있다는 뜻
4) 역 호환이 가능하며, DB 파일을 일반적으로 시스템 간에 풍부한 콘텐츠를 제공하기 위한 컨테이너로 사용한다.
5) 서버가 아니라 응용 프로그램에 넣어 사용하는 비교적 가벼운 Database이다.
- SQLite를 이용한 데이터는 파일에 저장되고 data/data/패키지명/databases 경로의 디렉터리에 저장된다
Pragma문
- SQLite 라이브러리의 조작을 수정하거나 내부 (테이블이 아닌) 데이터에 대한 SQLite 라이브러리를 조회하는 데 사용된다. 해당 명령은 SQLite에만 적용되고 다른 SQL 데이터베이스 엔진과 호환되지 않는다.
Journal Mode
- SQLite에서는 Rollback Journal 방식을 통해 트랜잭션을 구현한다. 사실 Journaling은 예기치 않은 DB 혹은 서버 에러에도 데이터 유실 혹은 파일 손상을 방지하기 위해, 문제 발생 시 원래 데이터로 복원하고자 하는데 목적이 있다.
- SQLite는 Journaling의 이 특징을 사용하여 트랜잭션을 사용할 수 있도록 제공하는 것이다.
쿼리문
sqlite> pragma journal_mode = TRUNCATE; //journal mode 변경
SQLite에서 Journal Mode 종류
- DELETE (Default)
Rollback Journal File을 매번 Create/Delete - TRUNCATE
Rollback Journal을 매번 Create/Delete하지 않고, 파일 사이즈만 0으로 설정 후 재활용 - MEMORY
저널링 파일을 메모리에서 유지. SQLite를 사용하는 애플리케이션 장애 시 데이터 유실 - PERSIST
저널링 파일을 지우지 않음. - NONE
데이터 파일에 직접 기록(문제 발생 시 데이터 복원 불가)
MYSQL과 SQLite의 차이점
MySQL | SQLite |
여러 개의 작업과 사용자의 sql을 처리할 수 있도록 구현돼 있다. | 로컬에서 혼자 사용하는 용도 서버에 올려놓고 많은 요청을 처리하기에는 한계가 있다 |
SQLCipher
SQLite 데이터를 인간이 알아볼 수 없도록 암호화하여 관리한다.
아래 깃허브로 설치
https://github.com/sqlitebrowser/sqlitebrowser/wiki/Win64-setup-%E2%80%94-Compiling-SQLCipher
설치하여 암호화/복호화할 수 있고 Key값을 주고 테이블을 만들고 데이터를 입력하는 방식
SQLite 사용법
데이터베이스 확인하기
.database
테이블 생성
CREATE TABLE db_list (id INTEGER, name VARCHAR(16));
테이블 확인
.tables
레코드 추가
INSERT INTO db_list (id, name) VALUES(303, "Windows");
테이블의 레코드 참조
SELECT * FROM db_list;
테이블에서 조건식으로 데이터 검색
SELECT * FROM db_list WHERE id=303;
레코드 삭제
DELETE FROM db_list WHERE id=303;
테이블 삭제
DELETE FROM db_list;
버전 확인
select sqlite_version();
참고
https://onlyfor-me-blog.tistory.com/45
https://gywn.net/2013/08/let-me-intorduce-sqlite/
명령어
https://hermeslog.tistory.com/181
'OS > Database' 카테고리의 다른 글
[DBMS] CouchDB 정의 및 특징 (552) | 2022.01.13 |
---|---|
[DBMS] PostgreSQL 정의 및 설치방법, 보안관점 (1715) | 2021.11.25 |
[DBMS] Redis 정의 및 설치방법, 보안관점 (423) | 2021.11.10 |
[DBMS] Oracle 정의 및 특징 (426) | 2021.06.15 |
[DBMS] InfluxDB 정의 및 사용법(with Docker) (450) | 2021.06.02 |