2013-08-03 12 views
5

W mojej aplikacji, przy każdym uruchomieniu najpierw trzeba pobrać JSON z serwera, a później muszę pokazać różne informacje, analizując te dane jeden pełny cykl życia aplikacji. Obiekt JSON jest dość duży z prawie 5000 JSONArray. Każda tablica JSON ma następującą postać:Co powinienem wybrać - JSON lub SQLite?

[37,101,"The Blocks Problem",9952,0,1000000000,0,852,0,0,11197,0,16606,0,7279,200,18415,5325,14492,3000,1] 

Więc mam dwie opcje:

  1. Zapisz ciąg json do pliku, a później ją przeczytać.
  2. Zapisz tablicę JSON w bazie danych SQlite z prawie 10 kolumnami i 5000 wierszy.

Pierwsza opcja wydaje się być wydajna. Ale później muszę manipulować JSONem, aby wyświetlać różne informacje. W niektórych przypadkach muszę przeszukać pełną tablicę, aby wybrać informacje o tablicy i jest wiele takich przypadków. Byłoby to również bardzo czasochłonne.

Druga opcja jest lepsza do szybkiego wyszukiwania i wyświetlania. Podszedłem do drugiej opcji. Ale wstawianie 5000 rzędów na raz jest również czasochłonne. Zrobiłem to w AsyncTask dla poprawy, ale zabiera to zbyt dużo czasu - parsowanie JSON i przechowywanie w tabeli SQlite.

Co mogę zrobić? jaki jest najlepszy sposób przechowywania tych ogromnych informacji, a następnie wydajnego ich wykorzystania?

Odpowiedz

5

Odpowiedziałem na pytanie dość zbliżone do dzisiejszego - File or Database? - Best Practice to save Objects on Android-Device. Chciałem dodać, że jeśli wstawianie 5000 wierszy trwa zbyt długo, spróbuj dodać je wszystkie w pojedynczej transakcji lub przy użyciu mechanizmu ładowania zbiorczego. Warto zastanowić się nad problemem z wstawianiem zamiast próbować korzystać z plików.

Zobacz this tutorial o ładowaniu zbiorczym SQLite

Powiązane problemy