SQLite

SQLite
SQLite
개발자D. 리처드 힙
초기출시2000년8월17일;
23년전
(2000-08-17)
안정적 해제3.43.1[1] (2023년 9월 11일, 6일(2023년 9월 11일))[±]
저장소
기재.C
운영체제크로스 플랫폼
크기699 KiB
유형RDBMS(내장)
면허증.퍼블릭 도메인[2]
웹사이트sqlite.org Edit this at Wikidata
SQLite 데이터베이스 파일 형식
파일 확장자
.sqlite, .sqlite3, .db, .db3, .s3db, .sl3
인터넷 매체 유형application/vnd.sqlite3[3]
매직넘버53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00(영단 ASCII "SQLite 포맷 3")
초기출시2004-06-18
오픈 포맷?예(공용 도메인)
웹사이트www.sqlite.org/fileformat2.html

SQLite(/ˌɛsˌkjuːˌɛlˈaɪt/, /ˈsːkwɪlaəˌt/)는 C 프로그래밍 언어로 작성된 데이터베이스 엔진입니다.독립형 앱이 아니라 소프트웨어 개발자에 내장하는 라이브러리입니다.따라서 내장된 데이터베이스 제품군에 속합니다.여러 상위 웹 브라우저, 운영 체제, 휴대 전화 및 기타 임베디드 [7]시스템에 사용되기 때문에 가장 널리 배포되는 데이터베이스 엔진입니다.

많은 프로그래밍 언어가 SQLite 라이브러리에 바인딩되어 있습니다.일반적으로 Postgre를 따릅니다.SQL 구문이지만 [8][9]기본적으로 형식 검사를 적용하지는 않습니다.예를 들어 정수로 정의된 에 문자열을 삽입할 수 있습니다.

역사

D. Richard Hipp는 2000년 [10]General Dynamics에서 근무하면서 미국 해군과 계약을 맺고 SQLite를 설계했습니다.Hip은 유도 미사일 구축함에 탑재된 손상 제어 시스템에 사용되는 소프트웨어를 설계하고 있었습니다. Hip은 원래 IBM Informix 데이터베이스 백엔드에 HP-UX를 사용했습니다.SQLite는 Tcl [11]확장자로 시작했습니다.

2000년 8월, GDBM(GNU Database Manager) 기반 스토리지가 포함된 SQLite 버전 1.0이 출시되었습니다.2001년 9월, SQLite 2.0은 gdbm을 맞춤형 B-tree 구현으로 대체하여 트랜잭션 기능을 추가했습니다.2004년 6월, SQLite 3.0은 America Online에서 부분적으로 자금을 지원하는 국제화, 매니페스트 타이핑 및 기타 주요 개선 사항을 추가했습니다.2011년 [12]Hipp는 문서 지향 데이터베이스를 위해 설계된 SQL의 기능적 수퍼셋인 UnQL을 발표하고 SQLite에 NoSQL 인터페이스를 추가할 계획을 발표했습니다.2018년, SQLite는 베네딕트 규칙에 기반한 행동 강령을 채택하여 논란을 일으켰고 이후 윤리 [13]강령으로 이름이 변경되었습니다.

SQLite는 [14][15][16]의회 도서관에서 사용을 승인한 데이터셋의 장기 저장을 위해 권장되는 4가지 형식 중 하나입니다.

설계.

SQLite는 데이터베이스 관리 시스템을 설치하거나 데이터베이스 관리자가 필요 없이 프로그램을 운영할 수 있도록 설계되었습니다.클라이언트-서버 데이터베이스 관리 시스템과 달리 SQLite 엔진에는 응용프로그램이 통신하는 독립 실행형 프로세스가 없습니다.대신 링커는 SQLite 라이브러리를 정적 또는 동적으로 간단한 함수 호출을 통해 SQLite의 기능을 사용하는 응용 프로그램에 통합하여 데이터베이스 작업의 지연 시간을 줄입니다. 동시성이 거의 없는 간단한 쿼리의 경우 SQLite 성능을 통해 프로세스 간 통신의 오버헤드를 방지할 수 있습니다.

