日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Java SDK快速入門

通過表格存儲Java SDK使用表格存儲寬表模型或者時序模型時,您需要先創建表,然后寫入數據到表中以及讀取表中數據。本文介紹如何快速使用寬表模型和時序模型。

背景信息

表格存儲提供了寬表模型、時序模型、消息模型等多種數據模型,SDK參考文檔中主要介紹使用寬表模型和時序模型時的功能操作。

  • 使用寬表模型時,您需要先創建數據表,然后寫入數據到數據表以及讀取數據表中的數據。具體代碼示例請參見寬表模型示例

  • 使用時序模型時,您需要先創建時序表,然后寫入數據到時序表以及讀取時序表中的數據。具體代碼示例請參見時序模型示例

前提條件

  • 已初始化客戶端。具體操作,請參見初始化客戶端

  • 4.0.0以上版本SDK支持數據多版本和生命周期。創建數據表前請確認已了解數據多版本和生命周期,更多信息,請參見數據版本和生命周期

寬表模型示例

使用已初始化的Client調用表格存儲寬表模型的功能。以下介紹寬表模型的創建表、寫入數據和讀取數據的Java SDK代碼示例。

步驟一:創建數據表

以下示例用于在myinstance實例下創建一個數據表。該表中屬性列最多保存3個版本的數據,且數據永不過期。

說明

不同地域下實例的Endpoint取值不同,請以實際為準。關于如何獲取Endpoint的具體操作,請參見獲取實例Endpoint

import com.alicloud.openservices.tablestore.SyncClient;
import com.alicloud.openservices.tablestore.model.*;

public class CreateTable {
    public static void main(String[] args) {
        
        //創建并初始化客戶端。
        final String endPoint = "https://myinstance.cn-hangzhou.ots.aliyuncs.com";
        String accessKeyId = System.getenv("OTS_AK_ENV");
        String accessKeySecret = System.getenv("OTS_SK_ENV");
        final String instanceName = "myinstance";
        SyncClient client = new SyncClient(endPoint, accessKeyId, accessKeySecret, instanceName);
        
        //創建API請求并設置參數。
        //設置數據表名稱。
        TableMeta tableMeta = new TableMeta("<TABLE_NAME>");
        //為數據表添加主鍵列。
        tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("pk", PrimaryKeyType.STRING));
        //數據的過期時間,單位為秒,-1表示永不過期。帶索引表的數據表數據生命周期必須設置為-1。
        int timeToLive = -1;
        //保存的最大版本數,1表示每列上最多保存一個版本即保存最新的版本。帶索引表的數據表最大版本數必須設置為1。
        int maxVersions = 3;
        TableOptions tableOptions = new TableOptions(timeToLive, maxVersions);
        CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
        //設置預留讀寫吞吐量,容量型實例中的數據表只能設置為0,高性能實例中的數據表可以設置為非零值。
        request.setReservedThroughput(new ReservedThroughput(new CapacityUnit(0, 0)));
        
        //發起請求。
        client.createTable(request);
    }
}

步驟二:寫入數據

以下示例用于在數據表中寫入一行數據。該行數據包含10個屬性列,每個屬性列寫入3個版本數據。

import com.alicloud.openservices.tablestore.SyncClient;
import com.alicloud.openservices.tablestore.model.*;

public class PutRow {
    public static void main(String[] args) {
        
        //創建并初始化客戶端。
        final String endPoint = "https://myinstance.cn-hangzhou.ots.aliyuncs.com";
        String accessKeyId = System.getenv("OTS_AK_ENV");
        String accessKeySecret = System.getenv("OTS_SK_ENV");
        final String instanceName = "myinstance";
        SyncClient client = new SyncClient(endPoint, accessKeyId, accessKeySecret, instanceName);
        
        //創建API請求并設置參數。
        //構造主鍵。
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("pkvalue"));
        PrimaryKey primaryKey = primaryKeyBuilder.build();
        //設置數據表名稱。
        RowPutChange rowPutChange = new RowPutChange("<TABLE_NAME>", primaryKey);

        //加入一些屬性列。
        long ts = System.currentTimeMillis();
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 3; j++) {
                rowPutChange.addColumn(new Column("Col" + i, ColumnValue.fromLong(j), ts + j));
            }
        }
        PutRowRequest request = new PutRowRequest(rowPutChange);
       
        //發起請求。
        client.putRow(request);
    }
}

步驟三:讀取數據

