我目前擁有一個處理大量交易的MySQL數據庫。爲了簡單起見,這是一個實時進行的操作(點擊和其他事件)的數據流。結構是這樣的,用戶屬於子分支機構和分支機構屬於分支機構。實時餘額更新的大批量交易的最佳實踐
我需要保持點擊的平衡。爲了簡單起見,假設我需要將用戶,子關聯公司和關聯公司的點擊餘額增加1(實際上有更多的處理取決於事件)。目前我很簡單地做到這一點 - 一旦我收到事件,我會在PHP中進行順序查詢 - 我讀取用戶的餘額,遞增1並存儲新值,然後我讀取子子公司的餘額,增量和寫入等等。
用戶的餘額對我來說是最重要的指標,所以我想盡可能保持實時。其他關於sub-aff和affiliate等級的指標並不重要,但它們越接近實時越好,但是我認爲5分鐘的延遲可能沒問題。
隨着項目的發展,它已經成爲一個瓶頸,我現在正在尋找替代品 - 如何重新設計天平的計算。我想確保新設計能夠每天處理5000萬個事件。對我來說,不要丟失一個事件也很重要,而且我實際上將每個更改週期都包裝在SQL事務中的點擊餘額上。
有些事情我考慮:
1 - 創建一個cron作業,將更新的子子公司和附屬水平不實時餘額,假設每5分鐘。
2 - 使用存儲過程將數字計算和平衡更新移動到數據庫本身。我正在考慮添加一個單獨的數據庫,也許Postgress會更適合這份工作?我試圖看看是否有嚴重的性能改善,但互聯網似乎在話題上存在分歧。
3 - 將這個特定的數據流移動到類似hadoop和parquet(或Apache Kudu?)之類的東西,並在需要時添加更多的服務器。
4 - 分割現有的數據庫,基本上爲每個分支機構添加一個單獨的數據庫服務器。
這種類型的任務是否存在一些最佳實踐/技術或者我可以做的一些明顯的事情?任何幫助真的很感激!