01. 시작하면서…
기존에 Java로 전산시스템을 유지보수하는 일만 하다가 신규로 윈도우즈 애플리케이션을 개발 및 유지보수를 할 일이 생겨서 이것저것 공부를 하고 있습니다. 사실 리눅스 시스템과의 호환성이나 요즘 추세인 멀티플랫폼을 생각해서 Qt4와 같은 멀티플랫폼을 지원하는 프레임워크를 사용하고 싶었으나 나 혼자만 사용할 프로젝트라면 그렇게 하겠지만 회사차원에서 개발 및 유지보수를 할 것이므로 회사에서 선택한 언어인 C#을 공부하고 있습니다.
개발언어나 프레임워크를 빠르게 익히는 방법은 역시 학습용으로 작은 프로젝트를 진행해보는 것입니다. 저도 C#과 WPF를 스터디하기 위해서 간단한 스터디용 프로젝트를 진행해보려고 하는데요… 최근에 관심을 갖게된 SQLite3를 애플리케이션의 설정파일이나 데이터파일을 대체하는 용도로 사용해보려고 합니다. 기존에 Oracle이나 MySQL과 같은 RDBMS를 사용해보신 분들이라면 쉽게 사용할 수 있을 것 같더군요.
02. SQLite3 주요특징
SQLite is a in-process library that implements a self-contained, serverless, zero-configuration,transactional SQL database engine
SQLite3 공식홈페이지에 About 메뉴를 클릭하면 간단한 특징이 적혀있습니다. 위의 문장을 해석하면…
SQLite는 독립적이고 서버가 불필요하며,설정이 필요없고 트랜잭션을 지원하는 SQL데이터베스 엔진으로 구현된 개발 중인 라이브러리입니다. (아.. 발번역)
위에서 독립적이라는 의미는 아마도 플랫폼 독립적이라는 것 같습니다. 요즘에 안드로이드와 같은 모바일 앱의 데이터베이스로 많이 활용되고 있는 것으로 알고 있습니다.
애플리케이션의 설정과 데이터들을 보관할 용도로는 딱인 것 같더군요. 단순한 것을 좋아하는 저에겐 다 맘에 드는 특징이었습니다. 가장 마음에 든 것은 serverless였지요. 기존에 사용하던 RDBMS와 같은 쿼리를 사용할 수 있지만 로컬서버던 원격서버던 RDBMS 서버를 구동하고 관리해야한다는 부담이 줄 수 있다는 장점이 있습니다.
일단, C#에서 설정파일 및 데이터파일로 사용하기 위해서 SQLite를 미리 알아보는 시간을 가져보려고 합니다.
03. SQLite3 설치
SQLite의 설치는 너무 간단해서 살짝 당황했습니다. 단순히 압축풀어서 원하는 위치에 풀어주면 끝입니다.(윈도우즈 시스템에서 setup.exe를 실행하는 것이 너무 익숙해서…)
공식홈페이지를 접속합니다.(아래의 스크린샷은 전부 2012.03.25일자 기준이므로 시간이 지나서 달라질 수 있음을 참고하시길 바라겠습니다.) 접속주소는 http://sqlite.org/입니다.
메인화면을 접속하면 상단에 Dowload 메뉴를 보실 수 있습니다.
다운로드 화면을 들어가면 윈도우즈 시스템을 위해서 컴파일된 바이너리를 다운로드할 수 있습니다.
용량도 정말 작습니다. 254KB… 압축을 풀면 더 가관입니다.(실행파일 딸랑 하나…)
압축을 푼 디렉토리의 이름을 접근하기 편하게 이름을 바꿉니다.
디렉토리의 이름을 sqlite3로 변경합니다.
여기에서 뭔가 잘 못된줄 알았습니다. 너무 간단해서… 이게 설치의 마지막입니다. 사용할 준비가 완료된 것이지요. 다운받은 exe파일은 SQLite를 쉘에서 사용할 수 있도록 해주는 커맨드라인 쉘 인터페이스입니다.
04. SQLite3 실행하기
윈도우즈 상에서 SQLite3를 사용해보기 위해서는 cmd.exe를 사용합니다. Windows키 + R을 눌러서 cmd.exe를 실행합니다.
이제 cmd.exe를 실행해서 C:sqlite3로 이동합니다.
이제는 아래의 명령어를 실행해서 SQLite3를 실행합니다.
c:sqlite3> sqlite3 test.db
test.db라는 SQLite3 데이터베이스 파일명으로 지정하여 실행합니다.(해당 디렉토리를 열어보면 아직 test.db 파일은 생성되진 않았습니다.)
이제부터 입력되는 명령어나 쿼리는 SQLite용 명령어나 쿼리뿐입니다.
SQLite의 경우에는 여러 개의 database 파일을 한꺼번에 사용할 수 있습니다. .database 명령어는 그렇게 연결된 데이터베이스파일의 목록을 보여주는 명령어입니다.
테이블 생성
간단하게 테이블을 하나 생성해보겠습니다.(대소문자는 가리지 않으므로 편하게 입력하셔도 됩니다. 저는 읽기 편하도록 테이블명과 컬럼명은 소문자로 처리하였습니다.)
기존에 오라클이나 MySQL과 같은 RDBMS를 사용해보신 분이라면 쉽게 이해할 수 있을 것입니다. 테이블이 추가되었으니 .table 명령어로 확인해봅니다.
sqlite> .table
SQLite에서 쿼리를 제외한 나머지 명령어는 .(dot)로 시작합니다. 명령어의 목록은 .help를 입력하면 명령어 목록과 설명을 확인할 수 있습니다.
t1 이라는 테이블명이 출력되는 것을 확인할 수 있습니다.
데이터 추가(Insert)
이제 테이블에 데이터를 넣어보도록 하겠습니다.
테이블 생성과 마찬가지로 RDBMS를 기존에 사용해보신 분이라면 쉽게 이해하실 수 있습니다. 위에서 DATETIME 명령어는 오라클의 sysdate와 유사한 것입니다. 이제는 SELECT문을 이용해서 추가한 데이터를 조회해보도록 하겠습니다.
테이블 생성(create table), 데이터 추가(insert)와 마찬가지로 쿼리는 기존의 RDBMS와 거의 동일합니다. SELECT 문의 결과가 조회됩니다만… ‘|’ 문자열로 분리된 데이터는 조금 보기가 어렵습니다. 아래의 명령어를 이용해서 보이 좋게 바꿔봅니다.
sqlite> .header on sqlite> .mode column
위의 명령어를 이용하면 기존의 오라클 클라이언트의 SQL*Plus와 유사하게 조회되는 것을 확인할 수 있습니다.
참고) INTEGER형의 Primary Key 컬럼정확한 내용은 모르겠지만… 아마 Integer형으로 Primary Key로 지정하면 Auto-Increment 특징을 가지는 것 같습니다. 위와 유사한 방식으로 t1 테이블에 데이터를 2 row 추가해봤는데… 아래와 같습니다.
05. 마치면서…
간단하게 사용해보니… 딱 제 취향입니다. 공식문서 중에 대용량 사이트의 DB로도 사용이 가능하다고 하는데… 그건 약간 회의적입니다만 애플리케이션의 설정파일을 대체하거나 데이터파일을 대체하는 것은 가능할 것 같기도 합니다.
앞으로는 C#에서 SQLite를 사용하는 법을 찾아서 직접 사용해보려고 합니다.
댓글 없음:
댓글 쓰기