2012-10-18 20 views
1

哪種存儲大數據的方式對於快速搜索和報告使用會更有效?用於快速數據訪問和報告的mongodb文檔格式

{ website: "google.com", 
    description: "google is a search engine", 
    vistits: [ 
    {date: 1334565455, referrer: "http://bing.com"}, 
    {date: 1334565455, referrer: "http://bing.com"}, 
    {date: 1334565455, referrer: "http://bing.com"}, 
    {date: 1134565455, referrer: "http://bing.com"}, 
    {date: 1334542455, referrer: "http://bing.com"}, 
    {date: 1334555455, referrer: "http://bing.com"}, 
    {date: 1334575455, referrer: "http://bing.com"}, 
    {date: 1324565455, referrer: "http://bing.com"}, 
    {date: 1334565455, referrer: "http://bing.com"}, 
]} 

或者使用傳統的方式訪問將被存儲在單獨的表格中,而站點ID作爲參考?

回答

2

這取決於。如果您訪問某些網站的訪問次數很多,這些文檔的增長速度將非常快。最終,它們將會太大而無法加載。另一方面,如果您的報表工具始終需要加載所有訪問,則將它們拆分爲多個文檔會降低性能。

試着平衡兩個目標。例如,如果數組visits變得太大,則創建另一個文檔並將其文檔ID保存爲continuedIn。這樣,您可以限制每個文檔的大小,但仍然保留大量信息。

如果您的報表工具按天彙總,您還可以嘗試按天分組訪問(即一個文檔包含某一天的所有訪問)。這樣,文件可以增長,但它們不會永遠增長 - 只有一天。

最後,您可以在N次訪問後停止錄製(比如說100'000)。知道您是否有100001次或100015次訪問,有什麼意義?

注意:根據您的位置,如果您有每位訪問者的書面許可,長時間記錄IP地址和引用信息只是合法的。即使在你的國家是合法的,一些訪問者對追蹤他們的網站也很敏感。當然,他們不能做太多的事情。除了停止訪問你,配置他們的網頁瀏覽器停止與你的服務器交談或在博客和論壇發表負面評論。