rowkey類似於主鍵,可以唯一的標識一行記錄;
由於資料按照rowkey的字典序(byte order)排序儲存,因此hbase中的資料永遠都是有序的。
rowkey可以由使用者自己指定,只要保證這個字串不重複就可以了。
不可以!會被覆蓋
hbase
(main)
:006:0
> put 'csdn:emp'
,'rk0001'
,'base_info:name'
,'smith'
hbase
(main)
:007:0
> scan 'csdn:emp'
row column+cell
rk0001 column=base_info:name, timestamp=
1606653810373
, value=smith
1row
(s) in 0.0270 seconds
hbase
(main)
:008:0
> put 'csdn:emp'
,'rk0001'
,'base_info:name'
,'abc'
hbase
(main)
:009:0
> scan 'csdn:emp'
row column+cell
rk0001 column=base_info:name, timestamp=
1606653820715
, value=abc
hbase 中的行按行鍵按字典排序。此設計優化掃瞄,允許您將相關行或將一起讀取的行彼此儲存。但是,設計不佳的rowkey是熱點的乙個常見**。當大量客戶端流量定向到群集的乙個節點或只有幾個節點時,將發生熱點。此流量可能表示讀取、寫入或其他操作。流量使負責託管該區域的單台計算機變得擁擠,導致效能下降,並可能導致區域不可用。這也可能對同一區域伺服器託管的其他區域產生負面影響,因為該主機無法為請求的負載提供服務。設計資料訪問模式,以便群集得到充分利用和均勻地利用,這一點非常重要。
為了防止在寫入時出現熱點,請設計行鍵,使真正需要位於同一區域的行是,但從大局看,資料將寫入群集中的多個區域,而不是一次寫入乙個區域.
鹽。從這個意義上說,鹽化與加密有關,但是指將隨機資料新增到行鍵的開始。在這種情況下,鹽化是指向行鍵新增隨機分配的字首,以導致其排序方式與排序方式不同。可能的字首數對應於要將資料跨傳播的區域數。如果您有一些"熱"行鍵模式,這些模式在其他分布更均勻的行中一遍又一遍出現,則鹽分非常有用。考慮下面的示例,該示例顯示鹽分可以跨多個區域伺服器分布寫入負載,並說明了讀取的一些負面影響。
舉個例子
假設您有以下行鍵列表,並且表被拆分,以便字母表的每個字母都有乙個區域。
字首 'a' 是乙個區域,字首 'b' 是另乙個區域。在此表中,以"f"為起點的所有行都在同一區域中。
此示例重點介紹具有如下鍵的行:
foo0001
foo0002
foo0003
foo0004
現在,假設您希望將這些傳播到四個不同的區域。您決定使用四種不同的鹽:、、和 。在這種情況下,這些字母字首將在不同的區域上。應用鹽後,您有以下的行鍵代替。由於現在可以寫入四個單獨的區域,因此理論上,如果所有寫入都寫入到同一區域,則寫入時吞吐量是四倍。abcd
a-foo0003
b-foo0001
c-foo0004
d-foo0002
然後,如果新增另一行,將隨機分配四個可能的鹽值之一,最後接近現有行之一。
a-foo0003
b-foo0001
c-foo0003
c-foo0004
d-foo0002
由於此賦值是隨機的,因此如果要檢索字典順序中的行,則需要執行更多工作。這樣,鹽鹽嘗試增加寫入時吞吐量,但在讀取過程中具有成本。
雜湊。您可以使用單向雜湊,而不是隨機賦值,該雜湊會導致給定行始終使用相同的字首"salted",這樣,載入將分散到區域伺服器,但允許在讀取過程中具有可**性。使用確定性雜湊允許客戶端重建完整的行鍵,並使用 get 操作以正常方式檢索該行。
反轉金鑰。防止熱點的第三個常見技巧是反轉固定寬度或數字行鍵,以便更改最頻繁(最小有效數字)的部分是第乙個。這有效地隨機化了行鍵,但犧牲了行排序屬性。
需求設計入門
我正式參加的第乙個專案是移動渠道運營,由於公司人手不夠,老大將渠道資源的大模組交給我乙個人來負責,由於之前的詳細設計極為粗略,庫表設計也沒有,所以一切就得自己來搞定了。開發過程中與客戶進行過2次粗略的互動,可由於我是新手,對移動業務很是不熟悉,他們的需求我難以全部消化。兩個月後一期開發完畢,昨天在現...
RESTful API 設計入門
前後端對接其實主要是面向 api 文件開發,而 api 的設計中,有一種 restful api 的設計,具有規範,從某一種角度,我覺得 restful api 可以很好的把後端 api 從繁雜的業務中抽象出來,更好地進行管理和編寫,同時也具有良好的可讀性。對於一些現代化的 mvc 框架,在腳手架階...
WSDL檔案設計入門
在 wsdl 中,服務被定義為三個截然不同的部分 服務的位址,組成,繫結 在 wsdl 中,服務被定義為三個截然不同的部分 port port 定義了可用服務的實際位置 端點 例如,soap 服務所在的 http url。porttype 功能 服務的組成 porttype定義了由服務提供的抽象介面...