Як агрегація баз даних утворює моноїд?


11

На cs.stackexchange я запитав про бібліотеку scala algebird на github, розмірковуючи над тим, чому їм може знадобитися абстрактний пакет алгебри.

На сторінці github є деякі підказки:

Впровадження Monoids для цікавих алгоритмів наближення, таких як фільтр Bloom, HyperLogLog та CountMinSketch. Вони дозволяють думати про такі складні операції, як ти, можливо, чисел, і додавати їх у hadoop або в Інтернеті для отримання потужної статистики та аналітики.

та в іншій частині сторінки GitHub:

Спочатку він був розроблений як частина Matrix API Scalding, де в матрицях були значення, що є елементами моноїдів, груп або кілець. Згодом було зрозуміло, що код отримав ширше застосування в межах Scalding та інших проектів у Twitter.

Навіть Оскар Бойкін із Twitter прозвучав:

Основна відповідь полягає в тому, що, використовуючи структуру напівгруп, ми можемо будувати системи, які правильно паралелізуються, не знаючи основної операції (користувач обіцяє асоціативність).

Використовуючи Monoids, ми можемо скористатись ощадливістю (ми маємо справу з великою кількістю розріджених матриць, де майже всі значення є нулем у деяких Monoid).

Використовуючи Кільця, ми можемо робити матричне множення на інші речі, крім чисел (що це було зроблено).

Сам проект algebird (як і історія випусків) досить чітко пояснює, що тут відбувається: ми будуємо безліч алгоритмів для агрегації великих наборів даних, а використання структури операцій дає нам виграш на стороні систем (що зазвичай є больовою точкою при спробі виробити алгоритми на 1000-ти вузлах).

Вирішіть системні проблеми один раз для будь-якої Semigroup / Monoid / Group / Ring, і тоді ви можете підключити будь-який алгоритм, не замислюючись про Memcache, Hadoop, Storm тощо.

Як Bloom filters/ hyperloglog/ countminsketchподібні числа?

Яким чином агрегація баз даних має моноїдну структуру?
Як виглядає цей моноїд? Чи мають вони колись групову структуру?

Літературні посилання були б корисні.


також може хтось накреслити з'єднання "розріджених матриць, де в моноїді майже всі значення дорівнюють нулю"?
vzn

ee0=e

n×n

@vzn, ніяких елементів всередині матриці немає.
Ніколас Манкузо

Відповіді:


14

Ви запитуєте, чому агрегація баз даних має моноїдну структуру.

ababa.b

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

Майже завжди є якась тотожність, будь то число 0 або 1, порожній рядок, матриця ідентичності, рівномірний розподіл або порожній набір, який залежить від операції. Тому насправді дані зазвичай утворюють моноїд .

Практичним моментом розгляду даних як формування моноїду є те, що він забезпечує спосіб обговорення операцій над різними видами даних, використовуючи загальну алгебраїчну мову. Потім це перетворюється на загальні бібліотеки коду, які можуть мати справу з будь-якими моноїдами, просто передаючи відповідну операцію агрегації як аргумент.

Зауважте, що багато видів даних не мають зворотних обертів, тому структура групи занадто багато, на яку можна сподіватися. Якщо у вас є структура групи, то можливі деякі додаткові способи маніпулювання даними, але оскільки ні матриці з множенням, ні додатні цілі числа з додаванням не мають зворотних зв'язків, негруповані структуровані дані є досить поширеними.

+..+.

Модель накопичення даних, що перебуває у напівфабрикаті, вже деякий час існує у спільноті задоволення обмежень. Зауважте, що екземпляр проблеми задоволення обмежень - це кон'юнктивний запит над певною базою фактів, тому це досить загально: більшість практичних запитів над даними є сполучниковими.

  • Стефано Бістареллі, Уго Монтанарі та Франческа Россі, задоволення та оптимізація обмежень на основі семірінгу, JACM 44 (2), 1997, 201-236. doi: 10.1145 / 256303.256306

Нинішній стрімкий теоретичний аналіз моделі семірування даних агрегації даних розпочався в 2007 році в контексті походження . Походження - це фантазійний термін для анотування даних. Оскільки будь-який кордон бази даних може розглядатися як анотації, застосовані до якогось унікального ідентифікатора кортежу, агрегація даних може розглядатися як просто комбінація анотацій. Таким чином, походження - це узагальнення ідеї агрегування даних, і явно стверджувалося, що правильна теоретична модель об'єднання анотацій - це семірінг. Найбільш загальна семінарія поліномів походження насправді дозволяє відстежувати всю історію того, як частина даних була отримана із складових частин. Як приклад, p-значенняв аналізі клінічного випробування можна відслідковувати, як воно було обчислене з кожного окремого результату випробування. Якщо деякі з них виявляються помилковими (або підробленими), можна просто перерахувати без поганих даних.

  • Тодд Дж Грін, Grigoris Karvounarakis і Val Tannen, провенанс півкільцями , стручки 2007, 31-40. doi: 10.1145 / 1265530.1265535

Було проведено багато подальших робіт, використовуючи семірінги для узагальнення даних, див. Статті, що цитують цей .

З більш негайної практичної точки зору, яку ви цитуєте, див., Наприклад, рамку GDL про те, як можна ефективно паралелізувати обчислення, групуючи відповідний вираз семірування відповідно.

  • Шрінівас М. Аджі та Роберт Дж. Макліс, Узагальнений закон про розподіл , IEEE Транзакції з інформаційної теорії 46 (2), 2000, 325–343. doi: 10.1109 / 18.825794
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.