서버리스 설계로 인해 SQLite 애플리케이션은 클라이언트-서버 데이터베이스보다 적은 구성을 필요로 합니다.SQLite는 서비스 관리(예: 시작 스크립트)나 GRANT 및 암호에 기반한 액세스 제어가 필요하지 않기 때문에 0-conf라고[17] 합니다.액세스 제어는 데이터베이스 파일 자체에 부여된 파일 시스템 권한에 의해 처리됩니다.클라이언트-서버 시스템의 데이터베이스는 데몬 프로세스에만 접근할 수 있는 파일-시스템 권한을 사용합니다. 데몬 프로세스는 내부적으로 잠금을 처리하여 여러 프로세스의 동시 쓰기를 허용합니다.

SQLite는 호스트 시스템에 전체 데이터베이스(정의, 테이블, 인덱스 및 데이터 자체)를 하나의 크로스 플랫폼 파일로 저장하므로 여러 프로세스 또는 스레드가 동일한 데이터베이스에 동시에 액세스할 수 있습니다.쓰기 중에 데이터베이스 파일을 잠그면 이 간단한 설계를 구현합니다.오류 코드와 함께 쓰기 액세스가 실패하거나 구성 가능한 시간 초과가 만료될 때까지 다시 시도할 수 있습니다.SQLite 읽기 작업은 다중 작업이 가능하지만 서버리스 설계로 인해 순차적으로만 쓰기를 수행할 수 있습니다.이 동시 액세스 제한은 임시 테이블에는 적용되지 않으며 WAL(write-ahead logging)을 통해 동시 읽기 및 [18]쓰기가 가능하므로 버전 3.7에서 완화됩니다.SQLite는 파일 시스템 잠금에 의존해야 하기 때문에 쓰기 집약적인 [19]구현에는 적합하지 않습니다.

SQLite에서 Postgre를 사용합니다.참조 플랫폼으로서의 SQL."포스트그레가 뭘 할까요?SQL do"는 SQL [20][21]표준을 이해하기 위해 사용됩니다.주요한 차이 중 하나는 SQLite가 기본 키를 제외하고 형식 검사를 강제하지 않는다는 것입니다. 값의 유형은 동적이고 스키마에 의해 엄격하게 제한되지 않습니다(저장 시 스키마가 변환을 트리거하지만 이러한 변환이 잠재적으로 가역적인 경우).SQLite는 Postel의 [22]규칙을 따르려고 노력합니다.

특징들

SQLite는 SQL에 대해 대부분의 SQL-92 표준을 구현하지만 일부 기능이 부족합니다.예를 들어, 부분적으로만 트리거를 제공하고 에 쓸 수는 없습니다(단, 이 기능을 제공하는 트리거 대신 제공합니다).ALTERTABLE 문에 대한 지원은 [23]제한적입니다.

SQLite는 SQL 호환 DBMS에 대해 특이한 유형 시스템을 사용합니다. 대부분의 SQL 데이터베이스 시스템처럼 에 유형을 할당하는 대신 개별 값에 유형을 할당합니다. 언어 용어에서는 동적으로 입력됩니다.게다가, 이것은 Perl과 같은 방식으로 약하게 타이핑됩니다: 문자열정수 열에 삽입할 수 있습니다(SQLite는 문자열을 정수로 변환하려고 하지만, 열의 선호 유형이 정수일 경우).이것은 특히 동적으로 입력된 스크립팅 언어에 바인딩될 때 열에 유연성을 추가합니다.그러나 이 기법은 다른 SQL 제품에서는 휴대할 수 없습니다.SQLite의 유형 시스템은 정적으로 입력된 열을 통해 제공되는 데이터 무결성 메커니즘이 부족하지만 다음과 같은 제약 조건을 통해 에뮬레이트될 수 있습니다.CHECK(typeof(x)='integer').[10]엄격한 표는 버전 [22]3.37.1에서 추가되었습니다[10].

테이블에는 일반적으로 숨겨진 행 인덱스 열이 포함되어 있으므로 [24]더 빠른 액세스가 가능합니다.데이터베이스에 Integer Primary Key 열이 포함된 경우 SQLite는 일반적으로 rowid에 대한 별칭으로 처리하여 내용을 엄격하게 입력된 64비트 부호 정수로 저장하고 동작을 자동 증분 열과 유사하게 변경합니다.이후 버전의 SQLite에는 로우이드와 같은 동작이 열에 포함되어 있는지 여부를 검사하여 이러한 열을 약하게 입력된 비자동 증가 정수 기본 [25][failed verification]키와 구별하는 명령이 포함될 수 있습니다[when?].