以下示例用于讀取表中的一行數據,只讀取最新版本數據且只返回Col0列值。

import com.alicloud.openservices.tablestore.SyncClient;
import com.alicloud.openservices.tablestore.model.*;

public class GetRow {
    public static void main(String[] args) {
        
        //創建并初始化客戶端。
        final String endPoint = "https://myinstance.cn-hangzhou.ots.aliyuncs.com";
        String accessKeyId = System.getenv("OTS_AK_ENV");
        String accessKeySecret = System.getenv("OTS_SK_ENV");
        final String instanceName = "myinstance";
        SyncClient client = new SyncClient(endPoint, accessKeyId, accessKeySecret, instanceName);
        
        //創建API請求并設置參數。
        //構造主鍵。
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("pkvalue"));
        PrimaryKey primaryKey = primaryKeyBuilder.build();

        //讀取一行數據,設置數據表名稱。
        SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>", primaryKey);
        //設置讀取最新版本。
        criteria.setMaxVersions(1);
        //設置讀取某些列。
        criteria.addColumnsToGet("Col0");
        GetRowRequest getRowRequest = new GetRowRequest(criteria);
        
        //發起請求并打印返回結果。
        GetRowResponse getRowResponse = client.getRow(getRowRequest);
        Row row = getRowResponse.getRow();

        System.out.println("讀取完畢,結果為: ");
        System.out.println(row);
    }
}

時序模型示例

使用已初始化的Client調用表格存儲時序模型的功能。此處以時序模型的創建表、寫入數據和讀取數據為例介紹Java SDK的代碼示例。

步驟一:創建時序表

以下示例用于在myinstance實例下創建一個時序表。該時序表的數據永不過期。

import com.alicloud.openservices.tablestore.TimeseriesClient;
import com.alicloud.openservices.tablestore.model.TimeseriesTableMeta;
import com.alicloud.openservices.tablestore.model.TimeseriesTableOptions;
import com.alicloud.openservices.tablestore.model.timeseries.CreateTimeseriesTableRequest;

public class CreateTimeseriesTable {
    public static void main(String[] args) {
        
        //創建并初始化客戶端。
        final String endPoint = "https://myinstance.cn-hangzhou.ots.aliyuncs.com";
        String accessKeyId = System.getenv("OTS_AK_ENV");
        String accessKeySecret = System.getenv("OTS_SK_ENV");
        final String instanceName = "myinstance";
        TimeseriesClient client = new TimeseriesClient(endPoint, accessKeyId, accessKeySecret, instanceName);
        
        //創建API請求并設置參數。
        String tableName = "<TABLE_NAME>";
        TimeseriesTableMeta timeseriesTableMeta = new TimeseriesTableMeta(tableName);
        int timeToLive = -1;
        timeseriesTableMeta.setTimeseriesTableOptions(new TimeseriesTableOptions(timeToLive));
        CreateTimeseriesTableRequest request = new CreateTimeseriesTableRequest(timeseriesTableMeta);
        
        //發起請求。
        client.createTimeseriesTable(request);
    }
}

步驟二:寫入時序數據

以下示例用于在時序表中寫入10條時間線數據。

