Domanda

Qualcuno ha preso in considerazione l'utilizzo di qualcosa sulla falsariga del datastore Amazon SimpleDB come database backend?

L'hosting di SQL Server (almeno nel Regno Unito) è costoso, quindi qualcosa di simile insieme all'archiviazione di file nel cloud (S3) potrebbe essere utilizzato per creare app che potrebbero crescere con la tua applicazione.

Ottimo in teoria, ma qualcuno prenderebbe in considerazione l'idea di usarlo.In effetti qualcuno lo sta effettivamente utilizzando adesso per un vero software di produzione poiché mi piacerebbe leggere i tuoi commenti.

È stato utile?

Soluzione

Questa è una buona analisi dei servizi Amazon da Osare.

S3 ha gestito ciò che in genere ho sentito descrivere come "archiviazione BLOB".Una tipica applicazione Web contiene in genere file multimediali e altre risorse (immagini, fogli di stile CSS, script, file video e così via) a cui si accede semplicemente tramite nome/percorso.Tuttavia molte di queste risorse hanno anche metadati (ad es.un file video su YouTube contiene metadati relativi alla sua valutazione, chi lo ha caricato, numero di visualizzazioni, ecc.) che devono essere anch'essi archiviati.Questa esigenza di storage schematizzato e interrogabile è il punto in cui entra in gioco SimpleDB.EC2 fornisce un server virtuale che può essere utilizzato per il calcolo completo di un'istanza del file system locale che non è persistente se il server virtuale si interrompe per qualsiasi motivo.Con SimpleDB e S3 hai gli elementi costitutivi per creare un'ampia classe di applicazioni in stile "Web 2.0" quando aggiungi le capacità di calcolo fornite da EC2.Tuttavia, né S3 né SimpleDB forniscono una soluzione per uno sviluppatore che desidera semplicemente la tipica esperienza di uno sviluppatore LAMP o WISC nella creazione di un'applicazione Web basata su database o per applicazioni che potrebbero avere esigenze di archiviazione personalizzate che non si adattano perfettamente ai contenitori di archiviazione BLOB o stoccaggio schematizzato.Senza accesso a un filesystem persistente, gli sviluppatori della piattaforma di cloud computing di Amazon hanno dovuto escogitare soluzioni sofisticate che comportano il backup manuale dei dati da EC2 a S3 per ottenere l'esperienza desiderata.

Altri suggerimenti

Ho appena finito di scrivere una libreria per rendere facile il porting di un'app su simpledb in Perl, Net::Amazon::SimpleDB::Simple perché ho trovato dolorose le librerie client di Amazon.La biblioteca non è ancora su CPAN, ma lo è http://rjurneyopen.s3.amazonaws.com/SimpleDB/Simple.pm L'idea era di rendere banale l'inserimento degli hash dentro e fuori SimpleDB.

Ho appena portato un'app per usarla.Nel complesso sono impressionato da SimpleDB...anche le query inefficienti richiedono solo 2-3 secondi per essere restituite.SimpleDB non sembra preoccuparsi delle dimensioni della tua tabella, a causa della sua natura Erlang/parallela.Le scansioni da tavolo sono facili per questo.

Il dolore deriva dal fatto che non puoi contare, sommare o raggruppare.Se hai intenzione di fare una di queste cose...allora SimpleDB probabilmente non fa per te.Al momento in termini di funzionalità esiste da qualche parte tra memcached e MySQL.Puoi SELEZIONARE ORDINE PER LIMITE, il che è carino.È anche bello che tu non debba ridimensionarlo da solo, ed è bello che non gli importi quanto ci metti dentro.Ma le operazioni più avanzate come l’analisi sono, nella migliore delle ipotesi, dolorose.Dovrai fare i tuoi calcoli lato server.È anche un grande vantaggio il fatto che su qualsiasi computer posso utilizzare la CLI simpledb http://code.google.com/p/amazon-simpledb-cli/ per interrogare i miei dati.

Ci sono alcuni "gotchas confusi". Ad esempio, gli attributi possono avere più di un valore e è necessario impostare esplicitamente "sostituire" quando si memorizza gli elementi.Inoltre, la memorizzazione di una stringa undef o nulla genera un errore di libreria, invece di eliminare la coppia nome/valore dell'attributo o impostarla come stringa nulla/vuota.

Anche imparare a pensare in termini di un modo in gran parte non normalizzato è un po’ strano, motivo per cui accoglierei il suggerimento di cui sopra che dice che è meglio per le nuove applicazioni.Il porting da un'app SQL a SimpleDB sarebbe doloroso perché la logica dell'applicazione dovrebbe cambiare.Il modo in cui fai le cose è un po’ diverso.I documenti di Amazon sono abbastanza bravi a spiegarlo.

Tutto questo è estraibile in una libreria che si trova sopra SimpleDB, quindi per il tuo utilizzo di SimpleDB vorrai scegliere una buona libreria...probabilmente non vuoi affrontarlo direttamente.C'è del lavoro sul lato PHP per semplificare le cose e c'è la mia libreria.C'è una fonte attiva RAILS, ma non sembra fare molto per te.

Tutto sommato è ancora all'inizio del gioco, ma rispetto ad altre API (mi viene in mente Twitter), devo dire che l'API REST di SimpleDB è piuttosto semplice (soprattutto considerando che è XML) ed è facile lavorarci.Lo consiglierei...a seconda dei requisiti della vostra applicazione e dell'economia del vostro utilizzo.Se stai cercando di scalare rapidamente un servizio che non carica molto il DB e non vuoi preoccuparti di una combinazione MySQL/memcache scalabile...allora SimpleDB può offrirti una soluzione "semplice".

Mi aspetto che le sue funzionalità continueranno a crescere e sarà una buona scelta per sempre più applicazioni che fanno cose più complesse e interessanti.Ma in questo momento è mirato e appropriato per il tipico servizio Web 2.0.

Utilizziamo SimpleDB quasi esclusivamente per i nostri nuovi progetti.La manutenzione zero, l'elevata disponibilità e l'assenza di installazione sono semplicemente troppo buoni.E per i tuoi sviluppatori Ruby, dai un'occhiata Record semplice, un'interfaccia simile ad ActiveRecord per SimpleDB che lo rende estremamente facile da usare.

Ma hai davvero bisogno di SQL Server?Non puoi convivere con PostgreSQL o MySQL?Entrambi hanno dimostrato di essere ok per la maggior parte dei compiti.

Ora, se hai bisogno delle funzionalità di SQL Server, sei sfortunato.

Un'altra opzione è noleggiare un server.Quanto è costoso?

(Ho usato Amazon S3 per archiviare immagini per un'applicazione, va bene e funziona bene, almeno per quello)

Non ho utilizzato SimpleDB, ma ho utilizzato una combinazione di S3, EC2 e MySQL per la nostra applicazione.

Finché sei disposto a utilizzare SimpleDB, potresti anche prendere in considerazione l'utilizzo di MySQL (che è molto scalabile e non così costoso).

Per quanto riguarda S3 ed EC2, è ottimo anche nella pratica.

SimpleDB funziona alla grande per molte applicazioni....se il tuo progetto richiederà molti report analitici, unioni, ecc., potresti prendere in considerazione MySQL o un modello ibrido.

Se scegli SimpleDB, abbiamo sviluppato Radquery.com per nostro uso interno e lo abbiamo aperto al pubblico.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top