2009년 10월 14일에 발표된 버전 3.6.19는 외국 키 [26][27]제약에 대한 지원을 추가했습니다.

저장 프로시저는 지원되지 않습니다. SQLite의 일반적인 사용 사례는 [28]데이터베이스를 중심으로 자체 프로시저를 정의할 수 있는 호스트 애플리케이션에 내장되는 것이기 때문에 단순성을 선호하기 위해 개발자가 명시적으로 선택한 것입니다.

유니코드 대/소문자 변환에 대한 전체 지원은 옵션 [29]확장을 통해 활성화할 수 있습니다.

SQLite 버전 3.7.4에서는 FTS4(전체 텍스트 검색) 모듈이 처음 추가되었는데, 이 모듈은 이전 FTS3 [30]모듈보다 향상된 기능을 갖추고 있습니다.FTS4를 사용하면 검색 엔진이 [31]웹 페이지를 검색하는 방법과 유사한 문서에 대한 전체 텍스트 검색을 수행할 수 있습니다.버전 3.8.2에서는 공간과 성능을 [33]향상시킬 수 있는 [32]없는 테이블을 만들기 위한 지원이 추가되었습니다.버전 3.8.3.[34]3.3.8.11에서 SQLite에 공통 테이블 표현 지원이 추가되었습니다. 3.8.11에서는 FTS5라는 새로운 검색 모듈이 추가되었는데, 버전에서 범프가 필요한 (FTS4와 비교하여) 더 급진적인 변경 사항입니다.

2015년에 SQLite 버전 3.9는 json1[35] 확장과 새로운 하위 유형 인터페이스를 통해 JSON 콘텐츠 관리를 도입했습니다.

버전 3.33.0에서 지원되는 최대 데이터베이스 크기는 281TB입니다.[36]

개발 및 보급

SQLite의 코드는 SQLite를 비관계형 데이터베이스 형식의 로컬 캐시로 사용하는 분산 버전 제어 시스템인 Fossil과 구현 [37][38]언어로 SQLite의 SQL을 호스팅합니다.

SQLite3이라는[39] 독립 실행형 명령줄 셸 프로그램은 SQLite의 배포판에서 제공됩니다.데이터베이스 작성, 테이블 정의, 행 삽입 및 변경, 쿼리 실행 및 SQLite 데이터베이스 파일 관리에 사용할 수 있습니다.SQLite 라이브러리를 사용하는 응용프로그램을 작성하는 데에도 사용됩니다.

SQLite는 각 릴리스 이전에 자동 회귀 테스트를 사용합니다.릴리스 검증의 일환으로 200만[40] 건 이상의 테스트가 실행됩니다.2009년 8월 10일 SQLite 3.6.17 릴리스부터 SQLite 릴리스는 코드 적용 범위의 구성 요소 중 하나인 100% 분기 테스트 적용 범위를 가지고 있습니다.시험과 시험 하네스는 부분적으로는 공용 영역이고 부분적으로는 [40]고유 영역입니다.

주목할 만한 용도

운영 체제

SQLite는 기본적으로 [11]다음에 포함됩니다.

미들웨어

  • Robert Simpson이 처음 개발한 ADO.NET 어댑터는 2010년 [42]4월 이후 SQLite 개발자와 공동으로 유지 관리됩니다.
  • ODBC 드라이버는 Christian [43]Werner에 의해 별도로 개발되어 유지 관리되고 있습니다.Werner의 ODBC 드라이버는 OpenOffice.org 에서 SQLite에 액세스하는 데 권장되는 연결 방법입니다.
  • Windows에서 SQLite를 JScriptVBScript와 같은 스크립트 언어로 액세스할 수 있도록 하는 COM(ActiveX) 래퍼입니다.이렇게 하면 HTML Applications(HTA)[45]에 SQLite 데이터베이스 기능이 추가됩니다.

