database.sarang.net
UserID
Passwd
Database
ㆍDBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DBMS Q&A 997 게시물 읽기
No. 997
SQLite를 선택하려고 하는데요... 질문...
작성자
신동규
작성일
2004-07-20 12:45
조회수
9,700

이제까지 돈주고 Oracle Personal Edition을 쓰다가 배보다 배꼽이 크다고 생각되어 DBMS를 바꿔 볼려고 합니다.

제가 만드는 프로그램에서의 DBMS의 조건은

1. Win32 계열에서 돌아가야 하고,

2. 로컬에서만 접속하면 되고,

3. 트리거 약간 쓰고,

4. 가능하면 공짜이거나 저렴하면 좋겠고(수십 $ 이내, 응용프로그램에 포함해서 판매할 수 있어야 함),

5. 응용프로그램에서 접속할때 ODBC 등이 아닌 Pro*C/C++과 같은 빠른 전용 브릿지가 있었으면 좋겠고(개발 언어 C/C++),

6. 멀티 쓰레딩이 지원 되면 좋고,

7. 데이터 안정성도 중요합니다.

M$ 계열은 조금 써 보았는데 응용프로그램 만들기가 불편한 것 같습니다.

SQLite란 놈을 선택하려고 하는데, 공짜고, 빠르고, 로컬에서 쓰는데는 지장없고, SQL을 잘 지원하고, 멀티쓰레딩 지원되고... 트리거도 제가 쓰는 한도에서는 괜찮구여.. 프로시저는 함수로 포팅하면 되고.. 좋더군여..

그런데 커서 개념이 조금 이상해서 자꾸 SQLITE_LOCKED 에러가 나는데,,, 원인을 찾을 데가 없네요..

sqlite_compile(), sqlite_step() 을 이용해서 커서처럼 사용하다가, 자꾸 SQLITE_LOCKED 에러가 나서 이렇게 저렇게 해보니,,

예를 들어서 ex1 테이블에 대한 쿼리문을 컴파일하고 쿼리 결과가 10 rows라고 가정할때, sqlite_step()을 이용해서 첫번째 열만 받아온 상태에서

다른 ex2 테이블에 insert를 하려고 하면 SQLITE_LOCKED 에러가 나는 것 같습니다. 이게 원래 정상인가요...

오라클에서는 전혀 문제 없이 사용했었거든요... sqlite_step() 사용 중에 데이터가 더 남아 있으면 전체 데이터베이스가 lock 되는 것인가요..

만약 그렇다면 좀 불편한데요.. 혹시 해결책을 아시는 분이 계시면 좀 알려주세요.

그리고 SQLite의 데이터 안정성에 대한 것은 안심할 수 있을까요.. 해외 인증같은 것을 받을 때 문제가 될까 해서요..

혹시 제 환경에 맞는 다른 좋은 DBMS를 알고 계시면 알려주세요..

감사합니다.

이 글에 대한 댓글이 총 5건 있습니다.

크리티컬한 데이터 처리에 대해서 sqlite 사용은 비추천입니다.

말씀하신 조건들 중에서 7번 데이터 안정성 같은 경우는 파일베이스이기 때문에 하드웨어에서 결함허용에 대한 처리를 해줘야합니다. RAID같은걸루요.

sqlite3이 최근 베타에 접어들었는데, 여기서는 어떨런지 몰라도 2.x 버전대까지는 아무리 클라이언트 라이브러리를 threadsafe 하게 만들어도 약간의 문제가 있는걸로 보입니다. OS나 쓰레드 라이브러리에 따라 좀 다른것 같기도 하구요.. 이쪽은 정확하게는 저도 잘 -.-;;

 

그리고 SQLITE_LOCKED 같은 경우는 1개의 DB파일을 10개의 세션이 접근했다면, 1개의 세션이 트랜젝션의 시작인 "BEGIN" 을 하는 순간부터 9개의 세션은 SQLITE_LOCKED을 리턴합니다. 간단하게 sqlite 클라이언트를 2개 띄우시고 테스트 해보셔도 될듯 합니다. vm 단위까지 접근하는 부분과 LOCK 과는 무관한 걸로 알고 있었는데, 사실이라면 -.-;;; 대략 난감이군요 =_=;

제가 sqlite_compile, sqlite_step를 써서 vm단위 처리를 해 본 결과로는 LOCK를 리턴한 적은 없었습니다.

 

그리고 sqlite를 이용해서 프로그래밍 하실때 한가지 주의하실 점이, 다른 세션이 새로운 테이블을 만들거나 테이블의 스키마를 변경할 시에는 다른 세션들은 계속해서 SQLITE_SCHEMA 에러만 리턴합니다. DB를 다시 오픈해줘야 합니다

 

그럼~

 

아참.. PostgreSQL 추천합니다 -.-; 라이센스 문제도 없구요.. 라이센스 문제만 제외하면 MySQL도 괜찮은 선택같습니다.

신기배(nonun)님이 2004-07-20 17:54에 작성한 댓글입니다.
이 댓글은 2004-07-20 17:55에 마지막으로 수정되었습니다.

네, 답변 감사합니다.

저도 pg를 고려하고 있는데, 7.5에서 윈도우버전이 나온다고 해서 기다리고 있고요.. 나오면 써 보려구요...

SQLITE_LOCKED 에러가 난 이유는 제가 sqlite_finalize() 빼먹어서 그런것 같습니다. 지금은 되고요..

 

한가지 질문은 pg가 메모리를 어느 정도 사용하는지요.

오라클 9i는 기본으로 깔면 뜨아~ 설치시 아무리 최소로 해도...

저도 pg를 쓰고 싶은 마음입니다. 하지만 sygwin 하고 같이 쓰는 것은 좀... 리눅스에서는 좀 썼었는데...

신동규님이 2004-07-21 17:29에 작성한 댓글입니다. Edit

7.5 에 나오는 windows porting 은 windows native thread 를 사용하는 것으로 알고 있습니다. cygwin 기반이 아닙니다. 그러니 메모리를 그렇게 많이 차지 하지 않습니다.

 

현재 pgsql --> Files 게시판에 보면 올라와 있습니다.

설치해서 테스트해 보시기 바랍니다.

정재익(advance)님이 2004-07-21 18:35에 작성한 댓글입니다.

엇, 드뎌 나왔군여...

테스트해 보겠습니다. 감사합니다.

신동규님이 2004-07-21 21:18에 작성한 댓글입니다. Edit

pgsql이 사양이 낮을 수록 다른 DB에 비해 퍼포먼스 저하가 덜하다고 알고 있습니다 ㅎㅎ

요구하는 하드웨어가 오라클만큼 어마어마한 정도는 아닙니다 -.-

신기배(nonun)님이 2004-07-21 22:30에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
1001엑세스 outer join 오류입니다. 좀 해결좀 해주세요 [1]
만만이
2004-08-05
9641
1000Isolation에 대해서 [2]
김동철
2004-08-04
11254
999컬럼 나열식의 테이블 구조를 행구조로 바꾸기 위해..
기다림
2004-07-24
7860
997SQLite를 선택하려고 하는데요... 질문... [5]
신동규
2004-07-20
9700
996sqlite에 텍스트 파일을 import할 수 있나요? [2]
박병호
2004-07-17
9052
995Microsoft ACCESS랑 ODBC를 가지고 조그만한 DB를 만들었는데여....한글로 select가 안돼네여..ㅠ_ㅠ [2]
최규태
2004-07-16
7804
994MS Access사용하여 시스템 구축시 문제점? [3]
권근영
2004-07-12
10510
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다