Bästa sätt att använda .json databas

Tråden skapades och har fått 4 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Boden
  • 2014-05-16 16:15

Hej. Jag tänkte utveckla en webapp till iPhone. Jag tänker använda phonegap eller liknande för att spara appen lokalt på telefonen. I appen ska man kunna söka igenom en .json fil på ca 35mb (ca 15 000 objekt).

Jag vet inte om 35mb anses för stort (kanske dum fråga)? Jag tänker ha realtids förslag när man söker, så varje klick på tangentbordet innebär en sökning i filen. Hur hanterar jag databasen bäst? Ska jag använda $.each varje gång en sökning sker, eller finns det ett "bättre" sätt att hantera databasen?

Tacksam för svar

Ursprungligen av jensm:

...en .json fil på ca 35mb (ca 15 000 objekt)...

Det måste vara en revolutionerande komprimering som används om du får in 15000 objekt i en fil på 35 millibit.

(Förlåt! Kunde inte låta bli. Men jag tycker att det är viktigt att använda rätt enheter.)

Det skulle kunna funka att bygga upp någon form utav index, som sedan pekar på rätt objekt, typ så här:

{
	'rows': {
		1: {
			'name': 'Stina'
		},
		2: {
			'name': 'Sture' 
		},
		3: {
			'name': 'Sara'
		}
	},
	'index': {
		's': [1, 2, 3],
		'st': [1, 2],
		'sti': [1],
		'stu': [2]
		'sa': [3],
	}
}

Det innebär ju dock att det blir en ännu större datamängd, att antingen skapa eller ladda ner.

Ett kanske mer rimligt sätt är att använda SQLite-databasen som finns med i både iOS och Phonegap, mer info finns här. Då slipper man åtminstone skapa index och liknande manuellt.

(gammal tråd men kanske kan hjälpa någon annan om du redan löst ditt problem)

Tycker du borde kolla på SQLite som alternativ till din JSON databas.
Se: http://docs.phonegap.com/en/1.3.0/phonegap_st...

Med detta kan du använda SQL syntax för att söka och även skapa index i databasen. Kan tänka mig att detta kommer boosta din starttid av appen då du slipper direkt ladda in en 35 megabytes stor fil i minnet direkt. (har inte gjort någon benchmark på detta så kan ha fel)

  • Medlem
  • Bollnäs
  • 2014-08-19 22:40

Ett sätt att snabba upp det (förmodligen) är att dels göra en liten fördröjning innan sökningen börjar. Typ 200–300 millisekunder eller så, så att man hinner skriva in några tecken innan den börjar jobba.

Sen skulle jag personligen gjort sökningen i en webworker så att den hamnar i en separat tråd och inte stör DOM:en och låser gränssnittet. Det finns ett gäng bibliotek man kan använda för att underlätta hanteringen av databasen, jQuery-hive, Underscore, Paralleljs bland annat.

1
Bevaka tråden