2012-03-28 5 views
11

정렬 및 쿼리 할 때 엄청난 양의 데이터가 있으며 인터넷 연결에 의존 할 수 없습니다. 이상적으로는 JSON 객체 (현재 약 17MB이지만 훨씬 더 커질 수 있음)로 전체 데이터 세트를 저장하고 jLinq 또는 SQLike와 같은 것을 사용하여 수많은 작은 파일을 출력하지 않고 쿼리 할 수 ​​있습니다.JavaScript의 외부 JSON 객체 최대 권장 크기

자바 스크립트 (특히 jQuery)를 사용하여 외부 getJSON 호출에 대해 가장 큰 권장 파일 크기를 찾는 것에 관심이 있습니다. 1MB, 20MB, 100MB? 피사체에 대한 정보가 부족합니다. 대규모 데이터 세트를 클라이언트 측에 질의하는 것에 대한 정보는 전혀 없습니다.

주체에 대한 모든 정보를 얻으실 수 있습니다.

+0

이것은 모두 로컬에서 발생하고 있습니까? 브라우저 환경에 있거나 node.js 또는 비슷한 것을 사용하고 있습니까? 내 생각 엔이 클라이언트 시스템에서 사용할 수있는 메모리에 크게 의존 할 것입니다 ... 당신이 그것을 구문 분석하기 위해 전체 JSON 문자열을 메모리에로드해야 할 수도 있으므로이 방법의 가장 큰 문제는 아마도 구문 분석입니다. – nrabinowitz

+0

브라우저 환경의 모든 클라이언트 측, 로컬. jode.js가 설치되어 실행되고있는 것에 의존 할 수 없습니다. – S16

+0

첫 번째 문제는 파일을로드하는 것입니다. 일반적으로 브라우저 보안 설정으로는 로컬 HTML 페이지에서도 AJAX로 로컬 파일을로드 할 수 없습니다. JSONP 또는 문서 ''에서 스크립트로로드하여이 문제를 해결할 수 있습니다. – nrabinowitz

답변

10

JSON 문자열에서 실제 JavaScript 객체로 변환해야하기 때문에 가장 큰 문제는 로딩 시간 일 수 있습니다. 다른 큰 문제는 전체 데이터 세트가 페이지의 메모리에 저장된다는 것입니다. 100MB 이상의 데이터를 사용하는 페이지에 익숙하지 않습니다.

나는 jsfiddle to test loading performance of large JSON strings을 만들었습니다. JSON 문자열을 기본적으로 비워 두는 것보다 ~ 20MB의 JSON 문자열 (Core i7 컴퓨터에서)을 파싱하는 데 500ms 정도 걸리며 Chrome에서는 80MB의 메모리를 사용합니다. 따라서 100MB는 400MB 이상의 메모리를로드하고 사용하는 데 몇 초가 걸릴 수 있습니다.

이 문제는 해결되지 않지만 SQL.js을 사용해 보셨습니까? 이것은 SQLite의 JavaScript 구현입니다. 데이터를 훨씬 쉽게 쿼리 할 수 ​​있어야합니다.