SQLite: Difference between revisions
No edit summary |
|||
(2 intermediate revisions by one other user not shown) | |||
Line 2: | Line 2: | ||
;[[모바일]], [[임베디드]] 등의 다양한 제약사항 하에서 동작하는 Serverless, Zero Configuration [[데이터베이스]] | ;[[모바일]], [[임베디드]] 등의 다양한 제약사항 하에서 동작하는 Serverless, Zero Configuration [[데이터베이스]] | ||
== 특징 == | '''에스큐엘라이트'''<!--에스큐엘 라이트, 에스큐라이트, 에스큐 라이트-->(SQLite)는 2000년 [[리처드 힙]]<!--리차드 힙-->(Richard Hipp)이 개발한 [[관계형 데이터베이스 관리 시스템]](RDBMS)이다. 서버에 설치되는 다른 관계형 데이터베이스 관리 시스템(RDBMS)와 달리 에스큐엘라이트(SQLite)는 응용 프로그램에 [[임베디드]](embedded) 방식으로 삽입된다. 에스큐엘라이트는 용량이 매우 작으며, [[웹브라우저]]와 [[안드로이드]] 운영체제 등에 기본 탑재되어 있다. 저작권이 소멸된 [[퍼블릭 도메인]]이므로 누구나 무료로 사용할 수 있다. | ||
==개요== | |||
SQLite는 파일기반의 [[임베디드]] SQL [[데이터베이스]] 엔진이다. 주로 응용 프로그램에 넣어 사용하는 비교적 가벼운 데이터베이스이며 빠르고, 무료이며 사용하기 쉬운 경량 라이브러리이다. | |||
에스큐엘라이트 또는 시퀄라이트라고 읽는다고 한다. | |||
==역사== | |||
*2000년 : [[리처드 힙]]과 한 동료가 제너럴 다이내믹스에서 일할때 2000년 초 SQQL을 시작한다. SQLite는 HP-UX 컴퓨터에서 실행되는 IBM Informix 데이터베이스 를 대체하기 위해 유도 미사일 에 사용되었다. 그래서 해군과 계약을 체결했다. | |||
*2000년 8월 : SQL의 첫 번째 버전이 발표되었다. | |||
*2004년 : ADOLed와 함께 생산되는 SQL 3.0이발표되며, 지역화와 [[유니코드]]가 추가된다. | |||
==특징== | |||
* Serverless: 별도 서버 없는 로컬 전용 데이터베이스 | * Serverless: 별도 서버 없는 로컬 전용 데이터베이스 | ||
* Zero Configuration: 컴파일 후 즉시 사용 가능 | * Zero Configuration: 컴파일 후 즉시 사용 가능 | ||
* Open Software: 자유롭게 수정 가능한 라이센스(Public Domain) | * Open Software: 자유롭게 수정 가능한 라이센스(Public Domain) | ||
* | * Reliability: 간결함에도 불구하고 [[관계형 데이터베이스|RDBMS]]에서 요구하는 [[ACID]] 충족 | ||
SQLite는 대부분의 SQL-92 표준을 SQL에 구현하지만 일부 기능이 부족하다. 예를 들어 부분적으로 트리거를 제공하고 뷰에 쓸 수 없다. (그러나 이 기능을 제공하는 INSTEAD OF 트리거를 제공한다) 복잡한 쿼리를 제공하지만 열을 수정하거나 삭제할 수 없기 때문에 여전히 [[ALTER TABLE]] 기능이 제한적이다. | |||
SQLite는 [[SQL]] 호환 [[DBM]]S에 대해 비정상적인 유형의 시스템을 사용한다. 대부분의 SQL [[데이터베이스]] 시스템에서처럼 유형을 열에 할당하는 대신 형식이 개별 값에 할당된다. 언어 용어로 동적으로 입력된다. 더욱이 Perl과 같은 방식으로 약하게 타입 지정된다. 하나는 문자열을 정수로 삽입 할 수 있다. (비록 SQLite가 문자열을 정수형으로 변환하려고 시도할지라도 열의 우선 형이 정수일 때) 이로 인해 특히 동적 유형의 스크립팅 언어에 바인딩 될 때 열에 유연성이 추가된다. 그러나 이 기술은 다른 SQL 제품으로 이식할 수 없다. 일반적인 비판은 SQLite의 유형 시스템이 다른 제품에 정적으로 입력된 열에 의해 제공되는 데이터 무결성 메커니즘이 부족하다. SQLite [[웹 사이트]]는 "엄격한 선호도" 모드를 설명하지만 이 기능은 아직 추가되지 않았다. 그러나 제약 조건과 같이 구현될 수 있다. CHECK(typeof(x)='integer') | |||
테이블에는 일반적으로 빠른 [[액세스]]를 제공하는 숨겨진 rowid 인덱스 열이 포함된다. 데이터베이스에 Integer Primary Key 열이 포함되어있는 경우 SQLite는 일반적으로이를 rowid 의 별칭으로 처리하여 내용을 최적화하여 엄격하게 형식화된 64비트 부호 있는 정수로 저장하고 그 동작을 다소 비슷하게 변경한다. SQLite의 향후 버전에는 컬럼이 rowid 와 같은 동작을 하는지 여부를 인트로 스펙 (introspect) 하여 약하게 타입이 지정되고 자동 증가하지 않는 정수 기본 키와 구분할 수 있는 명령이 포함될 수 있다. | |||
완전한 [[유니코드]] 기능을 갖춘 SQLite 는 선택 사항이다. | |||
여러 컴퓨터 프로세스 또는 스레드가 동일한 데이터베이스에 동시에 액세스 할 수 있다. 여러 개의 읽기 액세스가 동시에 충족될 수 있다. 쓰기 액세스는 현재 다른 액세스가 서비스되고 있지 않은 경우에만 충족될 수 있다. 그렇지 않으면 쓰기 액세스가 오류 코드와 함께 실패하거나 구성 가능한 시간 초과가 만료될 때까지 자동으로 재시도 될 수 있다. 이 동시 액세스 상황은 임시 테이블을 처리할 때 변경된다. WAL ( write-ahead logging )이 설정되어 동시 읽기 W 쓰기가 가능할 때 버전 3.7에서는 이 제한이 완화된다. | |||
SQLite 버전 3.7.4는 처음으로 FTS4 (전체 텍스트 검색) 모듈을 추가 한다. 이 모듈은 구형 FTS3 모듈에 비해 향상된 기능을 제공한다. [[FTS4]]를 사용하면 검색 엔진이 웹 페이지를 검색하는 것과 유사한 방식으로 문서에 대한 전체 텍스트 검색을 수행 할 수 있다. 버전 3.8.2 없이 테이블을 생성하기 위한 지원을 추가 ROWID, 공간 및 성능 향상을 제공할 수있다. 공통 테이블 표현식 지원이 버전 3.8.3의 SQLite에 추가되었다. | |||
2015 년 json1 확장 과 새로운 하위 유형 인터페이스를 사용하여 SQLite 버전 3.9에서 JSON 컨텐츠 관리 기능을 도입했다.<ref name="SQLite">〈[https://en.wikipedia.org/wiki/SQLite SQLite]〉《위키피디아》</ref> | |||
==활용== | |||
===미들웨어=== | |||
* 로버트 심슨에 의해 개발된 ADO.NET 어댑터는 2010년 4월부터 에스큐엘라이트 개발자와 공동으로 유지 관리된다. | |||
* ODBC 드라이버는 크리스티앙 베르너(Christian Werner)에 의해 개발되고 별도로 관리한다. 베르너의 ODBC 드라이버는 오픈 오피스(OpenOffice.org)에서 에스큐엘라이트에 액세스하는데 권장되는 연결 방법이다. | |||
* 윈도우즈에서 자바스크립트 및 VB스크립트와 같은 스크립트로 작성된 언어로 에스큐엘라이트에 액세스할 수 있도록 하는 COM(액티브엑스) 래퍼이다. 이렇게 하면 HTML 애플리케이션(HTA)에 에스큐엘라이트 데이터베이스 기능이 추가된다. | |||
===웹 브라우저=== | |||
*브라우저 구글 크롬, 오페라, 사파리와 안드로이드 브라우저 모두 사용하여 정보를 저장하고 브라우저 내에서 SQLite는 데이터베이스에서 검색을 허용한다. | |||
*Mozilla Firefox 및 Mozilla Thunderbird 는 내부적으로 관리되는 SQLite 데이터베이스에 다양한 구성 데이터 (책갈피, 쿠키, 연락처 등)를 저장합니다. Firefox 버전 57 ( "Firefox Quantum" ) 이 출현 할 때까지이 기능을 지원하는 코드를 사용하여 임의의 SQLite 데이터베이스를 관리하기위한 사용자 인터페이스를 제공하는 타사 추가 기능이 있다. | |||
*일부 타사 추가 기능은 JavaScript API를 사용하여 SQLite 데이터베이스를 관리 할 수 있다. | |||
===웹 응용 프로그램 프레임 워크=== | |||
*버그 질라 | |||
*Django 의 기본 데이터베이스 관리 시스템 | |||
*드루팔 | |||
*Trac | |||
*Ruby on Rails 의 기본 데이터베이스 관리 시스템 | |||
*web2py | |||
*Laravel | |||
===다양한=== | |||
*Adobe Systems 는 SQLite를 Adobe AIR 의 표준 데이터베이스 인 Adobe Photoshop Lightroom 에서 파일 형식으로 사용 하고 Adobe Reader 에서 내부적으로 사용한다. | |||
*Evernote 는 SQLite를 사용하여 로컬 데이터베이스 저장소를 Windows에 저장한다. | |||
*Skype | |||
*서비스 관리 기능 내 서비스 관리를 위해 사용, 솔라리스 및 오픈 솔라리스 운영 체제 | |||
*화염 (악성 코드) | |||
*BMW IDrive Sat Nav 시스템 | |||
===운영 체제=== | |||
SQLite는 기본적으로 다음과 같이 포함한다. | |||
*블랙 베리의 블랙 베리 10 OS | |||
*심비안 OS | |||
*노키아의 Maemo | |||
*Google의 Android | |||
*Linux Foundation의 MeeGo | |||
*LG의 웹 OS | |||
*NetBSD | |||
*2014 년 1 월에 10-RELEASE 버전부터 시작하는 FreeBSD 는 코어 패키지 관리 시스템에서 사용된다. | |||
*일루 모스 | |||
*서비스 관리 기능 데이터베이스가 부팅을 위해 직렬화 되는 Oracle Solaris 10 . | |||
*Apple 은 macOS 의 Core Data API에서 MacOS X 10.4 이후 의 원래 구현 과 비디오 및 노래 관리 , iPhone 에서의 텍스트 메시지 저장을위한 iOS 에서 옵션으로 채택했다. | |||
*티젠 | |||
*Windows 10<ref name="SQLite"></ref> | |||
==참고자료== | |||
* 〈[https://www.sqlite.org/copyright.html SQLite]〉, 《SQLite 공식 웹사이트》 | |||
* 똑똑이,〈[https://m.blog.naver.com/PostView.nhn?blogId=wideeyed&logNo=220966818808&proxyReferer=https%3A%2F%2Fwww.google.com%2F [SQLite] SQLite 소개 및 간단한 실습해보기]〉《네이버블로그》, 2017-03-25 | |||
* 〈[https://en.wikipedia.org/wiki/SQLite En SQLite]〉, 《위키피디아》 | |||
* 〈[https://ja.wikipedia.org/wiki/SQLite Ja SQLite]〉, 《위키피디아》 | |||
* 〈[https://fr.wikipedia.org/wiki/SQLite Fr SQLite]〉, 《위키피디아》 | |||
== 같이 보기 == | == 같이 보기 == | ||
* [[DBMS]] | * [[DBMS]] | ||
* [[관계형 데이터베이스]] | * [[관계형 데이터베이스]] | ||
* [[ | * [[공개 소프트웨어]] | ||
== 각주 == |
Latest revision as of 12:40, 16 December 2022
에스큐엘라이트(SQLite)는 2000년 리처드 힙(Richard Hipp)이 개발한 관계형 데이터베이스 관리 시스템(RDBMS)이다. 서버에 설치되는 다른 관계형 데이터베이스 관리 시스템(RDBMS)와 달리 에스큐엘라이트(SQLite)는 응용 프로그램에 임베디드(embedded) 방식으로 삽입된다. 에스큐엘라이트는 용량이 매우 작으며, 웹브라우저와 안드로이드 운영체제 등에 기본 탑재되어 있다. 저작권이 소멸된 퍼블릭 도메인이므로 누구나 무료로 사용할 수 있다.
개요[edit | edit source]
SQLite는 파일기반의 임베디드 SQL 데이터베이스 엔진이다. 주로 응용 프로그램에 넣어 사용하는 비교적 가벼운 데이터베이스이며 빠르고, 무료이며 사용하기 쉬운 경량 라이브러리이다. 에스큐엘라이트 또는 시퀄라이트라고 읽는다고 한다.
역사[edit | edit source]
- 2000년 : 리처드 힙과 한 동료가 제너럴 다이내믹스에서 일할때 2000년 초 SQQL을 시작한다. SQLite는 HP-UX 컴퓨터에서 실행되는 IBM Informix 데이터베이스 를 대체하기 위해 유도 미사일 에 사용되었다. 그래서 해군과 계약을 체결했다.
- 2000년 8월 : SQL의 첫 번째 버전이 발표되었다.
- 2004년 : ADOLed와 함께 생산되는 SQL 3.0이발표되며, 지역화와 유니코드가 추가된다.
특징[edit | edit source]
- Serverless: 별도 서버 없는 로컬 전용 데이터베이스
- Zero Configuration: 컴파일 후 즉시 사용 가능
- Open Software: 자유롭게 수정 가능한 라이센스(Public Domain)
- Reliability: 간결함에도 불구하고 RDBMS에서 요구하는 ACID 충족
SQLite는 대부분의 SQL-92 표준을 SQL에 구현하지만 일부 기능이 부족하다. 예를 들어 부분적으로 트리거를 제공하고 뷰에 쓸 수 없다. (그러나 이 기능을 제공하는 INSTEAD OF 트리거를 제공한다) 복잡한 쿼리를 제공하지만 열을 수정하거나 삭제할 수 없기 때문에 여전히 ALTER TABLE 기능이 제한적이다.
SQLite는 SQL 호환 DBMS에 대해 비정상적인 유형의 시스템을 사용한다. 대부분의 SQL 데이터베이스 시스템에서처럼 유형을 열에 할당하는 대신 형식이 개별 값에 할당된다. 언어 용어로 동적으로 입력된다. 더욱이 Perl과 같은 방식으로 약하게 타입 지정된다. 하나는 문자열을 정수로 삽입 할 수 있다. (비록 SQLite가 문자열을 정수형으로 변환하려고 시도할지라도 열의 우선 형이 정수일 때) 이로 인해 특히 동적 유형의 스크립팅 언어에 바인딩 될 때 열에 유연성이 추가된다. 그러나 이 기술은 다른 SQL 제품으로 이식할 수 없다. 일반적인 비판은 SQLite의 유형 시스템이 다른 제품에 정적으로 입력된 열에 의해 제공되는 데이터 무결성 메커니즘이 부족하다. SQLite 웹 사이트는 "엄격한 선호도" 모드를 설명하지만 이 기능은 아직 추가되지 않았다. 그러나 제약 조건과 같이 구현될 수 있다. CHECK(typeof(x)='integer')
테이블에는 일반적으로 빠른 액세스를 제공하는 숨겨진 rowid 인덱스 열이 포함된다. 데이터베이스에 Integer Primary Key 열이 포함되어있는 경우 SQLite는 일반적으로이를 rowid 의 별칭으로 처리하여 내용을 최적화하여 엄격하게 형식화된 64비트 부호 있는 정수로 저장하고 그 동작을 다소 비슷하게 변경한다. SQLite의 향후 버전에는 컬럼이 rowid 와 같은 동작을 하는지 여부를 인트로 스펙 (introspect) 하여 약하게 타입이 지정되고 자동 증가하지 않는 정수 기본 키와 구분할 수 있는 명령이 포함될 수 있다.
완전한 유니코드 기능을 갖춘 SQLite 는 선택 사항이다.
여러 컴퓨터 프로세스 또는 스레드가 동일한 데이터베이스에 동시에 액세스 할 수 있다. 여러 개의 읽기 액세스가 동시에 충족될 수 있다. 쓰기 액세스는 현재 다른 액세스가 서비스되고 있지 않은 경우에만 충족될 수 있다. 그렇지 않으면 쓰기 액세스가 오류 코드와 함께 실패하거나 구성 가능한 시간 초과가 만료될 때까지 자동으로 재시도 될 수 있다. 이 동시 액세스 상황은 임시 테이블을 처리할 때 변경된다. WAL ( write-ahead logging )이 설정되어 동시 읽기 W 쓰기가 가능할 때 버전 3.7에서는 이 제한이 완화된다.
SQLite 버전 3.7.4는 처음으로 FTS4 (전체 텍스트 검색) 모듈을 추가 한다. 이 모듈은 구형 FTS3 모듈에 비해 향상된 기능을 제공한다. FTS4를 사용하면 검색 엔진이 웹 페이지를 검색하는 것과 유사한 방식으로 문서에 대한 전체 텍스트 검색을 수행 할 수 있다. 버전 3.8.2 없이 테이블을 생성하기 위한 지원을 추가 ROWID, 공간 및 성능 향상을 제공할 수있다. 공통 테이블 표현식 지원이 버전 3.8.3의 SQLite에 추가되었다.
2015 년 json1 확장 과 새로운 하위 유형 인터페이스를 사용하여 SQLite 버전 3.9에서 JSON 컨텐츠 관리 기능을 도입했다.[1]
활용[edit | edit source]
미들웨어[edit | edit source]
- 로버트 심슨에 의해 개발된 ADO.NET 어댑터는 2010년 4월부터 에스큐엘라이트 개발자와 공동으로 유지 관리된다.
- ODBC 드라이버는 크리스티앙 베르너(Christian Werner)에 의해 개발되고 별도로 관리한다. 베르너의 ODBC 드라이버는 오픈 오피스(OpenOffice.org)에서 에스큐엘라이트에 액세스하는데 권장되는 연결 방법이다.
- 윈도우즈에서 자바스크립트 및 VB스크립트와 같은 스크립트로 작성된 언어로 에스큐엘라이트에 액세스할 수 있도록 하는 COM(액티브엑스) 래퍼이다. 이렇게 하면 HTML 애플리케이션(HTA)에 에스큐엘라이트 데이터베이스 기능이 추가된다.
웹 브라우저[edit | edit source]
- 브라우저 구글 크롬, 오페라, 사파리와 안드로이드 브라우저 모두 사용하여 정보를 저장하고 브라우저 내에서 SQLite는 데이터베이스에서 검색을 허용한다.
- Mozilla Firefox 및 Mozilla Thunderbird 는 내부적으로 관리되는 SQLite 데이터베이스에 다양한 구성 데이터 (책갈피, 쿠키, 연락처 등)를 저장합니다. Firefox 버전 57 ( "Firefox Quantum" ) 이 출현 할 때까지이 기능을 지원하는 코드를 사용하여 임의의 SQLite 데이터베이스를 관리하기위한 사용자 인터페이스를 제공하는 타사 추가 기능이 있다.
- 일부 타사 추가 기능은 JavaScript API를 사용하여 SQLite 데이터베이스를 관리 할 수 있다.
웹 응용 프로그램 프레임 워크[edit | edit source]
- 버그 질라
- Django 의 기본 데이터베이스 관리 시스템
- 드루팔
- Trac
- Ruby on Rails 의 기본 데이터베이스 관리 시스템
- web2py
- Laravel
다양한[edit | edit source]
- Adobe Systems 는 SQLite를 Adobe AIR 의 표준 데이터베이스 인 Adobe Photoshop Lightroom 에서 파일 형식으로 사용 하고 Adobe Reader 에서 내부적으로 사용한다.
- Evernote 는 SQLite를 사용하여 로컬 데이터베이스 저장소를 Windows에 저장한다.
- Skype
- 서비스 관리 기능 내 서비스 관리를 위해 사용, 솔라리스 및 오픈 솔라리스 운영 체제
- 화염 (악성 코드)
- BMW IDrive Sat Nav 시스템
운영 체제[edit | edit source]
SQLite는 기본적으로 다음과 같이 포함한다.
- 블랙 베리의 블랙 베리 10 OS
- 심비안 OS
- 노키아의 Maemo
- Google의 Android
- Linux Foundation의 MeeGo
- LG의 웹 OS
- NetBSD
- 2014 년 1 월에 10-RELEASE 버전부터 시작하는 FreeBSD 는 코어 패키지 관리 시스템에서 사용된다.
- 일루 모스
- 서비스 관리 기능 데이터베이스가 부팅을 위해 직렬화 되는 Oracle Solaris 10 .
- Apple 은 macOS 의 Core Data API에서 MacOS X 10.4 이후 의 원래 구현 과 비디오 및 노래 관리 , iPhone 에서의 텍스트 메시지 저장을위한 iOS 에서 옵션으로 채택했다.
- 티젠
- Windows 10[1]
참고자료[edit | edit source]
- 〈SQLite〉, 《SQLite 공식 웹사이트》
- 똑똑이,〈[SQLite SQLite 소개 및 간단한 실습해보기]〉《네이버블로그》, 2017-03-25
- 〈En SQLite〉, 《위키피디아》
- 〈Ja SQLite〉, 《위키피디아》
- 〈Fr SQLite〉, 《위키피디아》