Prestazioni da S3 a EC2 per il recupero di un numero elevato di file di piccole dimensioni
-
03-07-2019 - |
Domanda
Ho una vasta raccolta di blocchi di dati di dimensioni pari a 1 kB (nell'ordine di diverse centinaia di milioni) e ho bisogno di un modo per archiviare e interrogare questi blocchi di dati. I blocchi di dati vengono aggiunti, ma mai eliminati o aggiornati. Il nostro servizio è distribuito sulla piattaforma S3, EC2.
So che esiste Amazon SimpleDB, ma voglio una soluzione indipendente dalla piattaforma (nel caso dovessimo uscire da AWS, ad esempio).
Quindi la mia domanda è: quali sono i pro e i contro di queste due opzioni per l'archiviazione e il recupero di blocchi di dati. Come si confronterebbero le prestazioni?
- Memorizza i blocchi di dati come file su S3 e OTTIENI quando necessario
- Conserva i blocchi di dati su un cluster di MySQL Server
Ci sarebbe molta differenza tra le prestazioni?
Soluzione
Devi fornire l'accesso a questi blocchi di dati direttamente agli utenti della tua applicazione? In caso contrario, le richieste GET S3 e HTTP sono eccessive. Tenendo anche presente che S3 è un servizio sicuro, l'overhead per ogni richiesta GET (per solo 1 KB di dati) sarà considerevolmente grande.
Il cluster di server MySQL sarebbe un'idea migliore, ma per funzionare in EC2 è necessario utilizzare Elastic Block Storage. Infine, non escludere SimpleDB. È forse la soluzione migliore per il tuo problema. Progetta attentamente il tuo sistema e in futuro potresti migrare facilmente in altri sistemi di database (distribuiti o relazionali).
Altri suggerimenti
Ho provato a usare S3 come una sorta di "database" usando minuscoli file XML per contenere i miei oggetti di dati strutturati e basandomi sulle chiavi S3 "". per cercare questi oggetti.
Le prestazioni erano inaccettabili, anche da EC2 - la latenza a S3 è semplicemente troppo alta.
L'esecuzione di MySQL su un dispositivo EBS sarà un ordine di grandezza più veloce, anche con così tanti record.