上cs.stackexchange私はについて尋ねalgebird彼らは抽象代数パッケージを必要とするかもしれない理由を推測、githubの上でScalaのライブラリ。
githubページにはいくつかの手がかりがあります。
ブルームフィルター、HyperLogLog、CountMinSketchなどの興味深い近似アルゴリズム用のモノイドの実装。これらにより、これらの洗練された操作を数字のように考えることができ、強力な統計と分析を生成するためにそれらをhadoopまたはオンラインで合計できます。
GitHubページの別の部分で:
元々は、ScaldingのMatrix APIの一部として開発されたもので、マトリックスには、モノイド、グループ、またはリングの要素である値がありました。その後、Scalding内およびTwitter内の他のプロジェクトでコードがより広範なアプリケーションを持つことが明らかになりました。
TwitterのOskar Boykinでさえ、
主な答えは、セミグループ構造を活用することで、基になる操作を知らなくても正しく並列化するシステムを構築できることです(ユーザーは結合性を約束しています)。
モノイドを使用することで、スパース性を利用できます(モノイドではほとんどすべての値がゼロである多数のスパース行列を扱います)。
リングを使用することにより、数値以外の行列乗算を実行できます(場合によっては実行しました)。
algebirdプロジェクト自体(および問題の履歴)は、ここで何が行われているのかをかなり明確に説明しています。 (これは通常、数千のノードでアルゴリズムを生産しようとするときの問題点です)。
セミグループ/モノ/グループ/リングについてシステムの問題を一度解決すれば、Memcache、Hadoop、Stormなどを考えずにアルゴリズムをプラグインできます。
どのようにしているBloom filters
/ hyperloglog
/ countminsketch
番号など?
データベース集約がモノイダル構造を持っているのはどうですか?
このモノイドはどのように見えますか?彼らはグループ構造を持っていますか?
文献の参照が役立ちます。