天天看點

資料庫必知詞彙:Bigtable

BigTable是Google設計的分布式資料存儲系統,用來處理海量的資料的一種非關系型的資料庫。BigTable是非關系型資料庫,是一個稀疏的、分布式的、持久化存儲的多元度排序Map。Bigtable的設計目的是快速且可靠地處理PB級别的資料,并且能夠部署到上千台機器上。

BigTable是一個分布式存儲系統,它可以支援擴充到很大尺寸的資料:PB級别的資料,包含幾千個商業伺服器。Google的許多項目都存儲在BigTable中,包括WEB索引、Google Earth 和Google Finance。這些應用對BigTable提出了截然不同的需求,無論是從資料量(從URL到網頁到衛星圖像)而言,還是從延遲需求(從後端批量處理到實時資料服務)而言。盡管這些不同的需求,BigTable已經為所有的Google産品提供了一個靈活的、高性能的解決方案。

在很多方面,Bigtable和資料庫很類似:它使用了很多資料庫的實作政策。Bigtable不是關系型資料庫,但是卻沿用了很多關系型資料庫的術語,像table(表)、row(行)、column(列)等。這容易讓讀者誤入歧途,将其與關系型資料庫的概念對應起來,進而難以了解。

本質上說,Bigtable是一個鍵值(key-value)映射。按作者的說法,Bigtable是一個稀疏的,分布式的,持久化的,多元的排序映射。并行資料庫和記憶體資料庫已經具備可擴充性和高性能,但是Bigtable提供了一個和這些系統完全不同的接口。Bigtable不支援完整的關系資料模型;與之相反,Bigtable為客戶提供了簡單的資料模型,利用這個模型,客戶可以動态控制資料的分布和格式,使用者也可以自己推測底層存儲資料的位置相關性。資料的下标是行和列的名字,名字可以是任意的字元串。

Bigtable将存儲的資料都視為字元串,但是Bigtable本身不去解析這些字元串,客戶程式通常會在把各種結構化或者半結構化的資料序列化到這些字元串裡。通過仔細選擇資料的模式,客戶可以控制資料的位置相關性。最後,可以通過BigTable的模式參數來控制資料是存放在記憶體中還是硬碟上。

資料來源:

Chang F , Dean J , Ghemawat S , et al. Bigtable: A Distributed Storage System for Structured Data[J]. ACM Transactions on Computer Systems, 2008, 26(2):1-26.

谷歌技術"三寶"之BigTable

https://blog.csdn.net/opennaive/article/details/7532589