MongoDB nosql 데이터베이스를 사용하고 있습니다. 기본적으로 쿼리의 결과로 나는으로 작업해야하는 사전들의리스트를 담고있는 의 dicts 목록을 가지고있다.대용량 사전 목록 분석 속도 향상 - Python
데이터가 너무 많으면 불행히도 이이 모든 데이터를 처리 할 수 있습니다 (). 경험이있는 사람이 몇 가지 제안을 줄 수 있다면
나는이 문제를 해결했던 적이및 은 좋은 것입니다. =)
MongoDB nosql 데이터베이스를 사용하고 있습니다. 기본적으로 쿼리의 결과로 나는으로 작업해야하는 사전들의리스트를 담고있는 의 dicts 목록을 가지고있다.대용량 사전 목록 분석 속도 향상 - Python
데이터가 너무 많으면 불행히도 이이 모든 데이터를 처리 할 수 있습니다 (). 경험이있는 사람이 몇 가지 제안을 줄 수 있다면
나는이 문제를 해결했던 적이및 은 좋은 것입니다. =)
파이썬 프로그램에서 모든 데이터를 다시 원하십니까? 그렇게되면 한 번에 조금씩 가져 오지만, 원하는 것은 데이터를 요약 한 다음 MongoDB에서 mapreduce를 사용하여 처리를 분산하고 요약 된 데이터를 반환하는 것입니다.
결국, 여러 컴퓨터에서 모든 데이터를 깔끔하게 정리하는 NoSQL 데이터베이스 사용에 대한 요지는 처리를 위해 모든 데이터를 단일 컴퓨터로 다시 가져 오지 않아도된다는 것입니다.
나는 귀하의 요지에 완전히 동의합니다. 나는 내가 할 수있는 MongoDB 쿼리에 약간 경험이 없기 때문에 조금 제한적이다. 지금 당장은 파이썬에서 이러한 딕테이션을 다루고 있습니다. 답장을 보내 주셔서 감사합니다. – RadiantHex
모든 데이터를 한 번에 메모리에로드하고 있습니까? 그렇다면 OS에서 메모리를 디스크로 스왑하도록 만들면 시스템을 크롤링 할 수 있습니다. 사전은 해시 테이블이므로 빈 dict조차도 많은 메모리를 사용하게되고, 한 번에 많은 dict을 작성하게됩니다. 나는 MongoDB API를 모른다. 그러나 결과 집합 전체를 한번에 읽는 대신 한 번에 하나씩 결과를 반복하는 방법이 있다고 생각한다. 또는 쿼리를 다시 작성하여 데이터의 하위 집합을 반환 할 수도 있습니다.
디스크 스와핑에 문제가 없다면 코드를 프로파일 링하여 병목 현상을 확인하거나 질문에 샘플 코드를 입력하십시오. 보다 구체적인 정보가 없으면 좀 더 구체적으로 대답하기가 어렵습니다.
CPU가 병목 현상 (문제가 병렬화 될 수있는 경우)이 있으면 여러 코어 및/또는 여러 시스템을 활용하기 위해 Python의 multiprocessing
module, Disco project 또는 Parallel Python을 사용할 수도 있습니다.
"YesSQL"데이터베이스를 사용하여 (아마도 중간 단계로) 동일한 문제가 발생합니까? - 성능 프로필을 보면 대답 할 수 있어야합니다. –
그래서 무엇이 문제입니까? – nazca
@pst NoSQL 백엔드를 사용하는 것이 항상 새로운 것은 아닙니다. MongoDB는 실시간 성능과 데이터의 샤딩에 큰 이점이 있습니다. – mattbasta