2014-02-18 54 views
1

我一直在考慮Cassandra文檔和YouTube上的視頻幾個星期了。卡桑德拉數據模型相關應用

我正在實施一個日誌存儲和關聯繫統,我想用Cassandra來做這件事。儘管如此,我似乎無法圍繞這種類型的應用程序的Cassandra數據模型進行研究。我無法找到這種類型的應用程序的最佳數據模型的深度示例。

日誌記錄系統圍繞HTTP網絡流量。我的日誌源將及時擴展,但現在它們將包括代理日誌,應用程序日誌以及其他一些包含主機名/ IP和事件數據的系統日誌。

我的關聯將圍繞源和目標IP地址以及主機名,域名,geoip-location,http方法(GET/PUT/Connect)以及圍繞請求的文件類型的其他一些可能的相關性(例如, jar .exe .pdf)。在所有這些情況下,時間上的相關性也很重要。

我讀過許多地方的數據建模的Cassandra開始思考你將運行的查詢。所以我在這裏指定了幾個例子。有更多的例子,但以下將是一個好的開始,任何查詢都將遵循類似的相關模式。

實例查詢1: 告訴我在哪裏IP 10.0.0.1已在日誌中看到了與過去24小時內的URL .jar擴展或過去的一週

實例查詢2: 告訴我所有的PUT請求去域xyz.com在過去24小時

實例查詢3: 顯示我從time01源主機192.168.1.1的所有日誌事件通過time02

示例查詢4: 向我展示昨天發生的10.0.0.1和192.168.1.1之間的所有通信。

示例查詢5: 將所有新事件與現有域和IP列表進行比較,並向我顯示包含這些IP和域的任何新事件。

我可以根據需要提供更多細節。任何指導都會有用。

謝謝!

+0

我只是在尋找指針和指導下,我在我的最後一句說。即使只是鏈接到類似的項目或實施將是一個很大的幫助。 – user3324184

+0

對於每個查詢,找到您詢問的單個實體是什麼:這是您的分區鍵(主鍵中的第一列)。然後找出你的查詢在哪一列做一個切片(即:讀取相鄰行) - 這些是你的「在X和Y之間」或「在最後X」或類似內容。這些列必須是您的集羣密鑰(PKey的2+列)。最後,您需要將數據複製到您需要支持所有查詢的儘可能多的表中。 –

+0

就相關性和其他複雜的分析而言,您可能需要MapReduce,Cassandra本身無法有效解決此問題。 –

回答

0

對於查詢1,您可以將IP地址和文件類型作爲組合鍵和時間戳記作爲羣集列。這樣您可以查詢具有文件類型和時間戳範圍的IP。

對於查詢2,域和方法(put,get,...)作爲組合鍵,時間戳記作爲集羣列,您可能需要添加UUID或請求ID作爲集羣ID,以使您的複合主鍵唯一。

查詢3,IP作爲主鍵,時間戳聚類柱,+ UUID如果需要

查詢4,IPA和IPB作爲複合主鍵和時間戳作爲聚類柱。 在這種情況下,如果通信是定向的,則還需要存儲IPB和IPA。

查詢5,你必須這樣做在客戶端程序