Non esiste un modo "corretto" di fare qualsiasi cosa nella programmazione, anche con un'architettura specifica di cloud computing come Windows Azure.
Una ricerca rapida della documentazione MSDN rivela che Azure ha in effetti alcune funzionalità utili per aiutarti a separare i dati del tuo cliente. Sembra che si possa decidere di assegnare a ciascun client la propria istanza del server SQL, oppure si potrebbe invece utilizzare un'istanza comune da partizionare direttamente o sfruttare alcune funzionalità integrate per partizionare per te.
Ciascuna di queste soluzioni ha i suoi pro e contro, che dovrai valutare autonomamente. Alcune indicazioni concettuali sulla selezione:
- Se si utilizza un'istanza separata per ciascun client, si avrà una separazione integrata per i dati dei propri clienti, ma una ridotta capacità di esaminare i dati da più client. Microsoft potrebbe inoltre addebitare ulteriori costi aggiuntivi.
- Se si utilizza la stessa istanza ma si partizionano manualmente i dati in un singolo database, sarà necessario gestire e regolare autonomamente le varie chiavi e indici. Ovviamente non vuoi che i 50.000.000 di record di un cliente di grandi dimensioni rallentino la query dei 500 record di un cliente più piccolo.
- Se si assegna a ciascun client uno schema o un database distinti nell'istanza del server singolo, la gestione delle query diventa più semplice, ma potrebbe essere necessario preoccuparsi dei blocchi del server. (Sul lato positivo, un separatore-db-per-cliente potrebbe consentire di semplificare la transizione.)
- Se usi gli strumenti di partizione Bulit-in di Microsoft, è probabile che finiscano per fare esattamente ciò che vuoi che facciano. Oppure puoi ottenere il 70% del modo di implementare e scoprire un bisogno che i loro strumenti non coprono, richiedendo di abbandonare gran parte del tuo lavoro. (La ricerca e modelli appropriati sono importanti quando si utilizza la toolchain di chiunque altro.)
Per quanto riguarda la domanda "come si spostano i dati da una singola istanza a una multiistanza", immagino che sarebbe in gran parte questione di costruire la nuova architettura e quindi di importare i vecchi dati. Avrai comunque bisogno di sapere come farlo per i futuri clienti.