通過命令列工具建立和管理二級索引,實現按屬性列快速查詢資料。
前提條件
建立二級索引
為資料表建立全域或本地二級索引。
create_index -t <tableName> -n <indexName> -i <indexType> --pk <primaryKeyName> --attr <definedColumn>
|
參數 |
必填 |
說明 |
|
-t,--table |
否 |
資料表名稱。已通過 |
|
-n,--name |
是 |
二級索引名稱。 |
|
-i,--index_type |
否 |
二級索引類型。取值:
|
|
-k,--pk |
是 |
索引表的索引列,為資料表主鍵和預定義列的組合,多列以逗號分隔。使用本地二級索引時,索引表的第一個主鍵列必須與資料表的第一個主鍵列相同。 |
|
-a,--attr |
是 |
索引表的屬性列,為資料表的預定義列的組合,多列以逗號分隔。 |
|
-b,--without_base_data |
否 |
構建二級索引時不包括資料表中的存量資料。預設包含存量資料。 |
樣本
-
為資料表 mytable 建立全域二級索引 index0(包含存量資料)。
create_index -t mytable -n index0 -i global --pk uid,pid -a name,col0 -
為資料表 mytable 建立全域二級索引 index1(不包含存量資料)。
create_index -t mytable -n index1 -i global --pk uid,pid -a name,col0 -b -
為資料表 mytable 建立本地二級索引 index2。
create_index -t mytable -n index2 -i local --pk uid,name -a col0,col1
使用索引表
選定索引表,後續的查詢和匯出操作在該表上執行。
use --wc -t <indexName>
|
參數 |
必填 |
說明 |
|
--wc |
否 |
表示操作的表為資料表或索引表。 |
|
-t,--table |
是 |
索引表名稱。 |
樣本
使用索引表 index0。
use -t index0
查看索引資訊
通過desc命令查看資料表及其二級索引資訊。
desc -t <tableName>
|
參數 |
必填 |
說明 |
|
-t,--table |
否 |
資料表或索引表名稱。已通過 |
|
-f,--print_format |
否 |
輸出格式。取值為 json(預設)或 table。 |
|
-o,--output |
否 |
輸出表資訊到本地 JSON 檔案。 |
樣本
-
查看當前表的資訊。
desc -
將表資訊儲存到本地檔案。
desc -o /tmp/describe_table_meta.json
讀取資料
根據主鍵讀取索引表中一行資料。
如果讀取的資料行不存在,則返回結果為空白。
get --pk '<pk_values>'
|
參數 |
必填 |
說明 |
|
-k,--pk |
是 |
索引表主鍵的值,以 JSON 數組表示。設定的主鍵個數和類型必須和索引表的主鍵個數和類型一致。 |
|
-c,--columns |
否 |
讀取的列集合,列名可以是主鍵列或屬性列,多列以逗號分隔。不設定則返回整行資料。 |
|
--max_version |
否 |
最多讀取的版本數。 |
|
--time_range_start |
否 |
讀取版本號碼範圍內的資料。time_range_start 和 time_range_end 分別表示起始時間戳記和結束時間戳記,範圍為左閉右開區間。 |
|
--time_range_end |
否 |
|
|
--time_range_specific |
否 |
讀取特定版本號碼的資料。 |
|
-o,--output |
否 |
輸出查詢結果到本地 JSON 檔案。 |
樣本
讀取索引表中主索引值為 "86" 和 6771 的行資料。
get --pk '["86", 6771]'
掃描資料
掃描擷取索引表中所有資料或指定行數的資料。
scan --limit <n>
|
參數 |
必填 |
說明 |
|
--limit |
否 |
本次掃描返回的最大行數。不設定則掃描整表所有資料。 |
樣本
掃描擷取索引表中最多 10 行資料。
scan --limit 10
匯出資料
匯出索引表中的資料到本地 JSON 檔案。
scan -o /localpath/filename.json
|
參數 |
必填 |
說明 |
|
-c,--columns |
否 |
匯出的列集合,列名可以是主鍵列或屬性列,多列以逗號分隔。不設定則匯出整行資料。 |
|
--max_version |
否 |
最多匯出的版本數。 |
|
--time_range_start |
否 |
匯出版本號碼範圍內的資料。time_range_start 和 time_range_end 分別表示起始時間戳記和結束時間戳記,範圍為左閉右開區間。 |
|
--time_range_end |
否 |
|
|
--time_range_specific |
否 |
匯出特定版本號碼的資料。 |
|
--backward |
否 |
匯出資料按照主鍵降序排列。 |
|
-o,--output |
是 |
匯出資料到指定的本地檔案路徑。 |
|
-l,--limit |
否 |
本次匯出最多返回的行數。 |
|
-b,--begin |
否 |
匯出範圍的起始點和結束點,主鍵範圍為左閉右開區間。 說明
|
|
-e,--end |
否 |
樣本
-
匯出索引表中全部資料到本地檔案。
scan -o /tmp/mydata.json -
匯出 uid 和 name 列的資料。
scan -o /tmp/mydata.json -c uid,name -
匯出指定主鍵範圍內的資料。
scan -o /tmp/mydata.json -b '["86", 6771]' -e '["86", 6775]'
刪除二級索引
刪除不需要的索引表。
drop_index -t <tableName> -i <indexName> -y
|
參數 |
必填 |
說明 |
|
-t,--table |
否 |
資料表名稱。已通過 |
|
-i,--index |
是 |
二級索引名稱。 |
|
-y,--yes |
是 |
確認刪除。命令中必須帶有此參數。 |
樣本
-
刪除當前資料表的索引表 index0。
drop_index -i index0 -y -
刪除資料表 mytable 的索引表 index0。
drop_index -t mytable -i index0 -y