Trên cs.stackexchange tôi đã hỏi về thư viện alalaird scala trên github, suy đoán tại sao họ có thể cần một gói đại số trừu tượng.
Trang github có một số manh mối:
Việc triển khai Monoids cho các thuật toán xấp xỉ thú vị, chẳng hạn như bộ lọc Bloom, HyperLogLog và CountMinSketch. Điều này cho phép bạn nghĩ về các hoạt động tinh vi như bạn có thể đánh số và thêm chúng vào hadoop hoặc trực tuyến để tạo ra số liệu thống kê và phân tích mạnh mẽ.
và trong một phần khác của trang GitHub:
Ban đầu nó được phát triển như một phần của API Ma trận của Scalding, trong đó Ma trận có các giá trị là các thành phần của Đơn sắc, Nhóm hoặc Nhẫn. Sau đó, rõ ràng là mã có ứng dụng rộng hơn trong phạm vi mở rộng và trên các dự án khác trong Twitter.
Ngay cả Oskar Boykin của Twitter cũng theo đuổi:
Câu trả lời chính là bằng cách khai thác cấu trúc bán nhóm, chúng ta có thể xây dựng các hệ thống song song chính xác mà không cần biết hoạt động cơ bản (người dùng đang hứa hẹn khả năng kết hợp).
Bằng cách sử dụng Monoids, chúng ta có thể tận dụng độ thưa thớt (chúng ta xử lý rất nhiều ma trận thưa thớt, trong đó hầu như tất cả các giá trị đều bằng 0 trong một số Monoid).
Bằng cách sử dụng Nhẫn, chúng ta có thể thực hiện phép nhân ma trận đối với những thứ khác ngoài số (mà đôi khi chúng ta đã thực hiện).
Bản thân dự án aloltird (cũng như lịch sử vấn đề) giải thích khá rõ ràng những gì đang diễn ra ở đây: chúng tôi đang xây dựng rất nhiều thuật toán để tổng hợp các tập dữ liệu lớn và tận dụng cấu trúc của các hoạt động giúp chúng tôi giành chiến thắng về phía hệ thống (thường là điểm đau khi cố gắng sản xuất thuật toán trên 1000 nút).
Giải quyết các vấn đề hệ thống một lần cho bất kỳ Semigroup / Monoid / Group / Ring, và sau đó bạn có thể cắm bất kỳ thuật toán nào mà không phải suy nghĩ về Memcache, Hadoop, Storm, v.v.
Làm thế nào là Bloom filters
/ hyperloglog
/ countminsketch
thích số?
Làm thế nào mà tập hợp cơ sở dữ liệu có cấu trúc đơn hình?
Monoid này trông như thế nào? Họ có bao giờ có cấu trúc nhóm?
Tài liệu tham khảo văn học sẽ hữu ích.