웹 브라우저

  • 브라우저 Google Chrome, Opera, Safari, Android Browser 모두 브라우저 내의 SQLite 데이터베이스에 정보를 저장하고 검색할 수 있으며, 공식 SQLite Wasm (WebAssembly) [46]빌드를 사용하거나 웹 SQL Database 기술을 사용할 수 있습니다.후자가 더 이상 사용되지 않게 되었지만(이름은 SQLite Wasmor 또는 IndexedDB로 대체됨).내부적으로 이러한 Chrome 기반 브라우저는 사이트 방문 기록, 쿠키, 다운로드 기록 [47]등과 같은 구성 데이터를 저장하기 위해 SQLite 데이터베이스를 사용합니다.
  • Mozilla Firefox 및 Mozilla Thunderbird는 내부적으로 관리되는 SQLite 데이터베이스에 다양한 구성 데이터(북마크, 쿠키, 연락처 등)를 저장합니다.Firefox 버전 57("Firefox Quantum") 이전에는 이 기능을 지원하는 API를 사용하여 임의 SQLite [48]데이터베이스를 관리하는 사용자 인터페이스를 제공하는 타사 추가 기능이 있었습니다.
  • 여러 타사 추가 기능은 JavaScript API를 사용하여 SQLite [49][50]데이터베이스를 관리할 수 있습니다.

웹 애플리케이션 프레임워크

다른이들

참고 항목

참고문헌

