閱讀76 返回首頁    go 汽車大全


GetRange__API 概覽_API 參考_表格存儲-阿裏雲

行為:

讀取指定主鍵範圍內的數據。

請求結構:

  1. message GetRangeRequest {
  2. required string table_name = 1;
  3. required Direction direction = 2;
  4. repeated string columns_to_get = 3;
  5. optional int32 limit = 4;
  6. repeated Column inclusive_start_primary_key = 5;
  7. repeated Column exclusive_end_primary_key = 6;
  8. optional ColumnCondition filter = 7;
  9. }

table_name:

  • 類型:string。

  • 是否必要參數:是。

  • 要讀取的數據所在的表名。

direction:

  • 類型:Direction

  • 是否必要參數:是。

  • 本次查詢的順序。若為正序,則 inclusive_start_primary 應小於 exclusive_end_primary,響應中各行按照主鍵由小到大的順序進行排列;若為逆序,則 inclusive_start_primary 應大於 exclusive_end_primary,響應中各行按照主鍵由大到小的順序進行排列。

columns_to_get:

  • 類型:repeated string。

  • 是否必要參數:否。

  • 需要返回的全部列的列名。若為空,則返回讀取結果中每行的所有列。

  • 如果給出了重複的列名,返回結果隻會包含一次該列。

  • columns_to_get 中 string 的個數不應超過 128 個。

limit:

  • 類型:int32。

  • 是否必要參數:否。

  • 本次讀取最多返回的行數,若查詢到的行數超過此值,則通過響應中包含的斷點記錄本次讀取到的位置,以便下一次讀取。此值必須大於 0。

  • 無論是否設置此值,表格存儲最多返回行數為 5000 且總數據大小不超過 1 M 。

inclusive_start_primary_key:

  • 類型: repeated Column

  • 是否必要參數: 是。

  • 本次範圍讀取的起始主鍵,若該行存在,則響應中一定會包含此行。

exclusive_end_primary_key:

  • 類型:repeated Column

  • 是否必要參數:是。

  • 本次範圍讀取的終止主鍵,無論該行是否存在,響應中都不會包含此行。

  • 在 GetRange 中,inclusive_start_primary_key 和 exclusive_end_primary_key 中的 Column 的 type 可以使用本操作專用的兩個類型 INF_MIN 和 INF_MAX。類型為 INF_MIN 的 Column 永遠小於其它 Column;類型為 INF_MAX 的 Column 永遠大於其它 Column。

filter:

  • 類型:ColumnCondition

  • 是否必要參數:否。

  • 過濾條件表達式。

響應消息結構:

  1. message GetRangeResponse {
  2. required ConsumedCapacity consumed = 1;
  3. repeated Column next_start_primary_key = 2;
  4. repeated Row rows = 3;
  5. }

consumed:

next_start_primary_key:

  • 類型:repeated Column

  • 本次 GetRange 操作的斷點信息。

  • 若為空,則本次 GetRange 的響應消息中已包含了請求範圍內的所有數據。

  • 若不為空,則表示本次 GetRange 的響應消息中隻包含了 [inclusive_start_primary_key, next_start_primary_key) 間的數據,若需要剩下的數據,需要將 next_start_primary_key 作為 inclusive_start_primary_key,原始請求中的 exclusive_end_primary_key 作為 exclusive_end_primary_key 繼續執行 GetRange 操作。

注意:表格存儲係統中限製了 GetRange 操作的響應消息中數據不超過 5000 行,大小不超過 4 M,並且返回的數據量不超過當前剩餘的預留讀吞吐量。即使在 GetRange 請求中未設定 limit,在響應中仍可能出現 next_start_primary_key。因此在使用 GetRange 時一定要對響應中是否有 next_start_primary_key 進行處理。

rows:

  • 類型:repeated Row

  • 讀取到的所有數據,若請求中 direction 為 FORWARD,則所有行按照主鍵由小到大進行排序;若請求中 direction 為 BACKWARD,則所有行按照主鍵由大到小進行排序。

  • 其中每行的 primary_key_columns 和 attribute_columns 均隻包含在 columns_to_get 中指定的列,其順序不保證與 request 中的 columns_to_get 一致;primary_key_columns 的順序亦不保證與建表時指定的順序一致。

  • 如果請求中指定的 columns_to_get 不含有任何主鍵列,那麼其主鍵在查詢範圍內。但沒有任何一個屬性列在 columns_to_get 中的行將不會出現在響應消息裏。

