2012-03-28 8 views
11

Mam ogromną ilość danych do posortowania i zapytania, a nie mogę polegać na połączeniu internetowym. Idealnie, chciałbym przechowywać cały mój zestaw danych jako obiekt JSON (obecnie około 17 MB, ale może być znacznie większy) i użyć czegoś podobnego do jLinq lub SQLike w celu wysłania zapytania, w przeciwieństwie do wysyłania licznych mniejszych plików.Maksymalna zalecana wielkość zewnętrznego obiektu JSON w kodzie JavaScript

Jestem zainteresowany znalezieniem największego zalecanego rozmiaru pliku dla zewnętrznego wywołania getJSON przy użyciu JavaScript (w szczególności jQuery). 1 MB, 20 MB, 100 MB? Informacje na ten temat są ograniczone. Informacje na temat odpytywania dużych zestawów danych po stronie klienta są znikome.

Wszelkie informacje na ten temat byłyby bardzo mile widziane.

+0

Wszystko dzieje się lokalnie? Czy jesteś w środowisku przeglądarki lub używasz pliku node.js lub czegoś podobnego? Domyślam się, że będzie to w dużym stopniu zależne od pamięci dostępnej na komputerze klienckim ... największym problemem z tym podejściem jest prawdopodobnie analiza składniowa, ponieważ może być konieczne załadowanie całego ciągu JSON do pamięci w celu przeanalizowania go. – nrabinowitz

+0

Wszystkie strony klienta, lokalnie, w środowisku przeglądarki. Nie można polegać na nich z zainstalowanym i uruchomionym plikiem jode.js. – S16

+0

Pamiętaj, że pierwszym problemem będzie ładowanie pliku - ogólnie ustawienia zabezpieczeń przeglądarki nie pozwolą ci załadować lokalnego pliku z AJAX, nawet z lokalnej strony HTML. Możesz obejść ten problem, ładując go jako skrypt, albo z JSONP lub z dokumentu ''. – nrabinowitz

Odpowiedz

10

Twoim największym problemem będzie prawdopodobnie czas ładowania, ponieważ będzie musiał przekształcić go z ciągu JSON w rzeczywisty obiekt JavaScript. Drugim dużym problemem będzie to, że cały zestaw danych będzie w pamięci dla strony. Nie znam żadnej strony wykorzystującej 100 MB danych.

Zrobiłem jsfiddle to test loading performance of large JSON strings. Wygląda na to, że potrzeba około 500 ms, aby przeanalizować łańcuch JSON o rozmiarze ~ 20MB (na maszynie Core i7), aw Chrome wykorzystuje on o 80 MB więcej pamięci, niż gdy ciąg JSON jest w zasadzie pusty. Tak więc 100 MB może zająć kilka sekund, aby załadować i wykorzystać 400 MB + pamięci.

To nie rozwiąże żadnego z tych problemów, ale czy rozważałeś użycie SQL.js? Jest to implementacja JavaScript SQLite. Powinno to ułatwić wyszukiwanie tych danych.

Powiązane problemy