2012-06-13 3 views
0

구성 파일을 디스크에 XML로 저장하는 응용 프로그램이 있습니다. 충돌 등의 경우 데이터 파일 손상 위험을 줄이고 싶습니다. 일반적인 권장 사항은 SQLite를 사용하는 것 같습니다.SQLite를 사용하여 파일 시스템 바꾸기

BLOB를 사용하여 현재 XML 형식을 저장하는 것에 대한 귀하의 생각은 어떻습니까? 한편으로

CREATE TABLE t (filename TEXT, filedata BLOB) 

,이 세련 보이지만, 다른 한편으로는 적절한 형식으로 구성 변환의 모든 작업 (및 해당 버그를) 피할 것이다 표는 같을 것이다.

+0

소리가 비효율적입니다. 구성 값을 얻고 모든 변경에 대한 전체 구성 파일을 저장하려면 BLOB를로드하고 구문 분석해야합니다. –

+0

파일 시스템에서도 마찬가지입니다. Config는 작동 중에 메모리에 보관되며 config 읽기/쓰기 작업은 드문 경우입니다. –

답변

1

소리가 비효율적입니다. BLOB을로드하고 구문 분석하여 구성 값을 얻고 모든 변경에 대한 전체 구성 파일을 저장해야합니다.

SQLite 데이터베이스로 전환하는 이유는 트랜잭션 메커니즘이 충돌에 대한 내결함성을 어느 정도 제공하기 때문입니다. 구성 파일 각각을 BLOB으로 저장하는 경우 트랜잭션이 완료되기 전에 전체 파일을 저장해야합니다. 그러면 업데이트 된 값을 저장하는 것이 더 빠를 것입니다.

또한 DOM 기반 XML 파서를 사용하는 경우 BLOB과 파싱 된 DOM 트리를 동시에 메모리에로드하게됩니다. 자원 집약적 인 구성 파일의 크기와 수에 따라 다릅니다.

IMHO 각 구성 값에 대한 행이있는 각 구성 파일의 테이블을 만드는 것이 좋습니다. 읽기/쓰기 성능과 메모리 사용량을 줄이고 SQLite의 모든 관계형 메커니즘을 사용할 수 있습니다.

관련 문제