簡體   English   中英

我應該使用鍵/值數據庫來存儲我的API日志嗎?

[英]Should I use a key/value database to store my API logs?

我從API中獲得了很多日志。 我分析這些日志以獲取有趣的信息,例如本月有多少用戶使用API​​或他們從事何種活動。

我所做的所有分析都取決於一個時期。 因此時間戳對我來說非常重要。

實際上,實際上我在時間戳上使用了索引。 問題是時間戳記還在繼續。

我的問題是哪個數據庫更適合我的用例?

我聽說過鍵/值數據庫,將時間戳用作鍵是否有趣?

謝謝。

這是來自IBM的兩年歷史文章,詳細討論了SQL實現,但是在執行NoSQL實現時也可能需要牢記:

  • “為什么當前時間戳會產生不良的主鍵”-https://www.ibm.com/developerworks/community/blogs/SQLTips4DB2LUW/entry/current_timestamp?lang =en

當然,您的應用程序會有所不同,我不確定您的時間戳的粒度,但是有可能在同一時間戳下同時記錄兩個項目。

您最好為鍵值存儲創建其他形式的唯一鍵算法,並為每個時間戳添加某種序列化。 因此,時間戳的第一項是“ .1”,第二項是“ .2”,依此類推。因此,您將具有某種timestamp.serialid格式。

我的另一個想法是:您要合並來自多個應用程序/進程或機器的API日志文件嗎? 您可能可以執行某種elementid.appid.timestamp.serialid來制作唯一密鑰。

這完全取決於您的用例,所以我不能肯定地說更多。 我還想知道您想在事后進行讀/分析方面如何使用鍵值存儲,因為這可能會極大地改變您的NoSQL解決方案。 如果您打算進行大量日志分析,那么,是的,有充分的理由將其放入NoSQL數據庫中,尤其是如果您想進行快速數據分析等操作,然后再將一些較舊的項目推回去放入磁盤進行存儲。

至於數據庫,顯然每個供應商都會堅持自己的產品。 但選擇適合該工作的最佳工具。 最好在購買前嘗試一下,然后針對特定設置進行測試。 我來自Aerospike,因此作為Key-Value商店,我顯然偏向於此: http ://www.aerospike.com/


今天與一個非常聰明的人進行了交談,他還建議您可能要使用諸如“從日期時間“ x”起的毫秒數”之類的主鍵。 根據您所記錄的內容,作為主鍵,仍然有可能發生沖突。

因此,另一個建議是采用該主鍵的所有條目(例如:該毫秒的所有日志條目),然后以一種“存儲桶”的形式將它們加載到同一記錄中。 您需要應用程序邏輯來解析同一主鍵下的多個日志條目,但這是給貓咪換膚的另一種方法。

暫無
暫無

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

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