bigtable最初是谷歌設計用來儲存大規模結構化資料的分布式系統,其可以在數以千計的商用伺服器上儲存高達pb級別的資料量。開源社群根據bigtable的設計思路開發了hbase。其優勢在於提供了高效的隨機讀寫,缺陷在於不(原生)支援類sql的資料分析。
bigtable的設計目標是:適應性廣泛,可擴充套件,高效能和高可用。bigtable將資料看作是一串無編碼的字串,由客戶端負責對資料「編譯碼」,也就是說,對於bigtable而言,資料是沒有格式的,用資料庫的術語即是,資料沒有schema,使用者需要自行定義schema。本文是google的bigtable**的總結。
bigtable「集群」(cluster
)是一組執行著bitable軟體的程序,每乙個集群都負責一組表(tables
),bigtable中每乙個table
都是乙個稀疏的,分布式的,持久化儲存的多維度已排序的map。每一條記錄都以三個維度組織:行,列和時間戳(timestamps
)。map格式:(row:string,column:string,time:int64)->string
。稱行,列和時間戳指定的資料為cell
。乙個典型的bigtable中表的例子:
1.row
2.columns
3.timestamps
bigtable包含三個主要部分:乙個能夠連線到每乙個客戶端的庫,乙個master伺服器和許多tablet伺服器。tablet伺服器應該能夠使用工作流而動態增刪。
tablet位置
tablet分配
tablet serving
壓縮當乙個memtable的大小達到乙個臨界值,其就會被轉化為sstable並且寫入gfs中,同時另乙個新的memtable會建立並替換。當乙個檔案被寫入時,gfs會試圖在writer所在機器放置乙個該檔案的副本,當gfs中乙個檔案被讀取時,gfs將試圖讀取乙個最靠近reader的有效副本。以此提高讀寫速度。
ref:bigtable: a distributed storage system for structured data
結構化資料 半結構化資料 非結構化資料
結構化資料 即行資料,儲存在資料庫裡,可以用二維表結構來邏輯表達實現的資料 所謂半結構化資料,就是介於完全結構化資料 如關係型資料庫 物件導向資料庫中的資料 和完全無結構的資料 如聲音 影象檔案等 之間的資料,html文件就屬於半結構化資料。它一般是自描述的,資料的結構和內容混在一起,沒有明顯的區分...
結構化資料,非結構化資料,半結構化資料的區別
1.結構化資料 先有結構,再有資料 是指由二維表結構來邏輯表達和實現的資料,嚴格地遵循資料格式與長度規範,主要通過關係型資料庫進行儲存和管理。也稱作行資料,一般特點是 資料以行為單位,一行資料表示乙個實體的資訊,每一行資料的屬性是相同的。2.非結構化資料 先有資料,再有結構 半結構化資料,是結構化資...
結構化資料 半結構化資料和非結構化資料
本文 在實際應用中,我們會遇到各式各樣的資料庫如nosql非關聯式資料庫 memcached,redis,mangodb rdbms關聯式資料庫 oracle,mysql等 還有一些其它的資料庫如hbase,在這些資料庫中,又會出現結構化資料,非結構化資料,半結構化資料,下面列出各種資料型別 結構化...