XML 피드를 주식 시세와 함께 구문 분석하고 결과를 데이터베이스에 저장하는 구성 요소를 작성하고 있습니다. 피드는 incrementallly 읽을 수 없다는 점을 제외하고는 상당히 간단합니다. 즉, X 마지막 인용 변경 만 원하거나 X 분보다 새로운 변경 만 지정할 수있는 방법은 없습니다. 진짜 문제는 피드가 어리 석고 공급자가 물건을 고쳐야한다는 것입니다.하지만 그건 옵션이 아닙니다.거대한 XML 피드를 구문 분석 할 때 중복 데이터 처리
피드는 공급자에 대한 100000 개의 마지막 주식 시세를 포함하는 거대한 xml 파일입니다. 약 50-100 개의 견적이 변경되는 동안 매분마다 피드가 폴링됩니다. 나머지는 반복적으로 반복되는 따옴표입니다.
피드의 각 폴링 중에 객체에 대한 모든 인용 부호 (lxml 사용)를 구문 분석합니다. 그런 다음 각 견적 객체에 대해 견적이 데이터베이스에 이미 있는지 확인합니다. 만약 그렇다면, 나는 그것을 버리고, 그렇지 않다면, 나는 그것을 저장한다. 이 절차는 새로운 데이터가 약 0.1 % 밖에 없으므로 매우 낭비입니다. 나머지는 중복됩니다. 조금만 최적화하기 위해 마지막 X 시간에 업데이트 된 견적을 데이터베이스에 한 번 조회하여 조회 테이블을 만듭니다. 따옴표는 (last_update, stock_id) 키의 데이터베이스에서 고유하므로이 최적화는 쿼리 수를 약 50 % 줄입니다.
그러나 각 견적을 개별적으로 검사해야하거나 존재하지 않는 경우 데이터베이스에 과도하게 부담해야하는 50k db 쿼리가 있습니다.
그래서 내가 찾고있는 것은 내 피드 파서를 더 빠르게 만드는 방법에 대한 아이디어입니다. 어쩌면 마지막으로 가져온 XML 파일을 새 파일과 비교하는 방법이 있을까요?
어떤 데이터베이스가 있습니까? – ajreal