Casa Finanza personale Gestione delle partizioni in NoSQL - dummies

Gestione delle partizioni in NoSQL - dummies

Sommario:

Video: Common design patterns with Azure Cosmos DB | Azure Friday 2025

Video: Common design patterns with Azure Cosmos DB | Azure Friday 2025
Anonim

La partizione parola viene utilizzata per due concetti diversi in NoSQL land. Una partizione di dati è un meccanismo per garantire che i dati siano equamente distribuiti su un cluster. D'altra parte, una partizione di rete si verifica quando due parti dello stesso cluster di database non possono comunicare.

Su sistemi cluster molto grandi, è sempre più probabile che si verifichi un guasto di un singolo componente. Se un cambio di rete tra server in un cluster fallisce, si verifica un fenomeno denominato (nel gergo del computer) cervello diviso . In questo caso, i singoli server continuano a ricevere richieste, ma non possono comunicare tra loro.

Questo scenario può portare a un'incoerenza dei dati o semplicemente a una ridotta capacità nell'archiviazione dei dati, poiché la partizione di rete con il minor numero di server viene rimossa dal cluster (o "votata" nella modalità Big Brother reale).).

Tolleranza delle partizioni

Sono disponibili due opzioni quando si verifica una partizione di rete:

  • Continuare, a un certo livello, per eseguire operazioni di lettura e scrittura.

  • "Vota fuori" una parte della partizione e decidi di correggere i dati più tardi quando entrambe le parti possono comunicare. Questo di solito implica che il cluster vota una replica di lettura come nuovo master per ciascun nodo partizione master mancante.

Riak consente di determinare quante volte i dati vengono replicati (tre copie, per impostazione predefinita, ovvero n = 3) e quanti server devono essere interrogati affinché una lettura abbia esito positivo. Ciò significa che, se il master principale di una chiave si trova sul lato sbagliato di una partizione di rete, le operazioni di lettura possono ancora riuscire se gli altri due server sono disponibili (ovvero, r = 2 disponibilità di lettura).

Riak gestisce le scritture quando il server della partizione primaria si interrompe utilizzando un sistema chiamato handoff . Quando i dati vengono inizialmente replicati, viene scritto il primo nodo per una particolare partizione chiave, insieme a (di default) due dei seguenti nodi vicini.

Se non è possibile scrivere sul primario, viene scritto il nodo successivo nell'anello. Queste scritture vengono effettivamente passate al nodo successivo. Quando il server primario viene ripristinato, le scritture vengono rieseguite su quel nodo prima che riprenda nuovamente le operazioni di scrittura primarie.

In entrambe queste operazioni, le incoerenze delle versioni possono verificarsi perché repliche diverse possono trovarsi in stati di versione diversi, anche se solo per pochi millisecondi.

Riak impiega ancora un altro sistema chiamato attivo anti - entropia per alleviare questo problema. Questo sistema naviga attraverso i valori aggiornati e assicura che le repliche vengano aggiornate ad un certo punto, preferibilmente il più presto possibile.Ciò aiuta a evitare conflitti sulla lettura mantenendo una velocità di importazione elevata, evitando così un commit a due fasi utilizzato da altri database NoSQL con supporto per il clustering slave master-shared-nothing.

Se si verifica un conflitto di lettura, Riak utilizza legge la riparazione per tentare di restituire solo i dati più recenti. Alla fine, tuttavia, e in base alle impostazioni di coerenza e disponibilità utilizzate, l'applicazione client può essere presentata con più versioni e viene chiesto di decidere autonomamente.

In alcune situazioni, questo compromesso è auspicabile e molte applicazioni possono intuitivamente sapere, in base ai dati presentati, quale versione utilizzare e quale versione scartare.

Indicizzazione secondaria

Gli indici secondari sono indici su dati specifici all'interno di un valore. La maggior parte dei negozi con valore chiave lascia questa indicizzazione all'applicazione. Tuttavia, Riak è diverso, utilizzando uno schema chiamato documento - basato sul partizionamento che consente l'indicizzazione secondaria.