인용문

  1. ^ "SQLite Release 3.43.1 On 2023-09-11". 11 September 2023. Retrieved 12 September 2023.
  2. ^ "SQLite Copyright". sqlite.org. Retrieved May 17, 2010.
  3. ^ "SQLite database file format media type at IANA". Internet Assigned Numbers Authority. IANA. Retrieved 2019-03-08.
  4. ^ "Why SQLite succeeded as a database — Richard Hipp, creator of SQLite". The Changelog. Episode 201. Event occurs at 00:17:25. How do I pronounce the name of the product? I say S-Q-L-ite, like a mineral.
  5. ^ D. Richard Hipp (presenter) (May 31, 2006). An Introduction to SQLite (video). Google Inc. Event occurs at 00:01:14. Retrieved March 23, 2010. [...] ess-kju-ellite [...]
  6. ^ D. Richard Hipp (presenter) (May 31, 2006). An Introduction to SQLite. Google Inc. Event occurs at 00:48:15. Retrieved March 23, 2010. [...] sequelite [...]
  7. ^ "Most Widely Deployed SQL Database Estimates". SQLite.org. Retrieved May 11, 2011.
  8. ^ Owens, Michael (2006). "Chapter 4: SQL". In Gilmore, Jason; Thomas, Keir (eds.). The Definitive Guide to SQLite. D. Richard Hipp (foreword), Preston Hagar (technical reviewer). Apress. p. 133. ISBN 978-1-59059-673-9. Retrieved 30 December 2014.
  9. ^ "STRICT Tables".
  10. ^ a b Owens, Michael (2006). The Definitive Guide to SQLite. Apress. doi:10.1007/978-1-4302-0172-4_1. ISBN 978-1-59059-673-9.
  11. ^ a b c "Well-Known Users Of SQLite". SQLite. Retrieved August 5, 2015.
  12. ^ "Interview: Richard Hipp on UnQL, a New Query Language for Document Databases". InfoQ. August 4, 2011. Retrieved October 5, 2011.
  13. ^ McCarthy, Kieren. "SQLite creator crucified after code of conduct warns devs to love God, and not kill, commit adultery, steal, curse..." www.theregister.com. Retrieved 2022-11-17.
  14. ^ "LoC Recommended Storage Format". www.sqlite.org. Retrieved 2020-04-09.
  15. ^ "SQLite, Version 3". www.loc.gov. 2017-03-28. Retrieved 2020-04-09.
  16. ^ "Recommended Formats Statement – datasets/databases". Library of Congress. Retrieved 2020-04-09.
  17. ^ "SQLite Is A Zero-Configuration Database". SQLite.org. Retrieved August 3, 2015.
  18. ^ "Write Ahead Logging in SQLite 3.7". SQLite.org. Retrieved September 3, 2011. WAL provides more concurrency as readers do not block writers and a writer does not block readers. Reading and writing can proceed concurrently.
  19. ^ "Appropriate Uses For SQLite". SQLite.org. Retrieved 2015-09-03.
  20. ^ "PGCon 2014: Clustering and VODKA". Lwn.net. Retrieved 2017-01-06.
  21. ^ "PGCon2014: SQLite: Protégé of PostgreSQL". Pgcon.org. 20 September 2015. Retrieved 2017-01-06.
  22. ^ a b "SQLite: StrictMode". Sqlite.org. Retrieved September 3, 2015.
  23. ^ "Release History of SQLite".
  24. ^ "SQL As Understood By SQLite". SQLite. Retrieved 21 May 2018. Searching for a record with a specific rowid, or for all records with rowids within a specified range is around twice as fast as a similar search made by specifying any other PRIMARY KEY or indexed value.
  25. ^ "SQLite: Check-in [2494132a]". www.sqlite.org. 2017-11-28. Add the "PRAGMA table_ipk(TABLE)" command for evaluation purposes.
  26. ^ Karwin, Bill (May 2010). Carter, Jacquelyn (ed.). SQL Antipatterns: Avoiding the Pitfalls of Database Programming. The Pragmatic Bookshelf. p. 70. ISBN 978-1-934356-55-5. Sometimes you're forced to use a database brand that doesn't support foreign key constraints (for example MySQL's MyISAM storage engine or SQLite prior to version 3.6.19).
  27. ^ "SQLite Release 3.6.19 On 2009-10-14". sqlite.org.
  28. ^ 출처 : SQLite 포럼에 대한 개발자 의견
  29. ^ "Case-insensitive matching of Unicode characters does not work". SQLite Frequently Asked Questions. Retrieved 2015-09-03.
  30. ^ "SQLite Release 3.7.4 On 2010-12-08". SQLite.org. December 8, 2010. Retrieved September 3, 2015.
  31. ^ "SQLite FTS3 and FTS4 Extensions". SQLite.org. Retrieved September 3, 2015.
  32. ^ "SQLite Release 3.8.2 On 2013-12-06". SQLite.org. December 6, 2013. Retrieved September 3, 2015.
  33. ^ "The WITHOUT ROWID Optimization". SQLite.org. Retrieved September 3, 2015.
  34. ^ "SQLite Release 3.8.3 On 2014-02-03". SQLite.org. February 3, 2014. Retrieved September 3, 2015.
  35. ^ "The JSON1 Extension". SQLite.org.
  36. ^ "Limits In SQLite". SQLite.org.
  37. ^ "Thoughts On The Design Of The Fossil DVCS". Fossil-scm.org. July 12, 2017. Retrieved October 14, 2022.
  38. ^ "Fossil: Fossil Performance". Fossil-scm.org. August 23, 2009. Retrieved September 12, 2009.
  39. ^ "Command Line Shell For SQLite". Sqlite.org. Retrieved October 14, 2022.
  40. ^ a b "How SQLite Is Tested". SQLite.org. Retrieved September 12, 2009.
  41. ^ "To use the version of SQLite that is installed with Windows". 20 October 2022.
  42. ^ "Home". System.Data.SQLite. 2016-12-30. Retrieved 2017-01-06.
  43. ^ "SQLite ODBC Driver". Ch-werner.de. 2016-12-01. Retrieved 2017-01-06.
  44. ^ "Using SQLite Database with OpenOffice.org : Version 2.0" (PDF). Documentation.openoffice.org. Retrieved 2017-01-06.
  45. ^ "sqlite — Sqlite Wrappers". SQLite.org. February 7, 2009. Retrieved February 7, 2009.
  46. ^ "sqlite3 WebAssembly & JavaScript Documentation Index". SQLite. Retrieved 2023-05-08.
  47. ^ "Location of Google Chrome history". www.foxtonforensics.com. 2020-10-06. Retrieved 2020-10-06.
  48. ^ "SQLite Manager :: Add-ons for Firefox". Addons.mozilla.org. 2015-02-28. Archived from the original on 2017-01-02. Retrieved 2017-01-06.
  49. ^ "SQLite Manager – Get this Extension for 🦊 Firefox (en-US)". Addons.mozilla.org. 2018-07-24. Retrieved 2018-10-05.
  50. ^ "SQLite Reader – Get this Extension for 🦊 Firefox (en-US)". Addons.mozilla.org. 2018-09-01. Retrieved 2018-10-05.
  51. ^ "Using SQL to find my best photo of a pelican according to Apple Photo". Simon Willison’s Weblog. Retrieved May 23, 2020.
  52. ^ "Audacity 3.0.0 Released". 17 March 2021. Retrieved March 17, 2021.
  53. ^ Hinegardner, Jeremy (August 28, 2007). "Skype client using SQLite?". sqlite-users (Mailing list). Archived from the original on 2007-11-17. Retrieved June 14, 2010.

원천

외부 링크