728x90
반응형

SQLite는 사용되는 응용 프로그램에 내장되는 놀라운 라이브러리이다. 독립적이고 파일 기반 데이터베이스로써 SQLite는 프로세스 기반 관계형 데이터베이스(서버)와 비교해봤을 때 제약이 덜하고 쉽게 정렬된 모든 데이터를 다루는 도구를 제공한다.

응용 프로그램에서 SQLite를 사용할 때, 실용적으로 동작하고 인터페이스(예: 포트, 소켓)를 통한 통신을 하는 대신 데이터를 갖고 있는 파일(즉 SQLite 데이터베이스)을 만들어 직접 호출한다. 이 라이브러리의 기본 기술 덕분에 SQLite는 매우 빠르고 , 효율적이고, 또한 강력하다.

SQLite에서 지원하는 데이터 타입

  • NULL: NULL 값

  • INTEGER: 부호가 있는 정수, 값의 크기에 따라 1, 2, 3, 4, 6, 8 바이트 저장

  • REAL: 부동소수점, 8 바이트 IEEE 부동소수점을 저장

  • TEXT: 문자열, 데이터베이스 인코딩에 따라 문자열 저장(UTF-8, UTF-16BE or UTF-16LE)

  • BLOB: 이진 데이터, 들어온 데이터 그대로 저장

Note: SQLite의 데이터 타입에 대해 더 알고 싶다면 공식 문서를 확인

SQLite의 장점

  • 파일 기반: 이동이 용이하게 만들어진 파일 하나가 전체 데이터베이스이다.

  • 표준을 따름: 간단한 DB 구현체이지만 SQLite는 SQL을 사용한다. 몇가지 기능(RIGHT OUTER JOIN, FOR EACH STATEMENT)이 생략되어 있지만 다른 기능들은 내장되어 있다.

  • 개발과 테스트에 적합:여러 프로그램의 개발 단계에서 다수의 사람들을 위한 동시성을 측정할 수 있는 해결책을 필요로 한다. 풍부한 기능이 있는 SQLite는 단일 파일과 C 기반의 라이브러리로 동작의 단순함으로 개발에 필요한 것보다 더 많이 제공할 수 있다.

SQLite의 단점

  • 사용자 관리가 없음: 고급 데이터베이스는 사용자 즉, 데이터베이스와 테이블에 접근 권한을 설정한 연결 관리 기능을 제공한다. SQLite의 목적과 특성(높은 레벨의 다수 클라이언트 동시 접속이 없음)으로 이 기능은 존재하지 않는다.

  • 추가 성능을 위한 개조 가능이 어려움: 다시 설계되어서 SQLite는 추가 성능을 얻기 위해 손보는 게 불가능하다. 라이브러리는 튜닝하거나 사용하는데 편리하다. 복잡하지 않기 때문에 기술적으로 성능을 올리는 것이 불가능하다.

SQLite를 사용하는 때

  • 임베디드 응용 프로그램: 확장하지 않으며 이동이 용이한 모든 응용 프로그램. 예를 들면, 단일 사용자 로컬 응용 프로그램, 모바일 프로그램 또는 게임.

  • 디스크 접근 대체: SQL을 사용함으로써 나오는 추가 기능과 단순함 때문에 디스크에 파일을 읽고 쓰는 것이 필요한 대부분의 응용 프로그램은 SQLite로 전환하여 이득을 볼 수 있다.

  • 테스트: 응용 프로그램의 많은 부분에서 비즈니스 로직(즉, 응용 프로그램의 주 용도: 기능)을 테스트하기 위한 추가 프로세스를 사용하는 것은 과잉이다.

SQLite를 사용하면 안되는 때

  • 다수 사용자 응용프로그램: 다수 클라이언트가 접속하고 같은 데이터베이스를 사용하는 응용 프로그램인 경우 완벽한 기능을 갖춘 RDBM(예: MySQL)을 선택하는 것이 좋다.

  • 높은 쓰기 볼륨을 원하는 응용 프로그램: SQLite의 제약 사항 중 하나는 쓰기 기능이다. 이 DBMS는 주어진 시간 동안 오직 하나의 쓰기만을 허락한다. 이런 이유로 제한된 처리량만 가능하다.

 

참고 문헌

  1. https://www.digitalocean.com/community/tutorials/sqlite-vs-mysql-vs-postgresql-a-comparison-of-relational-database-management-systems

반응형

'DB' 카테고리의 다른 글

[DB] Postgresql + PostGIS  (0) 2020.01.25
728x90
반응형

Postgresql에서 위치 정보를 저장하기 위해 PostGIS를 이용한다.

 

postgis를 사용하기 위해서 geos, proj.4를 먼저 설치한다.


geos는 Geometry Engine - Open Source의 약어로 좌표 계산에 사용되며, proj.4는 좌표 변환에 사용된다.

$ wget http://download.osgeo.org/geos/geos-3.3.6.tar.bz2
$ tar xjf geos-3.3.6.tar.bz2
$ cd geos-3.3.6
$ ./configure
$ make
$ sudo make install

$ wget http://download.osgeo.org/proj/proj-4.8.0.tar.gz
$ wget http://download.osgeo.org/proj/proj-datumgrid-1.5.zip
$ tar xzf proj-4.8.0.tar.gz
$ cd proj-4.8.0/nad
$ unzip ../../proj-datumgrid-1.5.zip
$ cd ..
$ ./configure
$ make
$ sudo make install

$ wget http://download.osgeo.org/postgis/source/postgis-2.0.2.tar.gz
$ tar xzf postgis-2.0.2.tar.gz
$ cd postgis-2.0.2
$ ./configure --with-geosconfig=/usr/local/bin/geos-config --without-raster
$ make
$ sudo make install

잘 설치가 됐는지 확인한다. SRID 값으로 4326은 WGS(World Geodetic System) 84를 의미한다.

 

전세계 지구 좌표를 표현하는 방식 중에 하나로 이를 이용하여 거리를 계산할 수 있다.

CREATE TABLE test_location (id SERIAL, name VARCHAR(24), geom geometry('POINT', 4326));

INSERT INTO test_location (name,geom) VALUES
('창경궁', ST_GeomFromText('POINT(126.99470043182373 37.58079163827203)', 4326));

SELECT id, name, ST_AsText(geom) from test_location;

 

반응형

'DB' 카테고리의 다른 글

[DB] SQLite  (0) 2020.01.25

+ Recent posts