SQLite, MySQL, PostgreSql을 비교하고 어떤 경우에 어떤 DB가 더 나은 선택인지에 대해 알아봅니다.

 

이 글은 다음 글을 발췌 및 번역한 글입니다: do.co/3kD2Ybd

 

SQLite vs MySQL vs PostgreSQL: A Comparison Of Relational Database Management Systems | DigitalOcean

This article compares and contrasts three of the most widely implemented open-source RDBMSs: SQLite, MySQL, and PostgreSQL. Specifically, it explores the data types that each RDBMS uses, their advantages and disadvantages, and situations where they ar

www.digitalocean.com

 

 

 

1. 소개.

 

데이터를 테이블의 행(row)과 열(column)로 구성하는 관계형 데이터 모델은 DB 관리 툴에 있어서 대세를 차지하고 있습니다. 최근 NoSQL과 NewSQL을 포함한 다른 데이터 모델이 있지만 관계형 데이터 베이스 관리 시스템(RDBMS)은 데이터를 저장하고 관리하는 데 있어 여전시 전 세계적으로 대다수를 차지합니다.

 

앞으로 작성할 글에서는 가장 널리 구현된 세 가지 오픈소스 RDBMS인 SQLite, MySQL 및 PostgreSQL을 비교하고 대조합니다. 특히 각 RDBMS가 제공하는 데이터 타입, 장점과 단점, 최적의 상황에 대해 알아보도록 합니다.

 

 

 

2. SQLite

 

SQLite는 낮은 메모리 환경에서도 이식성, 안정성, 강력한 성능으로 잘 알려진 독립형 파일 기반의 오픈소스 RDBMS입니다. 시스템이 충돌하거나 정전이 발생해도 트랜잭션은 ACID를 준수합니다.

 

SQLite 프로젝트의 웹 사이트에서는 이를 "Serverless" 데이터 베이스라고 설명하고 있습니다. 대부분의 관계형 데이터 베이스 엔진은 다음과 같이 서버 프로세스로 구성됩니다: 프로그램이 요청을 중계하는 프로세스 사이의 통신을 통해 호스트 서버와 통신하는 서버 프로세스.

 

그러나 SQLite를 사용하면 데이터 베이스에 엑세스 하는 모든 프로세스가 데이터베이스 디스크 파일을 직접 읽고 쓰게 됩니다. 따라서 서버 프로세스를 구성할 필요가 없어지고 SQLite의 설정 과정을 단수화 합니다. 마찬가지로 SQLite 데이터베이스를 사용할 프로그램에는 구성이 필요하지 않게 됩니다. 필요한 것은 단지 디스크에 대한 액세스뿐입니다.

 

SQLite는 무료이며 오픈소스 소프트웨어이고 이를 사용하는데 특별한 라이선스가 필요하지 않습니다. 하지만 돈을 낸다면 압축 및 암호화에 도움이 되는 몇 가지 확장 기능을 제공합니다. 또한 SQLite는 상업적인 지원 패키지를 연간 요금을 받고 지원해 줍니다.

 

 

 

3. SQLite의 데이터 타입

 

SQLite는 다음의 스토리지 클래스로 구성된 다양한 데이터 타입을 지원합니다:

  • null: NULL값을 포함합니다.
  • integer: 부호가 있는 정수로 값의 크기에 따라 1, 2, 4, 6, 8 바이트로 저장됩니다.
  • real: 실수 또는 8바이트 부동 소수점 숫자로 저장되는 값.
  • txt: 데이터베이스 인코딩을 사용하여 저장된 텍스트 문자열. UTF-8, UTF-16BE, UTF-16LE.
  • blob: 입력된 그대로 저장된 데이터의 blob.

SQLite의 문맥에서 "스토리지 클래스"와 "데이터 타입"이라는 용어는 서로 바꿔 사용할 수 있는 것으로 간주됩니다. SQLite의 데이터 타입 및 SQLite 타입 선호도에 대해 자세히 알고 싶다면 해당 주제에 대한 SQLite의 공식 문서를 참고해 주세요.

 

 

 

4. SQLite의 장점.

 

SQLLite는 이름에서 알 수 있듯이 매우 가볍습니다. 사용하는 공간은 설치된 시스템에 따라 다르지만 600kb 미만의 공간을 차지합니다. 또한 완전히 독립형이므로 SQLite가 작동하기 위해 시스템에 설치해야 하는 외부 종속성이 없습니다.

 

SQLite는 사용자 진화적인 RDBMS입니다. SQLite는 즉시 사용될 수 있는 "Zero-configuration" 데이터베이스로 설명되곤 합니다. SQLite는 서버 프로세스로 실행되지 않기 때문에 시작, 재시작, 중지의 과전이 없고 관리를 위한 구성 파일이 함께 제공되지 않습니다. 이러한 기능은 SQLite 설치에서 애플리케이션과의 통합까지의 과정을 간소화하는데 도움이 됩니다.

 

