1. 세계에서 제일 많이 사용되는 DB
SQLite는 전 세계에서 가장 널리 사용되는 데이터베이스 엔진 중 하나이다
공개 도메인 라이선스고 라이브러리 크기가 작고 무엇보다도 서버가 필요 없는 경량 데이터베이스기에 스마트폰이나 브라우저등에서 모두 활용한다는 사실
대략 1조개 이상으로 사용한다고 추측하니 후덜덜 하다
2. 개발자는 3명이고 오픈 소스가 아님
이렇게 많이 사용하는 데이터베이스를 단 3명만이 관리하고 외부 참여는 허용하지 않는다
2000년에 D. Richard Hipp(DRH)씨가 해군 구축함에서 서버가 다운될 때마다 작동을 멈추는걸 보고 열받아서 혼자 개발하심
현재 메이저 버전은 3이고 최근까지도 꾸준히 버그가 픽스되며 릴리즈 되고 있다는 사실
3. 굉장히 빠름
일반 파일 시스템보다 35%이상 빠름
모든 상황에서 그렇지는 않겠지만 Redis보다 더 빠르다고 함
디스크를 사용하는데 메모리보다 빠르다는게 좀 신기한 일임
SQLite Insert시 램과 SSD 사용 속도 비교
4. 기존 SQL과 비슷하지만 모두가 같지 않음
타입에 대해 굉장히 관대함
아래 코드가 허용되는데 버그가 아니라 의도된 바라고 한다
CREATE TABLE user(id INTEGER);
INSERT into user VALUES ("YOLO!"); --- This works!
막고 싶으면 STRICT라는 명령어로 하라는데 여기에 또 유연하게 하고 싶으면 'ANY' 타입을 추가해도 되게 만들어 놓음
CREATE TABLE t1(a ANY) STRICT;
INSERT INTO t1 VALUES('000123');
SELECT typeof(a), quote(a) FROM t1;
-- result: text '000123'
다만 쿼리를 날릴대는 정수와 문자열을 구분한다고 함(1='1'가 false로 리턴)
웃긴게 근데 대소문자 구분은 기본적으로 지원하지 않음(UPPER, LOWER 함수 지원X)
지원하게 하려면 별도 옵션으로 컴파일 해야 한다고 함
기본키(PRIMARY KEY)에 NULL이 포함 될수도 있음
버그인줄 알고 나서 고치려니 너무 늦어서 하위 호환성을 위해서 그냥 두기로 결정함.. ㅋㅋ
AUTO INCREMENT가 MYSQL과 다르게 작동함
별도의 내부 시퀀스 테이블로 추적하는데 순차적으로 1씩 증가하지 않을 수도 잇다고 함
전체적으로 다른 부분에 대해서는 아래 주소에서 참고 하면 좋다
https://www.sqlite.org/quirks.html
https://avi.im/blag/2024/sqlite-facts/
개인적인 감상
그냥 편해서 아무 생각없이 따로 공부 한번 안하고 쓰고 있는 SQLite...
가끔 아무 생각없이 쓰다가 어? 이게 돼? 할때도 있고 어 이게 안돼? 할때도 있는 SQLite야 고마워..
'일' 카테고리의 다른 글
스마트폰은 내 말을 엿듣고 광고를 할까 (2) | 2025.01.04 |
---|---|
텔레그램 API로 메시지 저장해서 출력 및 다운로드 하기 (0) | 2023.07.25 |
GA4 전자상거래 모바일웹, 웹앱에 적용 (0) | 2023.07.10 |
채널톡 스크립트 boot 401 오류 (4) | 2023.01.05 |
이벤트 즉석 상품 당첨 로직 개발하기 (0) | 2023.01.03 |