2011-01-25 7 views
0

데이터베이스에서 &의 일부 이름을 검색하는 flex webapp가 있습니다. 프로젝트는 잘 작동하지만 더 빠르게 진행하고 싶습니다. 각 이름 요청에 대해 데이터베이스를 호출하는 대신 사용자가 요청할 때 모든 이름을 배열 & 배열에 미리로드 할 수 있습니다. 배열에 50,000 또는 1 백만 개의 요소가있는 응용 프로그램을 사용할 수 있는지 확인하고 싶었지만이 경로로 이동하기 전에? 앱이 느려지는 한도는 얼마입니까? (나는 그것이 내 애플 리케이션에서 계속 진행되고있는 많은 것들을 가질 것으로 예상하지만,이 때문에 애플 리케이션이이 거대한 배열로만 구성된다고 가정 할 수있다).배열에 너무 많은 데이터가 있습니까?

답변

1

예, 원하는 경우 배열에 수백만 개의 항목을 채울 수 있으며 플래시 플레이어는 소리를 지르지 않을 수 있습니다. 하지만 정말로하고 싶니?

작업하기 전에 전체 데이터베이스를 로컬로 다운로드해야하는 경우 응용 프로그램을 시작하는 데 더 오래 걸립니까? 많은 데이터를 다운로드하는 데 필요한 추가 시간이 중요하지 않은 경우 몇 가지 데이터베이스 조회가 실제로 최적화 할만한 가치가 있습니까?

이 작업을 수행하는 좋은 사례가 있다면 해당 데이터 구조를 사용하는 방식에주의해야합니다. 배열을 반복하여 항목을 찾으려면 약간 느려지므로 색인을 로컬로 만들려면 몇 가지 해시 구조를 사용하는 것이 가장 좋습니다. 검색 쿼리가 유연해질수록 색인 문제가 더욱 흥미로워집니다.

+0

"그래서 색인을 로컬로 생성하려고합니다."... 무슨 뜻입니까? –

+0

관련 인덱스를 키로 사용하고 배열 영역을 가리키는 객체 구조를 만드는 것을 의미합니다. 예를 들어, 배열이 적절히 정렬되었다고 가정하면, 문자 배열은 문자로 시작하는 특정 필드가있는 큰 배열의 첫 번째 색인을 가리키는 각 키가있는 문자 키를 가진 개체를 가질 수 있습니다. 그 객체를 사용하고 주어진 문자와 관련된 위치에서 시작하여 큰 배열을 반복함으로써, 그 문자로 시작하는 필드를 가진 모든 레코드를 빠르게 찾을 수있는 효율적인 방법이 있습니다. 전체 이름을 키로 사용하는 색인을 상상할 수 있습니다. – Metal

+0

흥미 롭습니다. 예제를 찾으려면 어디로 갈 수 있습니까? –

2

큰 배열을 통해 검색하는 것은 필요 이상으로 느려질 수 있습니다. 특히 1 백만 개의 레코드를 말하는 경우 특히 그렇습니다.

몇 개의 여전히 크고 작은 배열로 나눌 수 있습니까? 계좌 번호로 항상 검색하는 경우 첫 번째 자릿수 또는 두 자릿수를 기준으로 계정을 나눕니다.

직접 질문에 대답하려면 50,000 요소 배열의 순수 AS3 처리가 잘되어야합니다. 250,000 명이 넘으면 나는 그것을 깨뜨릴 필요가 있다고 생각합니다.

그러나 많은 UI 요소를 표시하는 것은 다릅니다. 10,000 요소가있는 dataProvider에 차트를 바인딩하려고하면 너무 많습니다. 목록 또는 데이터 격자와 동일합니다.

그러나 순수한 모델 데이터가 아닌 ui 바인딩은 내 경험으로 최대 250,000 개를 권장합니다.

2

하면 데이터를 사용자의로드 많은 양의 (확실하지 않은 경우하지만 목록을 사용하여), 당신의 필요에 따라 chuncks의 데이터를 잡아 페이징AsyncListView 사용에 대한 제임스 병동 게시물을 확인할 수 있습니다. 곧이 같은 것을 시도하고 구현할 것입니다. 그의 실행 가능한 예제는 페이징이 100 인 100,000 개의 행을 사용합니다 (HttpService/AMF 유형 호출에서 작동). http://www.jamesward.com/2010/10/11/data-paging-in-flex-4/

관련 문제