2012-03-28 19 views
11

Tengo una enorme cantidad de datos para ordenar y consultar, y no puedo confiar en una conexión a Internet. Idealmente, me gustaría almacenar todo mi conjunto de datos como un objeto JSON (actualmente alrededor de 17MB, pero podría ser mucho más grande) y usar algo como jLinq o SQLike para consultarlo, en lugar de tener que generar numerosos archivos más pequeños.Tamaño máximo recomendado de objeto JSON externo en JavaScript

Estoy interesado en encontrar cuál es el tamaño de archivo más grande recomendado para una llamada getJSON externa usando JavaScript (jQuery, específicamente). 1MB, 20MB, 100MB? La información sobre el tema es escasa. La información sobre consultar grandes conjuntos de datos del lado del cliente es escasa.

Cualquier información sobre el tema sería muy apreciada.

+0

¿Esto está sucediendo localmente? ¿Estás en un entorno de navegador o usando node.js o algo similar? Supongo que esto dependerá en gran medida de la memoria disponible en la máquina del cliente ... probablemente el mayor problema con este enfoque sea el análisis, ya que es posible que deba cargar toda la cadena JSON en la memoria para analizarla. – nrabinowitz

+0

Todo el lado del cliente, localmente, en un entorno de navegador. No puedo confiar en que tengan jode.js instalado y ejecutándose. – S16

+0

Tenga en cuenta que el primer problema que va a tener es cargar el archivo: en general, la configuración de seguridad del navegador no le permitirá cargar un archivo local con AJAX, incluso desde una página HTML local. Puede solucionar esto cargándolo como un script, ya sea con JSONP o en el documento ''. – nrabinowitz

Respuesta

10

Su mayor problema probablemente será el tiempo de carga, ya que tendrá que convertirlo de una cadena de JSON en un objeto de JavaScript real. El otro gran problema será que todo el conjunto de datos estará en la memoria de la página. No estoy familiarizado con ninguna página que use 100MB + de datos.

Hice un jsfiddle to test loading performance of large JSON strings. Parece que se necesitan ~ 500 ms para analizar una cadena ~ 20MB de JSON (en una máquina Core i7), y en Chrome usa 80 MB de memoria más que si la cadena JSON está básicamente vacía. Entonces 100MB podría tomar unos segundos para cargar y usar 400MB + de memoria.

Esto no resolverá ninguno de esos problemas, pero ¿ha considerado utilizar SQL.js? Es una implementación de JavaScript de SQLite. Debería hacer que consultar los datos sea mucho más fácil.