服務能力單元消耗:

  • GetRange 操作消耗讀服務能力單元的數值為查詢範圍內所有行主鍵數據大小與實際讀取的屬性列數據大小之和除以 4 KB 向上取整。關於數據大小的計算請參見購買指導

  • 如果請求超時,結果未定義,服務能力單元有可能被消耗,也可能未被消耗。

  • 如果返回內部錯誤(HTTP 狀態碼:5XX),則此次操作不消耗服務能力單元,其他錯誤情況消耗 1 個讀服務能力單元。

請求示例:

  1. GetRangeRequest {
  2. table_name: "consume_history"
  3. direction: FORWARD
  4. columns_to_get: "CardID"
  5. columns_to_get: "SellerID"
  6. columns_to_get: "DeviceID"
  7. columns_to_get: "OrderNumber"
  8. columns_to_get: "Amount"
  9. columns_to_get: "Remarks"
  10. limit: 2
  11. inclusive_start_primary_key {
  12. name: "CardID"
  13. value {
  14. type: STRING
  15. v_string: "2007035023"
  16. }
  17. }
  18. inclusive_start_primary_key {
  19. name: "SellerID"
  20. value {
  21. type: INF_MIN
  22. }
  23. }
  24. inclusive_start_primary_key {
  25. name: "DeviceID"
  26. value {
  27. type: INF_MIN
  28. }
  29. }
  30. inclusive_start_primary_key {
  31. name: "OrderNumber"
  32. value {
  33. type: INF_MIN
  34. }
  35. }
  36. exclusive_end_primary_key {
  37. name: "CardID"
  38. value {
  39. type: STRING
  40. v_string: "2007035023"
  41. }
  42. }
  43. exclusive_end_primary_key {
  44. name: "SellerID"
  45. value {
  46. type: INF_MIN
  47. }
  48. }
  49. exclusive_end_primary_key {
  50. name: "DeviceID"
  51. value {
  52. type: INF_MIN
  53. }
  54. }
  55. exclusive_end_primary_key {
  56. name: "OrderNumber"
  57. value {
  58. type: INF_MIN
  59. }
  60. }
  61. }

響應示例:

  1. consumed {
  2. capacity_unit {
  3. read: 1
  4. }
  5. }
  6. next_start_primary_key {
  7. name: "CardID"
  8. value {
  9. type: STRING
  10. v_string: "2007035023"
  11. }
  12. }
  13. next_start_primary_key {
  14. name: "SellerID"
  15. value {
  16. type: STRING
  17. v_string: "00026"
  18. }
  19. }
  20. next_start_primary_key {
  21. name: "DeviceID"
  22. value {
  23. type: STRING
  24. v_string: "065499"
  25. }
  26. }
  27. next_start_primary_key {
  28. name: "OrderNumber"
  29. value {
  30. type: INTEGER
  31. v_int: 166666
  32. }
  33. }
  34. rows {
  35. primary_key_columns {
  36. name: "CardID"
  37. value {
  38. type: STRING
  39. v_string: "2007035023"
  40. }
  41. }
  42. primary_key_columns {
  43. name: "SellerID"
  44. value {
  45. type: STRING
  46. v_string: "00022"
  47. }
  48. }
  49. primary_key_columns {
  50. name: "DeviceID"
  51. value {
  52. type: STRING
  53. v_string: "061104"
  54. }
  55. }
  56. primary_key_columns {
  57. name: "OrderNumber"
  58. value {
  59. type: INTEGER
  60. v_int: 142857
  61. }
  62. }
  63. attribute_columns {
  64. name: "Amount"
  65. value {
  66. type: DOUBLE
  67. v_double: 2.5
  68. }
  69. }
  70. attribute_columns {
  71. name: "Remarks"
  72. value {
  73. type: STRING
  74. v_string: "ice cream"
  75. }
  76. }
  77. }
  78. rows {
  79. primary_key_columns {
  80. name: "CardID"
  81. value {
  82. type: STRING
  83. v_string: "2007035023"
  84. }
  85. }
  86. primary_key_columns {
  87. name: "SellerID"
  88. value {
  89. type: STRING
  90. v_string: "00026"
  91. }
  92. }
  93. primary_key_columns {
  94. name: "DeviceID"
  95. value {
  96. type: STRING
  97. v_string: "065499"
  98. }
  99. }
  100. primary_key_columns {
  101. name: "OrderNumber"
  102. value {
  103. type: INTEGER
  104. v_int: 153846
  105. }
  106. }
  107. attribute_columns {
  108. name: "Amount"
  109. value {
  110. type: DOUBLE
  111. v_double: 0.5
  112. }
  113. }
  114. }

最後更新:2016-11-23 16:03:56

  上一篇:go DeleteRow__API 概覽_API 參考_表格存儲-阿裏雲
  下一篇:go BatchGetRow__API 概覽_API 參考_表格存儲-阿裏雲