2010-07-25 5 views
0

MongoDB nosql 데이터베이스를 사용하고 있습니다. 기본적으로 쿼리의 결과로 나는으로 작업해야하는 사전들의리스트를 담고있는 의 dicts 목록을 가지고있다.대용량 사전 목록 분석 속도 향상 - Python

데이터가 너무 많으면 불행히도 이이 모든 데이터를 처리 할 수 ​​있습니다 (). 경험이있는 사람이 몇 가지 제안을 줄 수 있다면

나는이 문제를 해결했던 적이

은 좋은 것입니다. =)

+0

"YesSQL"데이터베이스를 사용하여 (아마도 중간 단계로) 동일한 문제가 발생합니까? - 성능 프로필을 보면 대답 할 수 있어야합니다. –

+0

그래서 무엇이 문제입니까? – nazca

+0

@pst NoSQL 백엔드를 사용하는 것이 항상 새로운 것은 아닙니다. MongoDB는 실시간 성능과 데이터의 샤딩에 큰 이점이 있습니다. – mattbasta

답변

3

파이썬 프로그램에서 모든 데이터를 다시 원하십니까? 그렇게되면 한 번에 조금씩 가져 오지만, 원하는 것은 데이터를 요약 한 다음 MongoDB에서 mapreduce를 사용하여 처리를 분산하고 요약 된 데이터를 반환하는 것입니다.

결국, 여러 컴퓨터에서 모든 데이터를 깔끔하게 정리하는 NoSQL 데이터베이스 사용에 대한 요지는 처리를 위해 모든 데이터를 단일 컴퓨터로 다시 가져 오지 않아도된다는 것입니다.

+0

나는 귀하의 요지에 완전히 동의합니다. 나는 내가 할 수있는 MongoDB 쿼리에 약간 경험이 없기 때문에 조금 제한적이다. 지금 당장은 파이썬에서 이러한 딕테이션을 다루고 있습니다. 답장을 보내 주셔서 감사합니다. – RadiantHex

1

모든 데이터를 한 번에 메모리에로드하고 있습니까? 그렇다면 OS에서 메모리를 디스크로 스왑하도록 만들면 시스템을 크롤링 할 수 있습니다. 사전은 해시 테이블이므로 빈 dict조차도 많은 메모리를 사용하게되고, 한 번에 많은 dict을 작성하게됩니다. 나는 MongoDB API를 모른다. 그러나 결과 집합 전체를 한번에 읽는 대신 한 번에 하나씩 결과를 반복하는 방법이 있다고 생각한다. 또는 쿼리를 다시 작성하여 데이터의 하위 집합을 반환 할 수도 있습니다.

디스크 스와핑에 문제가 없다면 코드를 프로파일 링하여 병목 현상을 확인하거나 질문에 샘플 코드를 입력하십시오. 보다 구체적인 정보가 없으면 좀 더 구체적으로 대답하기가 어렵습니다.