2013-02-07 28 views
5

Prendere un database di 100 GB per questo esempio:MongoLab vs Azure Storage Table

Azure costo di stoccaggio: £ 6.05/m MongoLab su AWS con 1 costo nodo: £ 153,18/m

Mi sto perdendo qualcosa? Calcolato qualcosa in modo errato? Qualcuno può chiarire le cose per me qui? Preferirei usare MongoLab perché mi piace molto il nodo/mongoDB. Ma sembra una soluzione molto più economica per andare con il Table Storage.

Conosco le differenze tra chiave/valore e archivio documenti e preferisco quest'ultimo.

risposta

12

È necessario considerare che Azure Table Storage (ATS) è storage-as-a-service. Non è necessario configurare alcun server per gestire lo storage e le relative operazioni CRUD. Questo è gestito per te da Azure, poiché ATS è un enorme sistema multi-tenant. Basta chiedere un account, ricevere un endpoint (oltre alla chiave primaria primaria &) e andare via, pagando circa 7 centesimi per GB (e un penny per 100.000 transazioni, il che è piuttosto insignificante).

Con MongoDB, è necessario mettere in scena i propri server, sia in AWS che in Azure (o in locale o altrove), oltre allo storage di provisioning. I fornitori di servizi cloud attuali non dispongono di un'offerta MongoDB-as-a-service nativa. La tua base di costo è ora molto più alta di ATS, e tu sei responsabile per backup/snapshot, manutenzione di MongoDB, ecc. Anche una distribuzione MongoDB a ossa nude ti costerà almeno due istanze di macchina virtuale (un server autonomo in produzione non è consigliabile a causa di periodici tempi di inattività). Le istanze di Azure più piccole sono $ 0,02/ora o circa $ 14 mensili x 2, per un ingombro minimo di circa $ 30 al mese (questa è una macchina virtuale di fascia bassa con meno di 1 GB di RAM, non fornirà MongoDB ad alte prestazioni, ma potrebbe funziona alla grande solo per un sito Web o blog con poco traffico). Sacrificando la disponibilità, potresti eseguire una singola istanza extra-piccola a $ 14 al mese più il costo di archiviazione (che deve essere conservato in modo duraturo, quindi stai parlando di 7 cent/GB/mese).

Ora, si parla di MongoLab. Essi do hanno MongoDB-as-a-Service e hanno creato una soluzione di hosting multi-tenant e il loro servizio è disponibile su diversi cloud, incluso Azure. Il prezzo che fatturano tiene conto del loro investimento in istanze, storage e larghezza di banda della macchina virtuale, nonché manutenzione del server, strategie di backup, supporto, alta disponibilità, monitoraggio, ecc.

Non vorrei essere troppo fissato sui costi di archiviazione essendo il tuo unico fattore determinante. Se hai bisogno di fare qualsiasi tipo di query complesse che richiedono, ad esempio, più campi indicizzati, con ATS dovrai costruire tabelle aggiuntive per fornire quegli indici (o finirai per fare scansioni di partizioni o scansioni di tabelle per trovare il contenuto che bisogno). MongoDB ha un motore di ricerca e aggregazione molto potente. Se la tua app ha bisogno di questa soluzione, potresti spendere di più per l'ingegnerizzazione in fase di sviluppo e mantenere la complessità aggiuntiva della memorizzazione della tabella, contro l'utilizzo di MongoDB e l'esecuzione della tua app "oggi". Se, d'altra parte, disponi di dati che si adattano molto bene all'archiviazione della tabella, dove la chiave della partizione + riga copre la maggior parte dei casi di ricerca e puoi sfruttare le transazioni del gruppo di entità per gli aggiornamenti atomici, dovresti considerare l'archiviazione della tabella non solo per il costo ma per la scala (200 TB per account di archiviazione) e le prestazioni.

Spero che questo aiuta ...

+0

Vorrei anche aggiungere che con la Storage-as-a-Service che offre non si ottiene un motore di esecuzione di solito. Questa è un'enorme differenza tra MonoDB/SQL Azure e Azure Table Storage. L'esecuzione avviene sia sul client che sul server, mentre se eseguo una stored procedure/istruzione SQL mi interessa solo i risultati sul client.La ragione di ciò è che facendo cose semplici come ottenere conteggi o analisi, è necessario riportare alcuni dati/metadati al client e quindi elaborarli (nel caso di alcune operazioni di Archiviazione tabella di Azure). –