Attualmente sto progettando una serie di servizi web relativi al settore dei viaggi. è necessario che uno di questi servizi inserisca un codice aeroportuale e una locale e restituisca il nome della città localizzata.
fn(cityCode) => localizedCityName
fn(airportCode) => cityCode, localizedCityName, localizedAirportName
Al momento ho nel mongodb una raccolta di città che contiene, tra le altre cose, per ogni città, informazioni localizzate e lista degli aeroporti:
{cityCode:'lon',
localized:{
'en':{name:'london'},
'fr':{name:'londres'}
},
airports:[{code:'GTW', name:'Gatwick'}]
}
Mi chiedo quale sarebbe la migliore e più scalabile poiché:
- Il formato pivotal è json (quindi spostare dati da una soluzione all'altra è facile)
- Ci sono circa 200 città, ma ogni città può contenere una quantità significativa di dati non relativi al nostro uso)
- I dati di cui abbiamo bisogno sono raramente o mai in cambiamento (l'aeroporto di Gatwick sarà sempre a Londra ...)
- È necessario localizzare alcune città alla volta (da 20 a 100).
- l'API è solo su un server (con redis installato) ma speriamo di ottenere un giorno al punto in cui sarebbe richiesto il clustering.
Stavo considerando:
-
Lascia i dati in MongoDB, e interroga secondo necessità e utilizza l'indice per ottimizzare. Pro: coerenza dei dati, fonte unica per le query. Contro: non performante
-
Riorganizza il mio json e lo memorizza su molti file , riorganizzando intendo avere un assoc json array con cityCode come chiave e airportCode per gli altri file pro: Uber più veloce contro: nessuna coerenza, non scalabile ??
-
Riorganizza il mio json e memorizza in un redis come prima, eccetto che si trova su una cache redis pro: come prima, tranne forse più scalabile contro: bisogno di leggere e analizzare il json (non riuscivo a vedere altro)
NOw the questions:
- Hai altre strategie da consigliare?
- Quale dovrei scegliere e perché?