[SQLite]SQLite의 대하여

변도진·2024년 7월 17일

SQLite

목록 보기
1/2
post-thumbnail

SQLite란?

SQLite는 file형 RDBMS로, 세계에서 가장 널리쓰이는 Database engine이다.
2000년 5월 9일에 시작되었으며, C로 구현되었다.

SQLite의 장점

Small

SQLite는 작다.
2023년 7월 4일을 기준으로 SQLite의 library는 1MB를 넘지 않는다.
이는 compiler, OS, CPU architecture등 여러 요인의 따라 변경되지만, 일반적 경우는 다음과 같다.

  • gcc 10.2.1(Rasberry PI 4 64-bit ARM) - 590KB
  • clang 14.0.0(MacOS M1) - 750KB
  • gcc 5.4.0(Ubuntu 16.04.7 x64) - 650KB
  • gcc 9.4.0(Ubuntu 20.04.5 x64) - 650KB
    이는 일반적인 상황에서 compile된 크기이며, optional feature를 추가하면 변동될 수 있다.

통상적으로 압축되지 않은 사진의 크기를 4MB로 잡기에 이는 엄청난 수치임을 알 수 있다.

Fast

Sqlite는 빠르다.
이는 Filesystem과 비견될 정도이며, 간혹 Filesystem보다 빠르기도 한다.

250KB ~ 1MB의 작은 Blob들을 작업할 때 SQLite는 Filesystem의 fread()과 fwrite()를 사용하여 작업하는 것 보다 약 35% 더 빠르다.
이는 SQLite는 open()과 close()를 한번만 실행하기에 그런 것으로 추정된다.

또한 10KB의 Blob을 저장할 경우 20% 정도의 disk 공간을 절약 할 수 있다.
이는 SQLite의 Blob이 더 tight하게 packing되어 있기 때문이다.

자세히

Self-Contained

SQLite는 독립적이다.
이는 SQLite를 실행하는 데에 별다른 의존이 필요없다.
SQLite는 OS만 있으면 동작 할 수 있으며, 이는 embedded systemd의 원시적인 OS에도 적용된다.

SQLite를 build하기 위하여 다음과 같은 standard C library만 있으면 된다.

  • memcmp()
  • memcpy()
  • memmove()
  • memset()
  • strcmp()
  • strlen()
  • strncmp()

high-reliability

SQLite는 높은 신뢰도를 가진다.
SQLite는 이미 20년간 수십억개의 embedded device에서 동작하고, descktop Application에서 동작한다.

모든 분기의 대한 수백만개의 case를 test하며 test coverage 100%를 자랑한다.

full-feature

SQLite는 SQL의 모든 기능이 구현되어있다.
물론 당연하지만, Lite가 들어가기에 생기는 오해들을 반하기 위함이다.

자세히

SQLite의 특징

최대 용량

SQLite의 최대용량은 281TB이다.
Row당 최대용량은 1GB이다.

open-source

SQLite는 public domain에 open-source이다.
하지만 open-contribution은 아니라 pull requests를 올리지 못한다.

memory

SQLite는 memory가 부족한 상황에도 원활히 동작하지만, 많은 memory를 제공함에 따라 performance의 향상을 기대 할 수 있다.

database vs filesystem

SQLite는 Oracle이나 Mysql같은 database server의 대체가 아닌
filesystem의 대체이다.

참조

https://www.sqlite.org/index.html

profile
낚시하고 싶다.

0개의 댓글