Google Analytics為什麼會這麼快

CSDN發表於2014-11-01

Google Analytics儲存了全球範圍內網站的大量靜態資料,隨著資料體積越來越大,檢索的難度也必然隨之增加。近日,Gen Furukaw在Dzone上撰文表示,Google Analytics的高效一定程度上歸功於其兼職儲存BigTable

在Google,隨時都可能存在大量應用程式被新增到其基礎設施,而這些應用程式中,任意一個都可能給系統帶來繁重的工作負載。迎合這樣的資源需求並不簡單,而在有限時間內做到這一點就更是難上加難了。

如果Google部署的是一個單節點上的傳統資料庫,那麼一旦達到容量限制,他們必須為其更新硬體。鑑於Google應用程式的數量和儲存資料的體積,這種硬體升級可能每天都會進行一次。雖然負載也可以分配到多個節點,但隨著節點數的增加,系統維護的難度將變得不可思議。

綜上所述,鑑於大規模系統升級和維護的難度,標準關係型資料庫對Google來說並不可選。

尋找一個可擴充套件解決方案

為了保證速度,及避免頻繁的更新硬體,Google定製了自己的儲存解決方案——BigTable。取代關係型資料庫將資料存放到表格中,BigTable使用了多維排序對映的方式對資料進行儲存,也就是現在我們所說的鍵值儲存型別。這種方式不僅提升了效能,也簡化了擴充套件過程。

關係型資料庫中的資訊儲存

關係型資料庫將資訊的每個部分都存放到獨立的位置,通常是表中的一列。同時,在關係型資料庫中,資料的規範化非常重要,這個過程保證了其他表格或者列中不會存在冗餘資料。

舉個例子,客戶的“姓”必須存放在某個表格的對應列中。如果某個客戶的姓在其他位置發現,那麼它將被刪除,資訊的檢索仍然會被指定到原始表格。

這種結構的缺點是資料庫內部可能變得非常複雜,從而導致即使一個簡單的查詢都可能涉及到大量的執行路徑,而所有這些路徑都會在執行時進行計算以尋找最優路徑。資料庫越複雜,執行時就需要越多的資源來確定查詢路徑。

鍵值儲存中的資訊儲存

在鍵值儲存中,資料被允許存在多個備份。取代使用其他昂貴硬體資源來增加速度,這裡的設計理念是利用磁碟空間,它更新起來非常容易,成本也不高。

對於簡單查詢來說,多備份非常有利,在鍵值儲存中,相關的資料可以被儲存到一起,從而避免在查詢過程中訪問多個路徑以獲得所需資料。

取代關係型資料中的表格儲存型別,鍵值儲存使用域,同時也無需預定義資料結構模式。域中儲存的資料通過鍵定義,它們可以通過大量不同的屬性訪問。

這些屬性可能是字串,也可以是流行程式語言中匹配的任意資料型別,它可能會是陣列、物件、整形、浮點型、布林型以及程式語言中使用的任意基本資料型別。

在鍵值儲存中,取代資料本身,資料完整性和邏輯通過應用程式程式碼維護,通過使用1個或多個API,開發者可以編寫出最優的實現方法。這樣一來,資料檢索工作被轉移到編寫正確的邏輯上,而不是依賴資料庫去優化在大量可能路徑中選擇一個最佳路徑。

寫在最後

當然,除了鍵值儲存的使用之外,Google Analytics快還源於其優秀的程式設計邏輯,這點就不再一一詳述了。

相關文章