Versioning di milioni di file con SCM distribuito

3

Sto esaminando la possibilità di utilizzare SCM distribuiti come Git o Mercurial per gestire milioni di file XML. Ogni file sarebbe una transazione commerciale, ad esempio un ordine di acquisto, che verrebbe aggiornato 10 volte durante il ciclo di vita della transazione fino a quando non viene "completato" e non viene più modificato.

E con "gestisci", intendo che lo SCM verrebbe utilizzato non solo per la versione dei file, ma anche per replicarli su altre macchine per la ridondanza e il trasferimento dell'IP.

Supponiamo, per esempio, che un obiettivo sia fornire buone prestazioni se gestisse il volume di ordini che Amazon.com ha affermato di avere al suo massimo nel dicembre 2010: circa 150.000 ordini al minuto.

Ci aspettiamo che il sistema sia distribuito su molti server per ottenere prestazioni ragionevoli. Stiamo anche pianificando di utilizzare esclusivamente unità a stato solido.

C'è una ragione per cui non vogliamo usare un RDBMS per l'archiviazione primaria, ma è un po 'oltre lo scopo di questa domanda.

Qualcuno ha esperienza diretta con le prestazioni di SCM distribuiti sotto tale carico e quali strategie sono state utilizzate?

Preferibile open source, poiché anche il prodotto finale deve essere FOSS.

    
posta Chris Wenham 27.02.2011 - 20:53
fonte

4 risposte

4

Credo che oltre alla performance stessa, che è in realtà piuttosto impressionante sia su git che su mercurial, sarei più interessato al problema a lungo termine delle fusioni.

Puoi automatizzare una serie di attività su DVCS (commit, push / pull, aggiornamenti, ecc.) che includono le unioni, ma ci sono sempre alcune collisioni che non possono essere " automagicamente " risolte .

E con transazioni di 150k / min suppongo che anche se solo una piccolissima percentuale di fusioni richiede l'intervento umano, diventerebbe un problema nel tempo.

Con la tua esclusione di RDBMS; ci sono altri metodi di archiviazione più appropriati e scalabili come i database orientati ai documenti che si adattano al tuo caso. Prenderò in considerazione quei primi.

    
risposta data 27.02.2011 - 21:42
fonte
1

In questo caso dovresti usare un database distribuito come mongodb, DVCS non ti darà quella prestazione e a che serve la replica manuale? Questo meccanismo è già implementato nei principali DBMS, perché dovresti preoccuparti di reimplementarlo su DVCS?

Se desideri continuare a utilizzare i file system, puoi utilizzare i file system con versione, ad esempio wayback .

    
risposta data 28.02.2011 - 03:53
fonte
0

Che dire di Perforce ? È usato nel settore dei giochi per mantenere sia il codice che le risorse di gioco, che possono essere piuttosto grandi.

Qui puoi trovare un ragazzo che confronta Perforce e Git.

    
risposta data 27.02.2011 - 21:18
fonte
0

Quindi, se leggo correttamente, hai delle transazioni e devi eseguire la versione delle operazioni sulle transazioni.

Daniel ha un grande merito riguardo ai problemi di unione che potrebbero sorgere. Dovresti creare il tuo flusso di lavoro per assicurarti che non possa accadere.

    
risposta data 27.02.2011 - 21:46
fonte

Leggi altre domande sui tag