이제까지 돈주고 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를 알고 계시면
알려주세요..
감사합니다.
|