import com.alicloud.openservices.tablestore.TimeseriesClient;
import com.alicloud.openservices.tablestore.model.ColumnValue;
import com.alicloud.openservices.tablestore.model.timeseries.PutTimeseriesDataRequest;
import com.alicloud.openservices.tablestore.model.timeseries.PutTimeseriesDataResponse;
import com.alicloud.openservices.tablestore.model.timeseries.TimeseriesKey;
import com.alicloud.openservices.tablestore.model.timeseries.TimeseriesRow;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class PutTimeseriesData {
    public static void main(String[] args) {
        
        //創建并初始化客戶端。
        final String endPoint = "https://myinstance.cn-hangzhou.ots.aliyuncs.com";
        String accessKeyId = System.getenv("OTS_AK_ENV");
        String accessKeySecret = System.getenv("OTS_SK_ENV");
        final String instanceName = "myinstance";
        TimeseriesClient client = new TimeseriesClient(endPoint, accessKeyId, accessKeySecret, instanceName);
        
        //創建API請求并設置參數。
        List<TimeseriesRow> rows = new ArrayList<TimeseriesRow>();
        for (int i = 0; i < 10; i++) {
            Map<String, String> tags = new HashMap<String, String>();
            tags.put("region", "hangzhou");
            tags.put("os", "Ubuntu16.04");
            // 通過measurementName、dataSource和tags構建TimeseriesKey。
            TimeseriesKey timeseriesKey = new TimeseriesKey("cpu", "host_" + i, tags);
            // 指定timeseriesKey和timeInUs創建timeseriesRow。
            TimeseriesRow row = new TimeseriesRow(timeseriesKey, System.currentTimeMillis() * 1000 + i);
            // 增加數據值(field)。
            row.addField("cpu_usage", ColumnValue.fromDouble(10.0));
            row.addField("cpu_sys", ColumnValue.fromDouble(5.0));
            rows.add(row);
        }
        String tableName = "<TABLE_NAME>";
        PutTimeseriesDataRequest putTimeseriesDataRequest = new PutTimeseriesDataRequest(tableName);
        putTimeseriesDataRequest.setRows(rows);
        
        //發起請求并檢查是否寫入成功。
        // 一次寫入多行時序數據。
        PutTimeseriesDataResponse putTimeseriesDataResponse = client.putTimeseriesData(putTimeseriesDataRequest);
        // 檢查是否全部成功。
        if (!putTimeseriesDataResponse.isAllSuccess()) {
            for (PutTimeseriesDataResponse.FailedRowResult failedRowResult : putTimeseriesDataResponse.getFailedRows()) {
                System.out.println(failedRowResult.getIndex());
                System.out.println(failedRowResult.getError());
            }
        }
    }
}

步驟三:讀取時序數據

以下示例用于讀取cpuhost_0的時間線中滿足指定條件的數據并計算滿足條件數據的個數。

import com.alicloud.openservices.tablestore.TimeseriesClient;
import com.alicloud.openservices.tablestore.model.ColumnType;
import com.alicloud.openservices.tablestore.model.timeseries.GetTimeseriesDataRequest;
import com.alicloud.openservices.tablestore.model.timeseries.GetTimeseriesDataResponse;
import com.alicloud.openservices.tablestore.model.timeseries.TimeseriesKey;

import java.util.HashMap;
import java.util.Map;

public class GetTimeseriesData {
    public static void main(String[] args) {
       
        //創建并初始化客戶端。
        final String endPoint = "https://myinstance.cn-hangzhou.ots.aliyuncs.com";
        String accessKeyId = System.getenv("OTS_AK_ENV");
        String accessKeySecret = System.getenv("OTS_SK_ENV");
        final String instanceName = "myinstance";
        TimeseriesClient client = new TimeseriesClient(endPoint, accessKeyId, accessKeySecret, instanceName);
        
        //創建API請求并設置參數。
        String tableName = "<TABLE_NAME>";
        GetTimeseriesDataRequest getTimeseriesDataRequest = new GetTimeseriesDataRequest(tableName);
        Map<String, String> tags = new HashMap<String, String>();
        tags.put("region", "hangzhou");
        tags.put("os", "Ubuntu16.04");
        // 通過measurementName、dataSource和tags構建TimeseriesKey。
        TimeseriesKey timeseriesKey = new TimeseriesKey("cpu", "host_0", tags);
        getTimeseriesDataRequest.setTimeseriesKey(timeseriesKey);
        // 指定時間范圍。
        getTimeseriesDataRequest.setTimeRange(0, (System.currentTimeMillis() + 60 * 1000) * 1000);
        // 限制返回行數。
        getTimeseriesDataRequest.setLimit(10);
        // 設置是否倒序讀取數據,可不設置,默認值為false。如果設置為true,則倒序讀取數據。
        getTimeseriesDataRequest.setBackward(false);
        // 設置獲取部分數據列,可不設置,默認獲取全部數據列。
        getTimeseriesDataRequest.addFieldToGet("cpu_sys", ColumnType.DOUBLE);
        getTimeseriesDataRequest.addFieldToGet("cpu_usage", ColumnType.DOUBLE);

        //發起請求并打印返回結果。
        GetTimeseriesDataResponse getTimeseriesDataResponse = client.getTimeseriesData(getTimeseriesDataRequest);
        System.out.println(getTimeseriesDataResponse.getRows().size());
        if (getTimeseriesDataResponse.getNextToken() != null) {
            // 如果nextToken不為空,可以發起下一次請求。
            getTimeseriesDataRequest.setNextToken(getTimeseriesDataResponse.getNextToken());
            getTimeseriesDataResponse = client.getTimeseriesData(getTimeseriesDataRequest);
            System.out.println(getTimeseriesDataResponse.getRows().size());
        }
    }
}

參考文檔