In che modo le aggregazioni di database formano un monoide?


11

Su cs.stackexchange ho chiesto informazioni sulla libreria di scale di algebird su github, speculando sul motivo per cui potrebbero aver bisogno di un pacchetto astratto di algebra.

La pagina github ha alcuni indizi:

Implementazioni di Monoidi per algoritmi di approssimazione interessanti, come filtro Bloom, HyperLogLog e CountMinSketch. Questi ti consentono di pensare a queste operazioni sofisticate come potresti fare con i numeri e di aggiungerle in hadoop o online per produrre statistiche e analisi potenti.

e in un'altra parte della pagina GitHub:

È stato originariamente sviluppato come parte dell'API Matrix di Scalding, in cui le matrici avevano valori che sono elementi di monoidi, gruppi o anelli. Successivamente, fu chiaro che il codice aveva un'applicazione più ampia all'interno di Scalding e su altri progetti all'interno di Twitter.

Anche Oskar Boykin di Twitter è intervenuto:

La risposta principale è che sfruttando la struttura dei semi-gruppi, possiamo costruire sistemi che si parallelizzano correttamente senza conoscere l'operazione sottostante (l'utente promette associatività).

Usando i Monoidi, possiamo sfruttare la scarsità (abbiamo a che fare con molte matrici sparse, in cui quasi tutti i valori sono zero in alcuni Monoidi).

Usando gli Anelli, possiamo fare la moltiplicazione della matrice su cose diverse dai numeri (cosa che a volte abbiamo fatto).

Lo stesso progetto algebird (così come la storia del problema) spiega abbastanza chiaramente cosa sta succedendo qui: stiamo costruendo molti algoritmi per l'aggregazione di grandi set di dati e sfruttare la struttura delle operazioni ci dà una vittoria sul lato dei sistemi (che di solito è il punto dolente quando si cerca di produrre algoritmi su migliaia di nodi).

Risolvi i problemi di sistema una volta per qualsiasi Semigruppo / Monoide / Gruppo / Anello, quindi puoi collegare qualsiasi algoritmo senza dover pensare a Memcache, Hadoop, Storm, ecc ...

Come sono Bloom filters/ hyperloglog/ countminsketchcome i numeri?

In che modo le aggregazioni di database hanno una struttura monoidale?
Che aspetto ha questo monoide? Hanno mai una struttura di gruppo?

Riferimenti bibliografici sarebbero utili.


qualcuno può anche delineare la connessione "matrici sparse in cui quasi tutti i valori sono zero in un monoide"?
vzn

ee0=e

n×n

@vzn, no gli elementi all'interno della matrice.
Nicholas Mancuso,

Risposte:


14

Ti chiedi perché le aggregazioni di database hanno una struttura monoidale.

ababa.b

.(a.b).c=a.(b.c)

Quasi sempre esiste un tipo di identità, che si tratti del numero 0 o 1, della stringa vuota, di una matrice di identità, di una distribuzione uniforme o dell'insieme vuoto, che dipende dall'operazione. Quindi in effetti i dati di solito formano un monoide .

Il punto pratico sul pensare ai dati come a formare un monoide è che fornisce un modo per discutere le operazioni su diversi tipi di dati usando un linguaggio algebrico comune. Ciò si traduce quindi in librerie di codici generici in grado di gestire qualsiasi monoide, semplicemente passando un'operazione di aggregazione appropriata come argomento.

Nota che molti tipi di dati non hanno inversioni, quindi una struttura di gruppo è troppo da sperare. Se si dispone di una struttura di gruppo, diventano possibili alcuni modi aggiuntivi di manipolare i dati, ma poiché né le matrici con moltiplicazione, né gli interi positivi con aggiunta hanno inversioni, i dati non strutturati in gruppi sono abbastanza comuni.

+..+.

Un modello semiring di aggregazione dei dati è in circolazione da tempo nella comunità della soddisfazione dei vincoli. Si noti che un'istanza del problema di soddisfazione del vincolo è una query congiuntiva su un particolare database di fatti, quindi questo è piuttosto generale: le query più pratiche sui dati sono congiuntive.

  • Stefano Bistarelli, Ugo Montanari e Francesca Rossi, Soddisfazione e ottimizzazione dei vincoli basati sul Semiring, JACM 44 (2), 1997, 201–236. doi: 10.1145 / 256303.256306

L'attuale scatto di analisi teorica del modello semiring di aggregazione dei dati è stato avviato nel 2007, nel contesto della provenienza . Provenienza è un termine sofisticato per annotare i dati. Poiché qualsiasi tupla del database può essere vista come annotazioni applicate ad alcuni identificatori di tuple unici, l'aggregazione dei dati può essere vista come una semplice combinazione di annotazioni. La provenienza è quindi una generalizzazione dell'idea di aggregare i dati ed è stato esplicitamente affermato che il giusto modello teorico di combinazione delle annotazioni è un semiring. Il più generale semiring, di polinomi di provenienza, consente in realtà di tenere traccia dell'intera storia di come un pezzo di dati è stato ottenuto da parti costituenti. Ad esempio, un valore pnell'analisi di una sperimentazione clinica può tenere traccia di come è stata calcolata da ciascuno dei risultati della sperimentazione individuale. Se alcuni di loro risultano essere errati (o falsi), si può semplicemente ricalcolare senza i dati errati.

  • Todd J. Green, Grigoris Karvounarakis e Val Tannen, Seminari provenzali , PODS 2007, 31–40. doi: 10.1145 / 1265530.1265535

Ci sono stati molti altri lavori sull'utilizzo dei semirings per aggregare i dati, vedere i documenti che citano questo .

Dalla prospettiva più immediata che citi, vedi ad esempio il framework GDL per come si può effettivamente parallelizzare un calcolo raggruppando l'espressione di semiring sottostante in modo appropriato.

  • Srinivas M. Aji e Robert J. McEliece, La legge distributiva generalizzata , IEEE Transactions on Information Theory 46 (2), 2000, 325–343. doi: 10.1109 / 18.825794
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.