TableStore 的注意事項

2021-09-13 13:41:16 字數 1579 閱讀 4508

公司使用阿里的 tablestore(以下簡稱 ts) 已經有些日子了。這周仔細翻閱了一下 tablestore 的官方文件。現對 tablestore 做一些總結。

我們先來了解一下什麼是 tablestore。**儲存(table store)是阿里雲自研的 nosql 多模型資料庫,提供海量結構化資料儲存以及快速的查詢和分析服務。**儲存的分布式儲存和強大的索引引擎能夠提供 pb 級儲存、千萬 tps 以及毫秒級延遲的服務能力。

接下來我們來看看 ts 給我們提供了一些什麼樣的功能,以及這些功能對應的一些限制。

我們首先來看看日常操作(增刪改查)。對於日常操作,官方提供了單行操作和多行操作(批量操作)。對於批量操作,官方可能出於安全或者技術上的考慮,將很多操作都進行了數量的限制,這些限制會使得我們在編寫**時變得麻煩。

日常操作中需要注意的點如下:

1.更新和刪除的操作都只能根據主鍵列進行。也就是如果你要更新或者刪除某行資料,只能先查詢出該行資料的主鍵,然後再根據該行主鍵去更新或刪除。而無法直接通過某些組合的條件去做更新或刪除的操作。

2.範圍讀操作時,一次操作請求讀取的行數不能超過 5000 行(4 mb)。

3.批量讀操作時,一次操作請求讀取的行數不能超過 100 筆。

4.批量寫操作時,一次操作請求寫入行數不能超過 200 筆,資料大小不能超過 4 mb。同時,ts 無法保證批量操作一定都會執行成功,也就是如果 200 筆,有一筆失敗了,你需要自己對失敗的這筆資料進行處理。

5.在沒有索引的情況下,查詢表中資料的總行數是件非常麻煩的事情,需要使用範圍讀,自己去遍歷查詢。

接下來我們來看看 ts 提供的索引功能。ts 為我們提供了兩種索引,一種是二元索引,一種是多元索引。二元索引類似於 mysql 的索引,多元索引類似於 solr 的索引。

二元索引可以在指定列上建立索引,生成的索引表中資料按使用者指定的索引列進行排序,主表的每一筆寫入都將自動非同步同步到索引表。在很多場景下,我們需要對錶的屬性列、或者非首列主鍵進行條件上的查詢,這個時候就可以用到二元索引。

二元索引中需要注意的點如下:

1.查詢時,如果需要返回的屬性列不在索引表中,需要反查主表。相當於,我們需要對查詢出來的資料,再做遍歷,然後去主表中查詢。實際使用起來還是挺麻煩的。

2.ts 的索引中暫時沒有類似於 mysql 的唯一索引的概念,如果你希望某一字段的值全域性唯一,你只能將該字段設定為主鍵。

多元索引支援以下三種索引方法。1.倒排索引:基於建立了倒排索引的屬性列,可以實現多欄位自由組合的 ad-hoc 查詢。2.多維空間索引:**儲存基於多維空間索引提供了地理位置的查詢能力。3.列式正排索引:可以更好地支援排序、統計聚合等功能。

基於上述三種基礎索引能力,多元索引提供很多其他的索引功能。非主鍵列的查詢、多欄位自由組合查詢、地理位置查詢、排序等等,詳情請見官網。另外在 ts 的控制台,可以直接下查詢條件去測試這些索引的查詢方法。

關於查詢的功能,其實都挺好理解的,大家自己測試一下就可以知道大致的一些用法。這邊有個稍微需要提一下的是,建立多元索引時,可以選擇分詞字串,分詞字串又分為單字分詞和多層語義分詞。單字分詞,中文會按字拆分,英文會按照空格拆分;多層語義分詞會根據下劃線拆分。官網暫時沒有這兩個分詞規則的文件,是我自己測試後給出的定義,最終以官方文件為準。

參考文件:

java DOM 注意事項

1.w3c把標籤內的文字部分也定義成乙個node 2.element物件代表的是xml文件中的標籤元素 繼承於node,亦是node的最主要的子物件 3.attr實際上是包含在element中的,它並不能被看作是element的子物件,因而在dom中attr並不是dom樹的一部分,所以node中的 ...

static注意事項

static關鍵字是c,c 中都存在的關鍵字,它主要有三種使用方式,其中前兩種只指在c語言中使用,第三種在c 中使用 c,c 中具體細微操作不盡相同,本文以c 為準 1 區域性靜態變數 2 外部靜態變數 函式 3 靜態資料成員 成員函式 下面就這三種使用方式及注意事項分別說明 一 區域性靜態變數 在...

CSS注意事項

一 寬度 高度 對齊方式請別忘記他們 只要你時刻記得 div css 不變形的秘密你已經掌握了 90 也有對齊方式哦!一定要掌握當 對齊方式不同是 布局出現的問題!左右左 能不變形嗎?預設 是要換行的哦 div css的 居中對齊 是有條件的哦 所有當同級元素的對齊方式都為居中對齊的時候可以採用居中...