Browse Source

fix: 增加tablestore更新表结构方法

Marko552 3 years ago
parent
commit
94cefcfd06

+ 15 - 25
abi-cloud-qr-platform-common/src/main/java/com/abi/task/common/tablestore/TableStoreUtils.java

@@ -7,31 +7,7 @@ import com.abi.task.common.api.exception.ErrorCodeEnum;
 import com.abi.task.common.tablestore.common.TableStoreReq;
 import com.abi.task.common.tablestore.common.TableStoreRes;
 import com.alicloud.openservices.tablestore.SyncClient;
-import com.alicloud.openservices.tablestore.model.BatchWriteRowRequest;
-import com.alicloud.openservices.tablestore.model.BatchWriteRowResponse;
-import com.alicloud.openservices.tablestore.model.CapacityUnit;
-import com.alicloud.openservices.tablestore.model.Column;
-import com.alicloud.openservices.tablestore.model.ColumnValue;
-import com.alicloud.openservices.tablestore.model.CreateTableRequest;
-import com.alicloud.openservices.tablestore.model.DeleteRowRequest;
-import com.alicloud.openservices.tablestore.model.GetRowRequest;
-import com.alicloud.openservices.tablestore.model.GetRowResponse;
-import com.alicloud.openservices.tablestore.model.ListTableResponse;
-import com.alicloud.openservices.tablestore.model.PrimaryKey;
-import com.alicloud.openservices.tablestore.model.PrimaryKeyBuilder;
-import com.alicloud.openservices.tablestore.model.PrimaryKeySchema;
-import com.alicloud.openservices.tablestore.model.PrimaryKeyType;
-import com.alicloud.openservices.tablestore.model.PrimaryKeyValue;
-import com.alicloud.openservices.tablestore.model.PutRowRequest;
-import com.alicloud.openservices.tablestore.model.ReservedThroughput;
-import com.alicloud.openservices.tablestore.model.Row;
-import com.alicloud.openservices.tablestore.model.RowDeleteChange;
-import com.alicloud.openservices.tablestore.model.RowPutChange;
-import com.alicloud.openservices.tablestore.model.RowUpdateChange;
-import com.alicloud.openservices.tablestore.model.SingleRowQueryCriteria;
-import com.alicloud.openservices.tablestore.model.TableMeta;
-import com.alicloud.openservices.tablestore.model.TableOptions;
-import com.alicloud.openservices.tablestore.model.UpdateRowRequest;
+import com.alicloud.openservices.tablestore.model.*;
 import com.alicloud.openservices.tablestore.model.search.SearchQuery;
 import com.alicloud.openservices.tablestore.model.search.SearchRequest;
 import com.alicloud.openservices.tablestore.model.search.SearchResponse;
@@ -401,4 +377,18 @@ public class TableStoreUtils {
         return rowPutChange;
     }
 
+    public UpdateTableResponse updateTable(int reservedThroughput, String tableName) {
+        UpdateTableRequest updateTableRequest = new UpdateTableRequest();
+        updateTableRequest.setTableName(tableName);
+        updateTableRequest.setStreamSpecification(new StreamSpecification(true,1));
+        ReservedThroughput throughput = new ReservedThroughput();
+        throughput.setCapacityUnit(new CapacityUnit(reservedThroughput,reservedThroughput));
+        updateTableRequest.setReservedThroughputForUpdate(throughput);
+        int timeToLive = -1;
+        //保存的最大版本数,1表示每列上最多保存一个版本即保存最新的版本。带索引表的数据表最大版本数必须设置为1。
+        int maxVersions = 1;
+        TableOptions tableOptions = new TableOptions(timeToLive, maxVersions);
+        updateTableRequest.setTableOptionsForUpdate(tableOptions);
+        return client().updateTable(updateTableRequest);
+    }
 }

+ 7 - 4
abi-cloud-qr-platform-server/src/test/java/com/abi/qms/platform/TableStoreTest.java

@@ -4,10 +4,7 @@ import cn.hutool.json.JSONUtil;
 import com.abi.task.common.tablestore.TableStoreUtils;
 import com.abi.task.common.tablestore.common.TableStoreReq;
 import com.abi.task.common.tablestore.common.TableStoreRes;
-import com.alicloud.openservices.tablestore.model.Column;
-import com.alicloud.openservices.tablestore.model.ColumnValue;
-import com.alicloud.openservices.tablestore.model.DeleteTableRequest;
-import com.alicloud.openservices.tablestore.model.Row;
+import com.alicloud.openservices.tablestore.model.*;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -98,4 +95,10 @@ public class TableStoreTest {
     }
 
 
+    @Test
+    public void updateTable(){
+        String tableName = "qr_code";
+        UpdateTableResponse response = tableStoreUtils.updateTable(100000,tableName);
+        log.info("更新表结构吞吐:{}",JSONUtil.toJsonStr(response));
+    }
 }