이식성이 뛰어납니다. 데이터를 분리된 파일의 커다란 배치로 저장하는 다른 일반적은 데이터베이스와는 달리 SQLite는 단일 파일에 전체 데이터가 저장됩니다. 이 파일은 디렉터리 계층의 어디에나 위치할 수 있으며 이동식 디스크 또는 파일 전송 프로토콜을 통해 공유할 수 있습니다.

 

 

 

5. SQLite의 단점.

 

동시성(Concurrency)에 제한이 있습니다. 동시에 여러 프로세스가 SQLite 데이터베이스에 액세스하고 쿼리가 가능하지만 주어진 시간에 하나의 프로세스만이 데이터베이스를 변경할 수 있습니다. 즉 SQLite는 대부분의 다른 임베디드 데이터베이스 관리 시스템보다는 더 큰 동시성을 지원하긴 하지만 MySQL, PostgreSQL과 같은 클라이언트-서버의 구조를 같은 RDBMS만큼은 아닙니다.

 

사용자 관리가 존재하지 않습니다. 데이터베이스 시스템은 데이터베이스 및 테이블에 대해 사전에 정의된 액세스 권한을 사용자에게 제공합니다. SQLite는 일반 디스크 파일을 직접 읽고 쓰기 때문에 적용 가능한 유일한 액세스 권한은 기본 운영 체제의 일반적인 액세스 권한 뿐입니다. 이로 인해 SQLite는 특별한 액세스 권한이 필요한 응용 프로그램에는 적합하지 않습니다.

 

SQLite는 다른 RDBMS에 비해 보안이 약합니다. SQLite와 같은 서버리스 데이터베이스보다 서버를 사용하는 것이 클라이언트 애플리케이션의 버그로부터 더 안전할 수 있습니다. 예를 들어 서버를 사용하는 경우 클라이언트의 잘못된 포인터는 서버 메모리의 손상을 일으킬 수 없습니다. 또한 서버는 하나의 영구적인 프로세스이기 때문에 클라이언트-서버 데이터베이스는 서버리스 데이터베이스보다 더 정밀하게 데이터 액세스를 제어할 수 있습니다. 이 말은 서버리스 데이터 베이스보다 더 세밀한 잠금(lock) 기능과 더 나은 동시성(Concurrency)을 제공할 수 있다는 뜻입니다.

 

 

6. SQLite를 사용하면 좋은 경우.

 

임베디드 애플리케이션에 적합합니다. SQLite는 이식성이 필요하고 향후 확장이 필요하지 않은 애플리케이션에 훌륭한 데이터 베이스입니다. 예를 들면 단일 사용자가 사용하는 로컬 애플리케이션이나 모바일 앱, 게임이 있습니다.

 

SQLite는 디스크 액세스를 대체할 수 있습니다. 애플리케이션이 파일을 디스크에 직접 읽고 써야 하는 경우 SQLite를 사용하는 것이 SQLite에서 제공되는 추가 기능과 SQL이 단순성을 위해 더 유용합니다.

 

테스트 환경에서 유용합니다. 대부분의 애플리케이션에서 추가 서버 프로세스를 사용하는 DBMS로 테스팅을 진행하는 것이 과할 수 있습니다. SQLite에는 실제 데이터베이스 작업의 오버헤드 없이 빠르게 테스트를 수행하는 데 사용할 수 있는 인메모리 모드가 있으므로 테스트에 이상적입니다.

 

 

7. SQLite를 사용하면 안 되는 경우.

 

많은 데이터 작업이 요구되는 경우 적합하지 않습니다. SQLite는 디스크 드라이브와 파일 시스템이 지원한다면 최대 140TB까지 기술적으로 지원하긴 합니다. 하지만 SQLite 웹사이트는 어떤 DB든 1TB에 근접해지면 중앙 집중형의 클라이언트-서버 데이터베이스에 보관할 것을 권장합니다. 해당 크기 이상의 SQLite 데이터베이스는 관리하기 어려울 수 있기 때문입니다.

 

높은 볼륨 쓰기가 요구되는 경우 적합하지 않습니다. SQLite는 지정된 시간에 하나의 쓰기 작업만 수행할 수 있으므로 처리량이 크게 제한됩니다. 응용프로그램에 많은 쓰기 작업이 필요하거나 동시에 여러 작성자가 작업을 해야 하는 경우 SQLite는 적합하지 않습니다.

 

네트워크 액세스가 필요한 경우 적합하지 않습니다. SQLite는 서버리스 데이터베이스이므로 데이터에 대한 직접적인 네트워크 액세스를 제공하지 않습니다. 만약 SQLIte의 데이터가 응용 프로그램과 별도의 컴퓨터에 존재하는 경우 높은 대역폭의 네트워크가 필요합니다. 이는 비싸고 비효율적인 솔루션이며 이러한 경우에는 클라이언트-서버 DBMS가 더 나은 선택이 될 수 있습니다.

 

 

 

8. 마침.

 

이상으로 SQLite의 데이터 타입, 장단점, 사용하면 좋은 경우와 그렇지 않은 경우에 대해 알아보았습니다. 다음 글에선 MySQL에 대해 알아보도록 하겠습니다.

 

 

 

 

 

 

 

반응형

+ Recent posts