본문 바로가기

c c++ mfc

SQLite란?

반응형
안녕하세요, 오늘은 많은 개발자들이 선택하는 경량 DBMS인 SQLite에 대해 알아보겠습니다.
 
SQLite는 2000년에 첫 출시된 오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)입니다. SQLite는 이름에서 알 수 있듯이, "light" 즉, "경량"을 의미하며 이는 그 특성을 잘 나타냅니다.

1. 서버가 필요 없습니다

  • SQLite는 서버-클라이언트 구조를 가지고 있지 않습니다. 대신, 데이터베이스 전체가 하나의 파일로 저장되며 이 파일은 직접 읽고 쓸 수 있습니다. 이러한 특성 때문에 설치나 설정 과정 없이도 간단하게 사용할 수 있으며, 운영체제 간 호환성도 좋습니다. 

2. ACID(원자성, 일관성, 고립성, 지속성)를 준수합니다

  • SQLite는 트랜잭션 중 하나라도 실패하면 모든 작업을 롤백하는 ACID 원칙을 준수합니다. 이로 인해 데이터의 안정성과 신뢰성을 보장할 수 있습니다.

3. 경량화 되어있습니다

  • SQLite 라이브러리의 크기는 매우 작아 임베디드 시스템 등에서 주로 사용됩니다. 또한 메모리 사용량도 적어서 저사양 환경에서도 부담 없이 사용할 수 있습니다.


4. SQL92 표준을 지원합니다

  • SQL92 표준의 대부분 기능을 지원하기 때문에 다른 RDBMS와 비슷한 방식으로 쿼리를 작성할 수 있으며 배우기 쉽다는 장점이 있습니다.

 

그렇다면 어떤 경우에 SQLite를 선택하는 것이 좋을까요?

  • 프로그램 설정 정보나 내부 데이터를 저장하는 용도
  • 교육용으로 SQL 및 DBMS 학습
  • 임베디드 시스템에서 로컬 스토리지로 활용
  • 프로토타입 제작 및 테스트 용도

하지만 대용량 데이터를 처리하거나, 동시에 많은 사용자가 접속해야 하는 상황에서는 SQLite보다는 MySQL이나 PostgreSQL 등의 DBMS를 사용하는 것이 더 적합합니다.

 

마지막으로 SQLite를 사용하는 방법에 대해 간단히 알아보겠습니다. C++에서 SQLite를 사용하려면 sqlite3.h 헤더 파일을 포함시키고, sqlite3_open(), sqlite3_exec(), sqlite3_close() 등의 함수로 데이터베이스를 열고 SQL 명령을 실행한 후 닫을 수 있습니다.

#include <stdio.h>
#include <sqlite3.h>

int main(int argc, char* argv[]) {
    sqlite3* db;
    char *zErrMsg = 0;
    int rc;

    rc = sqlite3_open("test.db", &db);

    if(rc) {
        fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
        return(0);
    } else {
        fprintf(stderr, "Opened database successfully\n");
    }
    
   sqlite3_close(db);
}
아래 이미지는 SQLite의 Architecture 를 표현한 그림입니다. 참고하시라고 넣었습니다.
SQLite의 Architecture
 

이상으로 SQLite에 대한 소개를 마치겠습니다. 이 글이 여러분의 개발에 도움이 되었기를 바랍니다. 

다음 글에서는 다른 주제로 찾아뵙겠습니다.

감사합니다~~

반응형