¿Cómo forman las agregaciones de bases de datos un monoide?


11

En cs.stackexchange , pregunté sobre la biblioteca algebird scala en github, especulando sobre por qué podrían necesitar un paquete de álgebra abstracta.

La página de github tiene algunas pistas:

Implementaciones de monoides para algoritmos de aproximación interesantes, como el filtro Bloom, HyperLogLog y CountMinSketch. Estos le permiten pensar en estas operaciones sofisticadas como si fueran números, y sumarlas en hadoop o en línea para producir estadísticas y análisis potentes.

y en otra parte de la página de GitHub:

Originalmente se desarrolló como parte de la API de matriz de Scalding, donde las matrices tenían valores que son elementos de monoides, grupos o anillos. Posteriormente, estaba claro que el código tenía una aplicación más amplia dentro de Scalding y en otros proyectos dentro de Twitter.

Incluso Oskar Boykin de Twitter intervino:

La respuesta principal es que al explotar la estructura de semi-grupos, podemos construir sistemas que se paralelizan correctamente sin conocer la operación subyacente (el usuario promete asociatividad).

Al usar Monoids, podemos aprovechar la dispersión (tratamos con muchas matrices dispersas, donde casi todos los valores son cero en algunos Monoid).

Al usar Rings, podemos hacer una matriz de multiplicación sobre otras cosas que no sean números (que en ocasiones lo hemos hecho).

El proyecto algebird en sí (así como el historial de problemas) explica con bastante claridad lo que está sucediendo aquí: estamos creando muchos algoritmos para la agregación de grandes conjuntos de datos, y el aprovechamiento de la estructura de las operaciones nos da una victoria en el lado de los sistemas (que suele ser el punto crítico cuando se intenta producir algoritmos en miles de nodos).

Resuelva los problemas del sistema una vez para cualquier Semigroup / Monoid / Group / Ring, y luego puede conectar cualquier algoritmo sin tener que pensar en Memcache, Hadoop, Storm, etc.

¿Cómo son Bloom filters/ hyperloglog/ countminsketchnúmeros similares?

¿Cómo es que las agregaciones de bases de datos tienen una estructura monoidal?
¿Cómo se ve este monoide? ¿Alguna vez tienen estructura grupal?

Las referencias bibliográficas serían útiles.


¿también alguien puede esbozar la conexión "matrices dispersas donde casi todos los valores son cero en un monoide"?
vzn

ee0=e

n×n

@vzn, no los elementos dentro de la matriz.
Nicholas Mancuso

Respuestas:


14

Se pregunta por qué las agregaciones de bases de datos tienen estructura monoidal.

ababa.b

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

Casi siempre hay algún tipo de identidad, ya sea el número 0 o 1, la cadena vacía, una matriz de identidad, una distribución uniforme o el conjunto vacío, que depende de la operación. Entonces, de hecho, los datos generalmente forman un monoide .

El punto práctico sobre pensar que los datos forman un monoide es que proporciona una manera de discutir operaciones sobre diferentes tipos de datos utilizando un lenguaje algebraico común. Esto se traduce en bibliotecas de códigos genéricos que pueden manejar cualquier monoide, simplemente pasando una operación de agregación apropiada como argumento.

Tenga en cuenta que muchos tipos de datos no tienen inversas, por lo que una estructura de grupo es demasiado esperada. Si tiene una estructura grupal, entonces son posibles algunas formas adicionales de manipular los datos, pero como ni las matrices con multiplicación ni los enteros positivos con suma tienen inversas, los datos no estructurados en grupo son bastante comunes.

+..+.

Un modelo semired de agregación de datos ha existido en la comunidad de satisfacción de restricciones por algún tiempo. Tenga en cuenta que una instancia de problema de satisfacción de restricciones es una consulta conjunta sobre una base de datos de hechos en particular, por lo que esto es bastante general: la mayoría de las consultas prácticas sobre datos son conjuntivas.

  • Stefano Bistarelli, Ugo Montanari y Francesca Rossi, satisfacción y optimización de restricciones basadas en Semiring , JACM 44 (2), 1997, 201–236. doi: 10.1145 / 256303.256306

El arranque actual del análisis teórico del modelo semiring de agregación de datos se inició en 2007, en el contexto de procedencia . Procedencia es un término elegante para anotar datos. Dado que cualquier tupla de la base de datos puede verse como anotaciones aplicadas a algún identificador de tupla único, la agregación de datos puede verse como una combinación de anotaciones. La procedencia es, por lo tanto, una generalización de la idea de agregar datos, y se ha argumentado explícitamente que el modelo teórico correcto de combinación de anotaciones es un semiring. La semirección más general, de polinomios de procedencia, en realidad le permite a uno hacer un seguimiento de toda la historia de cómo se obtuvo un dato de las partes constituyentes. Como ejemplo, un valor pen el análisis de un ensayo clínico puede realizar un seguimiento de cómo se calculó a partir de cada uno de los resultados del ensayo individual. Si algunos de ellos resultan estar equivocados (o falsos), uno simplemente puede volver a calcular sin los datos incorrectos.

  • Todd J. Green, Grigoris Karvounarakis y Val Tannen, Semireings de procedencia , PODS 2007, 31–40. doi: 10.1145 / 1265530.1265535

Ha habido mucho trabajo adicional usando semirrelaciones para agregar datos, vea los documentos que citan este .

Desde la perspectiva práctica más inmediata que usted cita, vea, por ejemplo, el marco GDL sobre cómo se puede paralelizar efectivamente un cálculo al agrupar la expresión semiring subyacente de manera apropiada.

  • Srinivas M. Aji y Robert J. McEliece, La ley distributiva generalizada , IEEE Transactions on Information Theory 46 (2), 2000, 325–343. doi: 10.1109 / 18.825794
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.