2012-12-21 3 views
2

WCF 서비스 로깅을위한 데이터베이스 백엔드로 SQLite를 사용하려고합니다. 모든게 잘 생겼지 만 실제 시스템에서 데이터베이스 로그 파일을 추출하고 로그를 검사/분석하기 위해 데이터베이스를 잠그지 않으려면 어떻게해야합니까? 이 시스템은 매우로드가 많은 것으로 보이며 매번 데이터베이스 로그 파일을 가져 오려고 시도 할 때마다 잠금 상태로 유지됩니다.로깅에 SQLite 사용

답변

0

SQLite는 읽기 및 쓰기를 위해 동일한 데이터베이스 파일을 열도록 여러 프로세스/응용 프로그램을 허용합니다 (쓰기에는 약간의 잠금이 필요하지만 큰 문제는 일반적이지 않습니다).

새 행을 데이터베이스에 지속적으로 기록하려면 로깅 프로세스가 있어야하며 동시에 오프로드/추출 프로세스는 이전 행을 다른 위치로 복사해야합니다.

그러나 데이터베이스를 열 때 표준 복사 기능을 사용하여 데이터베이스를 파일로 복사하면 안됩니다 (Windows에서 엄격한 잠금으로 인해 불가능할 수도 있음).

대신 표준 SQLite API (또는 SQLite 지원이 포함 된 일부 스크립팅 언어)를 사용하여 오프로드 프로세스를 데이터베이스에 연결하고 해당 API를 사용하여 행을 읽은 다음 해당 데이터의 복사본을 다른 SQLite 데이터베이스 또는 큰 "실제 "MySQL, Postgres 또는 MSSQL (또는 그렇게 기울이면 텍스트 파일)과 같은 SQL 데이터베이스.

+0

SQLite에 연결하고 다른 SQLite 데이터베이스로 복사 할 수 있습니까? – kseen

0

DB를 잠글 필요없이 데이터를 추출하려면 SQLite의 online backup API를 사용하십시오.

관련 문제