Tuesday, October 4, 2016

No acid , acido no






+

Contrassegnati con noacid Nel primo articolo di questa serie, ho sollevato un problema considerato uno dei stranezze di sharding. Il problema sollevato è stato quello che un fare dovrebbe un singolo inquilino che occupa una scheggia supera la capacità di un frammento (ad esempio in termini di stoccaggio e di potenza di calcolo). Lo scenario mi riferivo nel primo articolo è stato che ho optato per scegliere il "paese" come il mio modo di definire un (o una chiave sharding) inquilino. In questa iterazione, io ancora una volta tenta di condividere i miei pensieri su come avrei affrontare la situazione. Fuori del blocco, probabilmente sarei sbotto il seguente quando chiedono come risolvere questo problema: Aumentare la dimensione del frammento Aumentare la potenza di calcolo della macchina in cui si trova il frammento On-premise in implementazioni sharding, gettando in più hardware è più facile da realizzare. Tuttavia, facendo i suggerimenti di cui sopra, quando si utilizza SQL Azure, è più facile a dirsi che a farsi. Ecco perché: Microsoft limita le dimensioni dei database di SQL Azure spezzato 1GB, 5GB e 50GB. L'istanza di calcolo di cui un frammento può risiedere in SQL Azure è come finito pure Ho sentito parlare di rapporti non verificate che Microsoft permette caso per caso per aumentare la dimensione del database di un SQL Azure per più di 50 GB e, probabilmente, situare una scheggia su qualche bene rig speciale. Questo porta però ad una domanda su quanto Microsoft consente ogni sottoscrittore SQL Azure per usufruire di tale trattamento speciale. E potrebbe probabilmente costerà una fortuna per fare le cose in questo modo. Tuttavia, ci sono diversi modi per aggirare il problema a portata di mano senza ottenere un trattamento speciale. Si può anche effettuare le seguenti operazioni: Si può dire al vostro inquilino non crescere grande e consumano molto la potenza di calcolo (Hey ... Flickr fa questo. P) Probabilmente si può coccio una scheggia. A volte, le cose possono davvero andare complicato, ma in qualsiasi momento della giornata, si può tagliare a pezzi un frammento. Inoltre, a questo punto, si potrebbe avere probabilmente mangiato sharding per la prima colazione, il pranzo e la cena. Così come uno Shard un frammento? Nella prima parte di questa serie, ho usato come esempio di sharding una banca dati per Paese. Per aggiornare, ecco un estratto dal primo articolo: Decidendo di suddividere ulteriormente un paese dalle città in cui ogni città diventa una scheggia, le seguenti affermazioni sarebbero vere: La nuova chiave sharding è ora city_code. Il nostro frammento occuperebbe solo i dati relativi a una città. Il nostro frammento occuperebbe solo i dati relativi a una città. I vari frammenti possono essere sullo stesso server. Frammenti non hanno bisogno di essere in server separati. L'aumento del numero di frammenti potrebbe anche aumentare la quantità che spendiamo per l'affitto dei database SQL Azure. Secondo Wikipedia, la Germania da sola ha 2062 città. Questo è un grave spesa mensile che abbiamo qui. Tuttavia questo esempio è solo a scopo illustrativo per trasmettere l'idea di sharding. Si può sempre scegliere / creare la chiave più pratico e conveniente per l'ulteriore sharding di affrontare il problema di andare oltre la capacità di un frammento senza la spesa in testa a causa di cattive scelte progettuali. A un certo punto, in futuro, potremmo superare la capacità di una scheggia, ancora una volta rompendo il nostro design. ************************************************** Toto Gamboa è un consulente specializzato su database, Microsoft SQL Server e lo sviluppo di software che operano nelle Filippine. Attualmente è membro e uno dei leader del gruppo delle Filippine, una associazione professionale per SQL Server (PASS) capitolo di SQL Server gli utenti ed è uno dei Microsoft MVP per SQL Server nelle Filippine. Si può raggiungerlo con l'invio di una e-mail a totogamboa@gmail. com Nel primo articolo. Ho mostrato un esempio di come il design di un database potrebbe avere un impatto noi tecnicamente e finanziariamente. E sharding non è tutto solo di spaccare il backup dei dati. Si porta anche in tavola un gruppo di mostri terribili per uccidere. Ci sono molti problemi che deve essere considerato quando si tenta di coccio un database, soprattutto in SQL Azure. Nel rompere le cose a parte, si è confinante con le religioni contrastanti. Un mostro da uccidere è la questione di acidità. Le persone discutono NoSQL, NOREL, NoACID di essere una delle tendenze là fuori. E la maggior parte anche giurare al fatto che questi approcci sono meglio di SQL. Nel mio caso, io preferisco chiamarlo NoACID e non è con qualsiasi mezzo più o meno di SQL. Ho implementazioni NoACID su alcuni progetti che ho avuto. E io amo SQL. Per semplificare, metto a queste tendenze in un grumo NoX quanto comunemente tentativo di disimpegnarsi con le realtà di SQL. Per me, NOx non è una religione, è semplicemente un requisito. La natura della app si costruisce detterà se è necessario rispettare i principi di ACID (Atomicità, Consistenza, Isolamento, Durabilità). Se è necessaria ACIDO, è necessario a prescindere dei suoi dati e storage engine o la vostra religione preferita. Se è necessario, è necessario sostenerlo. La maggior parte delle applicazioni cloud che vediamo, come Google e Facebook, potrebbero probabilmente hanno ACIDO essere assente nella loro lista requisiti. Google è principalmente di sola lettura in modo che non ha senso avere i dati sparsi in tutto vari server in tutti i continenti, senza la necessità di ACID. Per natura, ACIDO a questo proposito, può essere molto minimi o assenti. Facebook sul otherhand è di lettura / scrittura intensiva. Sembra che è guidato da una massiccia altamente sofisticato accodamento dei messaggi del motore. Sarebbe ACID essere richiesto in Facebook? Io non sono del tutto sicuro di implementazione di Facebook, ma il modo in cui lo guardo, acido può essere facoltativo. Acido può anche essere presente in operazioni in questione ad un solo conduttore in caso di un account FB. Al di fuori di questo, l'assenza di acido probabilmente potrebbe essere compensata da code e sincronizzazione dei dati. Se Facebook e Google hanno deciso di richiedere ACID, potrebbero essere confrontati a problemi di bloccaggio su un sacco di cose. Mentre agganciato, la latenza potrebbe essere una delle conseguenze. E 'quindi molto importante per disporre in prima persona se l'acido è un requisito o meno. Per un sistema transazionale pesante, un disegno sharded presenta un sacco di ostacoli alla transenna. In SQL Azure, questo è ancora più difficile, come SQL Azure non supporta le transazioni distribuite come una volta con SQL Server. Questo significa che, se la transazione si estende su più frammenti, non esiste un modo semplice per farlo come SQL Azure non lo supporta, quindi acido può essere compromessa. SQL Azure tuttavia supporta transazioni locali. Questo significa che si può sicuramente eseguire le operazioni di acidi all'interno di un frammento. Continua… ************************************************** Toto Gamboa è un consulente specializzato su database, Microsoft SQL Server e lo sviluppo di software che operano nelle Filippine. Attualmente è membro e uno dei leader del gruppo delle Filippine, una associazione professionale per SQL Server (PASS) capitolo di SQL Server gli utenti ed è uno dei Microsoft MVP per SQL Server nelle Filippine. Si può raggiungerlo con l'invio di una e-mail a totogamboa@gmail. com Toto Gamboa è specializzata in database e un progettista di software. Lui è un fotografo di uccelli. un pescatore e ama andare sui viaggi di strada. Quando nella metropolitana, scava film. Egli cuochi e suona la chitarra. Egli è un Microsoft MVP per SQL Server e non ha nessuna TV e nessun iPhone!




No comments:

Post a Comment