2013-01-21 1 views
0

Google AppEngine에 배포 된 Java 응용 프로그램의 일부로 MaxMind geoIP 데이터베이스를 배포하려고합니다. 우리는 무료 버전을 사용했을 때 상황이 좋아했다,하지만 배포 할 시도하는 대한 지불 (큰) 데이터베이스로 업그레이드시 오류 제공 : 지금까지 내가 말할 수있는MaxMind 데이터베이스 파일이 AppEngine App에 너무 큼

File /tmp/appcfg4412552511405829763.tmp/WEB-INF/GeoIPCity.dat is too large (limit 32000000 bytes) 

를, 나는 단지 분할이 하지만 이것이 항아리가 아니기 때문에 도움이되지 않습니다. (이름을 .jar로 바꾸면 마술처럼 수정되지 않습니다.) AppEngine 앱의 일부로 배포 된이 파일 (~ 48MB)을 가져올 수있는 방법이 있습니까?

내 폴백 계획은 클라우드 스토리지에서 파일을 밀어서 거기에서 잡아 당기는 것입니다. 불행하게도 Maxmind의 Java 코드는 실제로 입니다.은 파일이 아니라 스트림이 아니라 리더가 아니며 바이트 []가 아니라 AppEngine에서 찾기 힘든 파일입니다. 내가 많은 것을 다시 작성하기 전에 누군가가 이미이 문제를 해결할 수 있었는지 알았을 것입니다.

답변

1

GAE에서 max application file size is 32Mb.

AFAIK 당신은 그 문제를 해결할 수 없습니다. 작은 파일로 분할하는 것이 가장 좋습니다.

+0

이것이 내가 끝낸 것입니다. 그래도 이것을 지원하기 위해 Maxmind의 코드를 다시 작성해야했습니다. 클라우드 스토리지에서 전체 파일을 가져 오는 것은 너무 느려지 게되었습니다. –

+0

파일을 두 개의 zip 파일로 분할 한 다음 두 파일을 읽은 코드에 업로드 한 다음 함께 결합합니다. java.util.zip.ZipInputStream – montss

0

왜 appengine 요청 헤더에서 무료로 지리적 포인트, 국가, 지역 및 도시를 얻을 때이 정보에 대한 타사 지오 데이터베이스 데이터베이스 파일을 사용해야합니까?

내 조언은이 목적으로 각각 x-appengine-geopoint, -country, -region 및 -city 헤더를 사용하는 것입니다.

이렇게하면 작동하지만 요청 수준에서 thor 헤더를 포착하고 다른 사용자 데이터와 함께 데이터 저장소에 저장해야합니다.

+1

실제로 웹 서비스를 사용하는 호출자는 우리가 위치를 찾고 싶어하는 것이므로 머리말은 도움이되지 않습니다. –