2009-04-25 5 views
1

내 응용 프로그램은 GPS 입력에서 위치 데이터를 저장하고 있습니다. GPX 파일을 가져올 때 사용자는 500 - 10,000 개의 GPS 데이터 포인트를 가질 수 있습니다. 지금은 각 트랙 포인트에 대한 모델을 가지고 있습니다. 잘 작동하지만 삽입시 느립니다. 10,000 데이터 포인트의 경우 30 초 이상. 대량 삽입의 더 좋은 방법이 있습니까?빠른/대량 액티브 레코드 생성

모든 시간이 SQL 측에 소요됩니다. 각 삽입은 빠르지 만 10,000은 빠릅니다. 각 사용자는 100 개의 파일을 가질 수 있고 100 명의 사용자는 == 긴 삽입 시간을 가질 수 있습니다. 한 번에 모든 것이 아닙니다.

내가 도움이된다면 애플리케이션 아키텍처를 변경해 드리겠습니다. 여기에 어떤 대안이 있는지 확실하지 않습니다. GPS 데이터 만 사용합니다. 세트에서 하나의 레코드를 검색하지 않기 때문에 ActiveRecord 전체가 과도합니다.

이 바보 같은 삽입을 처리하기 위해 전체 대기열 시스템을 수행해야한다는 것이 싫어.

답변

0

이상 생각하고 내 두 옵션이 DB의 blob에 해시를 직렬화하거나 다른 위치에 저장하는 것처럼 보입니다. FS 액세스 권한이 없지만 S3을 사용할 수 있습니다.

그래서 내 질문을 변경했다고 가정합니다. 생성 후 거의 읽기 전용 인 100kb 객체를 저장하는 경우 S3 대 Blob 스토리지의 일반적인 원칙에 대한 피드백이 있습니까?

나는 아마도 this thread이 (가) 지금 무엇을 찾고 있는지 알고 있다고 생각합니다!

2
AR-확장의 수입 방법은 한 번에 모두 가져

사용 : http://github.com/zdennis/ar-extensions/blob/master/ar-extensions/lib/ar-extensions/import.rb#L49-215

문제는 당신이 #save을 수행하여 각 레코드를 가져 오는 경우, 당신은 사실은 행마다 하나의 INSERT 문을 생성하고 모든 호출에 있는지 모델 유효성 검사의 모든 데이터를 한 번에 푸시하는 더 큰 sql insert 문을 대신 작성할 수 있습니다.

관련 문제