2011-03-07 4 views
3

sqlite 데이터베이스에서 구문 분석하고 저장하는 꽤 큰 xml 파일 (2MB 이상)이 있습니다. 그것을 파싱하고 처음으로 잘 저장할 수 있습니다. 내 질문에 변경 사항, 추가 또는 삭제) XML 파일을 다시 구문 분석 할 때 데이터베이스를 업데이트하는 데 우려하고있다. 필자의 초기 생각은 데이터베이스의 정보를 지우고 데이터를 구문 분석하기보다는 다시 삽입하고 주어진 항목이 이미 데이터베이스에 있는지 확인하고 업데이트를 수행하는 것입니다. 다른 접근 방식보다 나은 접근 방식이 있습니까? 어떤 방법 으로든 성능에 문제가있을 수 있습니까? 그 문제에 대해 어떤 생각이라도 고맙게 생각합니다.큰 xml 파일을 구문 분석하고 데이터베이스에 저장하는 방법

답변

2

예, 다시 삽입하는 것은 좋지 않은 생각입니다. XML 구조는 얼마나 복잡합니까? 구조에 반영되는 항목 하나가 있는지 쿼리 할 때 얼마나 많은 테이블이 관련되어 있습니까?

복잡한 경우 기록을 고유하게 식별하고 변경 사항을 찾을 때 데이터베이스의 추가 테이블에이 해시/체크섬을 저장하는 항목 및 속성 및 값의 해시 체크섬을 생성 할 수 있습니다 항목은 해시/체크섬을 계산하고 하나의 테이블에서 찾는다. 어쩌면 해시 계산의 비용에 따라 쿼리를 더 빨리 수행 할 수도 있습니다.

+0

나는 주어진 아이템의 속성을위한 해시를 만드는 아이디어를 좋아한다. 여기에 약 7 개의 테이블이 관련되어 있습니다. 삭제 방법을 어떻게 제안 하시겠습니까? XML 파일에서 삭제할 수 있도록 표시 하시겠습니까? – Pzanno

+0

또한 '항목'에 대한 특정 쿼리에 최대 3 개의 테이블이 포함됩니다. – Pzanno

+0

첫 번째 댓글 : 옵션 일 경우 가장 쉬운 방법입니다. – Bernhard

2

변경해야 할 부분 만 삽입하면 전체 DB를 덤프하고 다시 삽입하는 것보다 분명히 빠를 것입니다. 적어도 그것은 내 생각이다.

내가 점검하는 정보가 얼마나 복잡하고 그 프로세스를 수행하기위한 코드가 얼마나 효율적인지에 달려 있다고 생각합니다. 그런 식으로 확인하는 것이 불편하다면, 덤핑과 재 삽입이 더 안전한 선택이 될 것입니다.

+0

응답 해 주셔서 감사합니다. 업데이트하려면 주어진 '항목'이 존재하고 업데이트가 수행되는지 확인하기 위해 select를 수행해야합니다. 그러나 조금 복잡해지고 있습니다. 나는 7 개의 다른 테이블을 다루고있다. 4 링크를 함께 연결하고 다른 3 링크를 FK를 통해 연결합니다. – Pzanno

관련 문제