2012-11-20 2 views
0

거대한 데이터 (메가 바이트의 데이터)가 있습니다. 모든 이미지 (URL)입니다. 휴대 전화 (안드로이드, 아이폰)에서 데이터를 표시 할 수 있습니다. 데이터를 가져 오는 더 좋은 방법은 무엇입니까? 즉, 모든 데이터를 표시하면서 성능을 향상시키는 방법을 의미합니까?데이터베이스에서 거대한 데이터를 얻는 방법은 무엇입니까?

pleas tell me.

+0

오른쪽 ... 친애하는 ... –

답변

0

사람들이 데이터베이스에 큰 바이너리 개체를 두지 말아야하는 데에는 여러 가지 이유가 있으며 그 중 하나입니다.

데이터베이스는 결코 파일 시스템이 아니며 절대로 존재하지 않습니다. 이진 데이터가 아닌 관계형 데이터를 저장하기위한 것입니다. 문서 저장소로 작동하는 다른 데이터베이스 플랫폼이 있습니다. 여기서는 필요한 것입니다.

어느 시점에서 데이터베이스를 백업해야하며 크기가 수백 GB 인 경우 CPU가 많이 필요합니다. 회복은 더 오래 걸릴 것입니다. 이런 종류의 일은 평범한 파일이라면 rsync과 약간의 스크립팅으로 할 수 있습니다.

내 조언은 Amazon S3와 같은 기존 솔루션을 활용하거나 데이터베이스에 파일 경로를 저장하고 공용 URL에서 사용 가능하도록 설정하여 다른 정적 파일처럼 파일을 제공하는 것입니다. 보안 등급이 필요한 경우 대개 대부분의 모바일 응용 프로그램에서 세션이나 쿠키를 효과적으로 사용하지 않으므로 URL을 충분히 무작위로 지정하여 해당 콘텐츠를 차단하는 것으로 충분합니다.

+2

그는 실제로 이미지를 저장하지 않지만 자신의 URL은 괜찮을 것 같습니다. – PravinCG

0

해결 방법은 데이터베이스가 정적인지 또는 동적인지에 따라 다릅니다. 모든 데이터가 정적 인 경우 안드로이드의 Assets 폴더에 저장하고 네트워크 문제를 피하면서 직접 사용하십시오.

동적 인 경우 특정보기에 표시되는 데이터 만 가져 오거나 처음부터 모든 데이터를 가져오고 나중에 델타 동기화 만 수행하는 웹 서비스를 만들어야합니다.

0

데이터베이스에 이미지 URL이 이 아니고 실제 이미지 이진 데이터가 아니라는 점을 이해했습니다. 옳은?

그렇다면 데이터베이스에서 이미지 URL을 검색 한 다음 인터넷에서 실제 이미지를 가져 오려고한다고 가정합니다.

사용자가 볼 가능성이 가장 높은 이미지 캐싱을 고려하거나 백그라운드 서비스에서 미리 가져올 수도 있습니다.

앱을 표시 할 때 앱이 응답 할 수 있도록 전용 스레드가 필요합니다.

0

이미 DB에 필요한 URL을 저장하고 DB에 이미지 바이너리를 오버로드하지 않고 올바른 작업을 수행했습니다. 그 외에도 성능을 향상 시키려면 수행 할 수 있습니다.

1) 색인화 - 색인은 하나 이상의 열 (색인의 색인을 기반으로하는 테이블의 행에 대한 빠른 액세스 경로를 제공하는 데이터 구조입니다. 키). 따라서 행별로 전체 테이블 행을 검색하지 않아도 빠른 검색 기술을 사용하여 값을 찾을 수 있으므로 훨씬 빠른 데이터 검색이 가능합니다. 이것은 사용자 환경에서 큰 성능 향상 장치가 될 수 있으므로 SELECT 쿼리를 실행하고 데이터를 다시 가져 오는 데 걸리는 시간이 줄어 듭니다.

2) Amazon S3와 같은 플랫폼에서 이미지를 호스팅하면로드 시간이 빨라 지므로 성능이 크게 향상됩니다.

1

NSThread를 사용하는 것보다 데이터베이스에서 이미지 URL 만 가져 오는 것이 i 전화기에서 다른 기능을 호출하는 경우 백그라운드에서 이미지를로드하므로 앱 성능이 향상됩니다.

관련 문제