天天看點

如何使用表格存儲控制台進行資料管理

摘要

表格存儲(TableStore)是建構在阿裡雲飛天分布式系統之上的 NoSQL 資料存儲服務,提供海量結構化資料的存儲和實時通路,資料讀寫是表格存儲産品化最重要的功能之一。

本文首先介紹了表格存儲原有的資料讀寫工具及不足之處,接着介紹了表格存儲的資料模型,然後對控制台的資料讀寫功能進行了詳盡的闡述,最後對控制台的資料讀寫功能進行了總結和展望。

背景

在建立資料表之後,使用者可以通過調用 RESTful API,使用針對主流語言的 SDK 工具包、指令行界面、用戶端工具等方式執行讀寫資料的操作。使用API或SDK方式,需要使用者根據業務場景進行代碼編寫,提高了使用者的使用門檻,降低了使用者的體驗。指令行工具和用戶端工具為駐雲開發,已經不再進行版本疊代,無法根據使用者的回報做出體驗和功能上的優化。而且,無論使用哪種方式,都會将控制台的執行個體/表等操作和資料讀寫割裂開來,使用者需要在控制台和資料讀寫工具之間來回的切換,大大降低了使用者的使用體驗。諸多問題的根源在于控制台上缺乏資料讀寫功能。

通過表格存儲官網

API文檔

,我們不難發現,表格存儲的資料讀寫包括有單行資料操作(GetRow、PutRow、UpdateRow、DeleteRow)和多行資料操作(GetRange、BatchGetRow、BatchWriteRow)。控制台的資料讀寫在這些API定義的基礎進行開發,旨在給使用者提供一體化的輕量級資料操作。

TableStore資料模型

表格存儲的資料模型概念包括表、行、主鍵和屬性,如下圖所示。

如何使用表格存儲控制台進行資料管理
  • 表是行的集合,行由 主鍵和屬性 組成。
  • 主鍵列和屬性列均由名稱和值組成。
  • 所有行都必須包含主鍵列,其主鍵列的數目和名稱必須相同。
  • 每行包含的屬性列的數目可以不固定,名字和資料類型也可以不同。
  • 與主鍵列不同,每個屬性列可以包含多個版本,每個版本号(時間戳)對應一個列值。
說明:時間戳是從 1970-01-01 00:00:00 UTC 時間到目前寫入時間的毫秒數。

讀寫管理功能簡介

登陸官網控制台後,使用者可以通過資料表清單的資料管理操作來進入資料讀寫操作頁面。控制台的資料讀寫包含有資料插入、資料查詢、資料更新和資料删除四個部分,後文将對各個部分進行詳細介紹。

如何使用表格存儲控制台進行資料管理
如何使用表格存儲控制台進行資料管理

資料查詢

資料查詢包括單行查詢和範圍查詢,分别與API定義中的

GetRow

GetRange

相對應。當使用者進入資料管理頁時,控制台會進行一個預設的範圍查詢操作。範圍查詢結果包含主鍵列和屬性列,其中,主鍵列最多顯示四列(Table本身的限制), 屬性列最多顯示20列。對于查詢到的具體的值而言,由于單一主鍵列的列值大小上限為1KB,主鍵列顯示的是完整的資料。而屬性列的上限為2MB, 出于響應性能考慮,屬性列截取20個字元單元(漢字、字母都算一個字元單元)顯示。在屬性列中,我們也為使用者專門設計了多版本資料的展示,使用者隻要移動到屬性列資料下面,即會有懸浮視窗展示多版本資料。

技術注解:
  1. 屬性列最多顯示20列,20列主要是出于響應性能的考慮,屬性列顯示過多,會直接導緻傳輸的資料量增加。
  2. 屬性列最多顯示20列是指,對于查詢到的所有行的屬性列集合,依據屬性列的名稱選取字元序最小的前20列。
  3. 單行查詢時,不會做屬性列數的限制,傳回的屬性列數和GetRow接口傳回的保持一緻。
如何使用表格存儲控制台進行資料管理

在點選查詢資料按鈕後,使用者可以進行自定義的範圍查詢和單行查詢。在範圍查詢時,會提前填寫好一些預設值,使用者可以直接進行正序查詢,查詢完成後會最多顯示20行屬性列。單行查詢時,需要使用者添加要查詢的主鍵列,方可進行查詢,特别的,在查詢這塊功能,我們會主動幫使用者記錄上次查詢的一些記錄,以優化使用者的使用體驗。

如何使用表格存儲控制台進行資料管理

查詢功能包括以下一些功能點:

  • 自定義查詢屬性列

    範圍查詢會預設幫使用者顯示前20列,當然使用者也可以自定義所需查詢的屬性列, 如下圖所示,使用者可以便捷的進行屬性列的添加和删除操作。

如何使用表格存儲控制台進行資料管理
  • 自定義每頁顯示行數

    目前支援每頁顯示10條、20條和50條。

  • 自定義版本号範圍

    當指定最大版本号MaxVersion時,查詢後,會顯示版本數為1~ MaxVersion的屬性列資料。

