SQLite의 발전

소타의 이미지

SQLiteDBMS 개발을 일시정지(중지 아님 -.-)한지 8개월쯤 되어갑니다.
그동안(2006년 8월~2007년 4월) SQLite 엔진 자체에 많은 변화들이 있어 소개합니다 =)

1. FTS(full-text search)1, 2 모듈
SQLite의 컨셉에 맞게 가볍고 빠른 풀텍스트 인덱스 구현
이 기능을 위해 사전에 많은 기능들이 추가되었습니다. 물론 아래의 기능들은 FTS외에도 유용하게 쓸 수 있습니다

1-1. 첫번째로 Virtual Table(http://www.sqlite.org/cvstrac/wiki?p=VirtualTables)인데요.
이건 뷰도 아니고 테이블도 아니여! masterize view같은 개념 같네요;
관련하여 몇가지 새로운 C API의 변경이 있는것 같은데 잘 못찾겠네요

1-2. 그리고 두번째로 동적 라이브러리 로딩 기능(http://www.sqlite.org/cvstrac/wiki?p=LoadableExtensions)이 추가되었습니다
PostgreSQL의 pl/c와 비슷한 개념인데요. SQL문으로 공유 라이브러리를 로딩하고 그것을 DB상에서 함수로 등록할 수 있게 해줍니다
원래 그 전에도 sqlite3_create_collation 등으로 사용할 수 있었는데 별도의 프로그램을 만들때만 가능했는데 이걸 SQL단으로 내리면서 아무데서나 SQL만으로 라이브러리를 로딩하고 함수로 등록해서 사용하는게 가능해졌습니다

관련된 링크는
http://www.sqlite.org/cvstrac/wiki?p=FullTextIndex
http://www.sqlite.org/cvstrac/wiki?p=FtsTwo
http://www.sqlite.org/cvstrac/wiki?p=FtsTwoNotes
등이 있습니다

2. 새로운 Prepared statement API
sqlite3_prepare_v2 함수가 추가되었습니다.
http://sqlite.org/capi3ref.html#sqlite3_prepare_v2

음.. 이건 전에 발견 못했을수도 있지만; sqlite3_collation_needed 라는 놈도 같이 생겨난것 같습니다.

3. 쿼리 옵티마이저의 향상
* Optimizer does a better job of using indices to satisfy ORDER BY clauses that sort on the integer primary key
* Use an index to satisfy an IS NULL operator in the WHERE clause
* Fix a bug that was causing the optimizer to miss an OR optimization opportunity
* The optimizer has more freedom to reorder tables in the FROM clause even in there are LEFT joins.

4. 성능 향상
* Do not read the last page of an overflow chain when deleting the row - just add that page to the freelist.
* Do not store pages being deleted in the rollback journal.
* Do not read in the (meaningless) content of pages extracted from the freelist.
* Do not flush the page cache (and thus avoiding a cache refill) unless another process changes the underlying database file.
* Truncate rather than delete the rollback journal when committing a transaction in exclusive access mode, or when committing the TEMP database.

이 외에도
1. 최대 64개의 테이블 조인 가능(기존에는 32개만 가능)
2. 안정성 향상
3. 쓰레드/프로세스들의 쓰기 경합시의 안정성 향상
4. 등등등등등등등 -.-

그외의 변경점은
http://sqlite.org/changes.html
요기 보세요~~

SQLite도 점점 등치가 커져가네요.. 그래도 아직 다른놈들보다 많이 작고 빠르니 적절한 용도로 쓰면 좋을 놈입니다 =)
SQLite2.x는 쓰레드 2개만 경합해도 깨지는 상황이 부지기수였는데 3으로 오면서 안정적으로 되더니 점점 버전이 올라 지금은 3.3.17입니다. 기능도 많아지고 점점 쓸만해집니다 ㅎㅎ
그래서 SQLiteDBMS도 개발할게 너무 많아져서 -_-;;

그럼 소식 있으면 또 올리겠습니다
중간부터 그나마도 의역하기 귀찮아서 영어로 붙인점 죄송 =3=3
틀린거 있음 바로 잡아주세요~

댓글

imyejin의 이미지

. 댓글은 삭제가 안되네요 실수로 달았는데 -_-

[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

송효진의 이미지

php 에서 항상 최신버전으로 지원해주기를 바랄뿐...

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇개 안되요~

소타의 이미지

SQLite가 다른 DBMS들처럼 잘 변하지 않는 프로토콜이 있고 클라이언트 라이브러리가 있다면 그런 걱정 하지 않아도 될텐데 말이죠 ㅎㅎ
DB엔진 형태의 한계인것 같습니다 ㅎ; 얼른 우분투같은 발빠른 배포판에서 새로 패키징 해주기만 바랄뿐이죠 ^^;

김정균의 이미지

--with-pdo-sqlite3=/usr/lib/sqlite3 과 같이 sqlite3 library 가 있는 디렉토리를 지정해 주시면 되는 거 아닌가요? --with-sqlite 로는 sqlite3 을 지원 하지 않을 것으로 보이던데..

다만.. sqlite 엔진 자체에서 버전 컨트롤을 하고 있기 때문에 무작정 상위 버전으로 올리는 데도 문제가 있습니다. 즉 database format 호환이 되지 않을 수 있거든요 ^^;

송효진의 이미지

C API 의 변경,추가 가 있다면 그에 맞는 php 함수도 변경,추가가 되어야 하는거겠지요.
그리고, DB format 이 호환되지 않을 정도면 SQLite4 가 되는거 아닐까요?

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇개 안되요~

소타의 이미지

sqlite2 -> sqlite3로는 파일 포맷이 변했는데 sqlite3에서도 파일 포맷이 변경되었나 보네요?
sqlite4가 될때쯤엔 어떤 모습일지 궁금합니다 ㅎㅎ

지리즈의 이미지

sqllite가 정말 매력적이죠.

전문적인 DB 시스템보다는 어플리케이션에서 큰 규모의 리스트 매니지먼트 수준에
적절한 DB를 찾는다면 라이센스+성능 등을 고려했을 때 sqllite보다 좋은 것을 찾기 어려운 듯 싶습니다.

There is no spoon. Neo from the Matrix 1999.

There is no spoon. Neo from the Matrix 1999.

소타의 이미지

왠만한 오픈소스라 해도 public domain 라이센스긴 힘든데 말이죠 ^^;
개발자가 참 존경스럽습니다 ㅎㅎ

쩝...의 이미지

SQLite 에서 right 아우터 조인이 아직 지원 안되는 것 같던데,
이거 어떻게 안 될까요??? (left 는 되는 것같던데...)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.