Il partizionamento basato su documenti presuppone che si stiano scrivendo le strutture JSON nel database Riak. È quindi possibile impostare indici su particolari proprietà denominate all'interno di questa struttura JSON, come illustrato:

{"order-id": 5001, "id-cliente": 1429857, "order-date": "2014-09-24 "," Totale ": 134. 24}

Se si dispone di un'applicazione che mostra gli ordini di un cliente per il mese precedente, si desidera interrogare tutti i record, come mostrato, in cui l'ID cliente è un valore fisso (1429857) e la data dell'ordine è all'interno di un intervallo specifico (l'inizio e la fine del mese).

Nella maggior parte dei negozi a valore-chiave, si crea un altro bucket la cui chiave è il numero cliente e il mese combinati e il valore è un elenco di ID ordine. Tuttavia, in Riak, è sufficiente aggiungere un indice secondario sia su id cliente (intero) che su data ordine (data), che occupa spazio di archiviazione aggiuntivo ma presenta il vantaggio di essere trasparente per lo sviluppatore dell'applicazione.

Questi indici sono anche aggiornati dal vivo - il che significa che non vi è alcun ritardo tra l'aggiornamento di un valore del documento in Riak e gli indici aggiornati. Questo accesso dal vivo ai dati è più difficile da realizzare di quanto sembri. Dopo tutto, se gli indici sono incoerenti, non troverai mai i dati mantenuti in modo coerente!

Valutazione di Riak

Basho, l'entità commerciale dietro Riak, afferma che la sua prossima versione 2. 0 Il database NoSQL ha sempre una consistenza forte, un'affermazione che fanno altri venditori NoSQL. L'affermazione dei venditori NoSQL di avere sempre una consistenza forte è come pretendere di essere un vegetariano forte … tranne la domenica quando si mangia roast beef.

Riak non è un database compatibile con ACID. La sua configurazione non può essere modificata in modo che venga eseguita in modalità di conformità ACID. I client possono ottenere dati incoerenti durante le normali operazioni o durante le partizioni di rete. Riak scambia la coerenza assoluta per maggiore disponibilità e tolleranza delle partizioni.

L'esecuzione di Riak in modalità di consistenza forte significa che le sue repliche di lettura vengono aggiornate contemporaneamente al master principale. Ciò implica un commit a due fasi: in pratica, il nodo master scrive sugli altri nodi prima che confermi che la scrittura è completa.

Al momento della stesura di questo documento, la modalità di consistenza forte di Riak non supporta indici secondari o tipi di dati complessi (ad esempio, JSON). Spero che Basho risolverà questo problema nelle prossime versioni del database.

Riak Search (un motore di ricerca Apache Solr rimarchiato e integrato utilizza un modello di aggiornamento eventualmente coerente) può produrre falsi positivi quando si utilizza una consistenza forte. Questa situazione si verifica perché i dati possono essere scritti e quindi la transazione viene abbandonata, ma i dati vengono ancora utilizzati per l'indicizzazione, lasciando un risultato di ricerca "falso positivo": il risultato non è più valido per la query di ricerca.

Riak utilizza anche un processo sentinella separato per determinare quale nodo diventa un master in condizioni di failover. Questo processo, tuttavia, non è altamente disponibile, il che significa che per alcuni secondi è possibile che, mentre una nuova copia del processo sentinella sia portato online, non sia possibile aggiungere un nuovo nodo o un nuovo maestro eletto. È necessario essere consapevoli di questa possibilità in condizioni di failover ad alto stress.

Riak ha alcune caratteristiche interessanti per gli sviluppatori di applicazioni, come l'indicizzazione secondaria e il supporto del valore JSON integrato. La replica del database per il ripristino di emergenza verso altri data center è disponibile solo nella versione a pagamento, il cui prezzo può essere trovato sul loro sito Web (prezzi di noleggio mostrati, prezzi di licenza perpetui dati solo su richiesta).

Lo strumento di monitoraggio del cluster Riak Control non è molto apprezzato a causa del tempo di latenza durante il monitoraggio dei cluster. Riak ha molte promesse e se Basho aggiungerà più imprese - livello strutture di gestione dei cluster nelle versioni future, diventerà un prodotto best-in-class.

Gestione delle partizioni in NoSQL - dummies

Scelta dell'editore

Come leggere dal file in PHP per la programmazione HTML5 e CSS3 - manichini

Come leggere dal file in PHP per la programmazione HTML5 e CSS3 - manichini

Se puoi scrivere dati in un file in PHP, sarebbe logico che tu possa leggere da quel file anche per la programmazione HTML5 e CSS3. Il readContact. programma php recupera i dati salvati nel programma precedente e li visualizza sullo schermo. Non è difficile scrivere un programma per leggere ...

Come usare una classe PHP in uno script - dummy

Come usare una classe PHP in uno script - dummy

Il codice classe PHP deve essere inserito lo script che usa la classe. Più comunemente, la classe viene archiviata in un file di inclusione separato ed è inclusa in qualsiasi script che utilizza la classe. Per usare un oggetto, devi prima creare l'oggetto dalla classe. Quindi quell'oggetto può eseguire qualsiasi metodo che ...

Scelta dell'editore

Come usare lo strumento Timbro clone di Photoshop - manichini

Come usare lo strumento Timbro clone di Photoshop - manichini

Puoi usare lo strumento Timbro clone in Photoshop per rimuovere gli angoli e altri difetti copiando una porzione dei pixel circostanti, che dovrebbero avere un colore e una consistenza simili, sopra la parte malata dell'immagine. Per utilizzare lo strumento Timbro clone, attenersi alla seguente procedura: Selezionare lo strumento Timbro clone dallo strumento ...

Come disinstallare e reinstallare Photoshop Lightroom - dummies

Come disinstallare e reinstallare Photoshop Lightroom - dummies

Se si nota un problema con Lightroom la prima volta che si avvia esso, qualcosa potrebbe essere andato storto durante il processo di installazione. Disinstallare e quindi reinstallare potrebbe essere tutto ciò che è necessario per correggere il problema. Il processo è diverso per ogni sistema operativo, quindi ecco i passaggi separati per ciascuno. Su Windows: Chiudi tutto ...

Fotografia For Dummies Cheat Sheet - dummies

Fotografia For Dummies Cheat Sheet - dummies

La fotografia è un hobby divertente e gratificante che può renderti molto popolare tra la gente nelle tue foto - o molto impopolare. Per ottenere il massimo da una fotocamera "inquadra e scatta", digitale o meno, la prima abilità da padroneggiare è bloccare l'attenzione. Puoi perfezionare le tue abilità fotografiche in modo che le tue foto siano ...

Scelta dell'editore

Agire per aumentare le emozioni edificanti - manichini

Agire per aumentare le emozioni edificanti - manichini

Al fine di elevare le tue emozioni, il primo passo è diventare consapevoli di quale emozioni che hai Diventa consapevole di ciò che ti innesca: cosa ti mette in agitazione e ti fa arrabbiare e ciò che ti rende molto eccitato. Un trigger sta guardando alcuni programmi televisivi e consente alle emozioni di questi programmi di permeare ...

Come le aziende ti convincono ad acquistare i loro prodotti - manichini

Come le aziende ti convincono ad acquistare i loro prodotti - manichini

Quasi tutti i media commerciali destinati alle donne ottengono la loro pubblicità entrate dalle industrie del cibo, della bellezza, della dieta e della moda. Solo l'industria della dieta stessa è un'impresa commerciale da 33 miliardi di dollari l'anno. E, naturalmente, queste industrie hanno bisogno di clienti in modo continuativo per continuare a avere successo. È nel loro interesse per ...

Come si forma l'immagine del corpo nella tua gioventù - dummies

Come si forma l'immagine del corpo nella tua gioventù - dummies

In generale, ciò che hai vissuto con la tua famiglia quando stavano crescendo ha avuto un effetto diretto sui pensieri e le sensazioni che hai avuto sul tuo corpo. Ripensa ai tuoi anni più giovani. Quanto attentamente le seguenti affermazioni descrivono la tua famiglia? Nessuno ha esercitato. L'auto è stata utilizzata anche per viaggi brevi. Cibo pesante e da ingrasso ...