Mysql
NoSQL 或 MySQL 用於儲存 API 使用情況
我需要能夠跟踪 API 使用情況,以便以後生成報告或圖表。我一直在努力決定是使用正常 MySQL 還是使用我根本沒有任何經驗的 MongoDB 或 Elastic Search 之類的東西。
我將插入的記錄將是
user_id (int) request_time (datetime) ip_address(varchar)
- 我需要在給定時間計算每個 user_id 的總記錄數
- 我需要在給定時間從 user_id 獲取所有 ip
- 我每天將插入大約 40 萬條記錄
- 我需要確保這將能夠每天處理至少 100 萬條插入記錄
插入被發送到隊列伺服器(Redis),該伺服器將對我們決定使用的任何系統進行單次插入。
您認為這種情況的最佳解決方案是什麼?值得一提的是,我們正在努力尋找成本最低的方法來做到這一點。
更新:使用 bigint 進行 Ips 的一百萬條記錄大約需要 45mb,每月總共需要 1350mb
兩件事情。
- 使用您已經知道的工具。這簡化了開發,並減少了過早優化的願望。
- 使您的環境符合要求。每天儲存 400,000 x 10 字節行所需的硬體與 400,000 x 10,000 字節行有很大不同。
通過在 MySQL 中模擬一些範例數據以及您將執行的查詢範例來定義您的需求。查看此範例佔用了多少空間,並通過數學計算確定 1 個月、一年等對數據的要求。這將使您更好地了解所需的硬體類型。
我的回答談到了在 SQL Server 中儲存數十億行的要求,並說明了一些需要考慮的事項。關於這個問題的其他答案也很有啟發性。正如我在回答中指出的那樣,不要將 IP 地址儲存為 varchar。使用整數。