當自定義版本号範圍[MinVersion, MaxVersion]時,會顯示版本數為MinVersion ~ MaxVersion的屬性列資料。

  • 正序逆序查詢(範圍查詢)
  • 自定義主鍵查詢範圍(範圍查詢)

    主鍵查詢支援最大值,最小值和自選輸入的選擇。表格存儲表中的行按主鍵進行從小到大排序,範圍查詢的讀取範圍是一個左閉右開的區間。操作會傳回主鍵屬于該區間的行資料,區間的起始點是有效的主鍵或者是由 INF_MIN 和 INF_MAX 類型組成的虛拟點,虛拟點的列數必須與主鍵相同。其中,INF_MIN 表示無限小,任何類型的值都比它大;INF_MAX 表示無限大,任何類型的值都比它小。更多關于主鍵排序的規則可以參見文章

    表格存儲資料模型和查詢操作
如何使用表格存儲控制台進行資料管理

在使用者填寫好所有的相關參數後,若查詢按鈕可用(代表參數格式都合法)後,使用者點選後,即可查詢到相應的資料。

資料插入

使用者在點選插入資料按鈕後,即可進行資料插入,資料插入對應到API定義中的

PutRow

操作。插入資料時,使用者需要填寫好需要插入的主鍵列,并點選添加屬性列按鈕進行屬性列的添加,目前屬性列支援Integer, String, Double和Boolean類型,Binary類型的支援将在後續的版本疊代中更新。對于資料版本而言,支援使用者自定義版本号和使用伺服器端系統時間兩種,使用者自定義版本号需要在合理的範圍内。為了友善使用者便捷的進行屬性列的更新,我們提供有單行屬性列的添加和删除,移除所有屬性列(若存在需要添加的屬性列時)。

特别說明:
  1. 寫入資料所有屬性列的版本号與寫入時時間的內插補點需要在資料有效版本偏差範圍之内,否則将會寫入失敗。
如何使用表格存儲控制台進行資料管理

當使用者填寫好所需插入的資訊後,點選确定插入按鈕,若插入成功,會在右上角提示插入成功,并會立刻在資料表格中顯示剛插入的行。為了優化使用者的使用體驗,我們會主動幫使用者記錄上一次執行資料插入的相關主鍵列和屬性列清單,這樣就能更快的完成插入資料操作。

如何使用表格存儲控制台進行資料管理

資料更新

使用者剛進入資料管理頁面時,更新資料按鈕為不可用狀态,使用者在勾選中某一行資料後,更新按鈕将會變得可用。點選更新資料按鈕後,即可進行目前行的資料更新, 資料更新與API定義中的

UpdateRow

相對應。

如何使用表格存儲控制台進行資料管理

在資料更新時,我們會為使用者預先加載選中行的所有屬性列,為了友善使用者便捷的進行屬性列的更新,我們同樣提供有單行屬性列的添加和删除,移除所有屬性列。對于單個屬性列的更新操作,更新類型包括PUT(語意為如果該列不存在,則新增一列;如果該列存在,則覆寫該列), DELETE(語意為删除該列特定版本的資料)和DELETE_ALL(語意為删除該列所有版本的資料)。特别的,在DELETE更新類型時,我們還會預先幫使用者加載目前屬性列所有的版本号以供使用者選擇。而對于屬性列類型而言,目前支援Integer, String, Double和Boolean。

  1. 預先加載的屬性列為前端顯示的屬性列,并不會再往後端發送新的GetRow請求。
    如何使用表格存儲控制台進行資料管理

當使用者填寫好所需更新的資訊後,點選确定更新按鈕,若插入成功,會在右上角提示更新成功,并會立刻在資料表格中顯示剛插入的行。

資料删除

使用者剛進入資料管理頁面時,删除資料按鈕為不可用狀态,使用者在勾選中大于一行資料後,删除按鈕将會變得可用。删除資料使用了API定義的

BatchWriteRow

, BatchWriteRow 操作可視為多個 PutRow、UpdateRow、DeleteRow 操作的集合。各個操作獨立執行,獨立傳回結果,獨立計算服務能力單元。與執行大量的單行寫操作相比,使用 BatchWriteRow 操作可以有效減少請求的響應時間,提高資料的寫入速率。

如何使用表格存儲控制台進行資料管理

使用者在點選确定删除按鈕後,若批量删除成功,會在右上角提示删除成功,并會立刻進行一次預設的範圍查詢操作,并顯示在資料表格中。

總結

本文在分析表格存儲原有資料讀寫工具不足之處的基礎上,引入了控制台資料讀寫功能的介紹, 并對資料讀寫功能的詳細功能進行了闡述。使用控制台的資料讀寫功能,使用者可以很容易的對資料進行輕量級的讀寫操作,但是從整體上來看,控制台讀寫仍存在一些不足之處。從功能上看,不支援Binary類型的資料讀寫操作,不支援過濾器和條件更新等進階操作,從體驗上看,出于響應性能考慮做了一些限制,比如行列數限制,屬性列截取等,有可能會造成查詢不到預期的資料。我們也将在未來的版本疊代中,對資料讀寫進行功能上的完善和體驗上的優化。

更多的應用場景和技術探讨,歡迎加入我們的釘釘交流群(群号:11789671)。

如何使用表格存儲控制台進行資料管理