簡體   English   中英

會計系統中使用情況信息的每月匯總

[英]Monthly aggregation of usage information in an accounting system

我正在一個會計系統中工作,該系統接收(通過隊列)有關可以創建(帶有類型),修改和銷毀的不同元素的使用事件。 我每個月可以有大約1000000個事件。

在月底,系統必須匯總信息以生成包含已使用給定元素多少次的報告。 我確定我也將需要執行每日匯總。

用一個例子更清楚。 這些是我收到的事件:

{event: "create", date: "2013/01/01", element_id: 1, element_type: "L"}
{event: "modify", date: "2013/02/05", element_id: 1, element_type: "XL"}
{event: "modify", date: "2013/02/07", element_id: 1, element_type: "L"}
{event: "destroy", date: "2013/02/08", element_id: 1}

這應該是“二月”的結果:

-- from 2013/02/01 to 2013/02/05 + 2013/02/07 to 2013/02/08
{element: "1", element_type: "L", units: "6 days" }
-- from 2013/02/05 to 2013/02/07
{element: "1", element_type: "XL", units: "2 days" }

我主要關心的是如何跟蹤以前間隔 (例如2年前)創建但仍未有效銷毀的元素

您是否知道可以解決此問題的任何算法? 我一直在考慮減少地圖的過程,但是我不確定它是否適合(按月過濾,跟蹤前幾個月創建的元素等)。 任何想法都歡迎。

我現在正在使用nodejs和mongodb來存儲事件(如果有幫助的話),但是如果可以帶來任何好處,我可以使用java和/或mysql。

謝謝。

解決問題的方法太多了,很難給您一個好的答案。 我將為您提供一些建議。

  1. 就像您已經提到過的那樣,構建一個mapreduce,或者,如果您的數據允許,甚至更好地使用新的聚合框架。 那是相當數量的數據,因此也許您需要更頻繁地匯總。
  2. 每天更頻繁地進行聚合,並將此數據存儲在新的集合或其他數據存儲中,並與您的日常調度聚合任務一起添加。 這樣,在月底,您就可以對月度數據進行一個簡單的查詢。
  3. Hadoop!

如果看起來#2對您來說是一條不錯的路線,則您可能希望研究使用星型架構來存儲您的日常聚合,並可能存儲在RDBMS中。 不僅可以使用它來構建工具,而且市場上有許多產品可以很好地與星型/雪花模式數據進行分析。

聽起來像是一個有趣的項目!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM