Tüm Ürünler
Search
Belge Merkezi

Tablestore:Veri Okuma

Son Güncelleme:Oct 02, 2026

Tablestore tek bir veri satırını okumak için GetRow API'sini ve birden fazla veri satırını okumak için BatchGetRow ve GetRange API'lerini sağlar.

Not

Bir tablonun temel birimi, birincil anahtar sütunları ve nitelik sütunlarından oluşan bir satırdır. Birincil anahtar sütunları zorunludur ve adları ile türleri tüm satırlarda aynı olmalıdır. Nitelik sütunları isteğe bağlıdır ve nitelikler her satırda farklı olabilir. Daha fazla bilgi için bkz. Geniş tablo modeli.

Not

Otomatik artan birincil anahtar sütunu içeren bir tablodan veri okurken, otomatik artan sütunun değeri de dahil olmak üzere tam birincil anahtarı sağlamanız gerekir. Daha fazla bilgi için bkz. Otomatik artan birincil anahtar sütunu.

Önemli

Otomatik artan birincil anahtar sütunun değerine sahip değilseniz, verileri okumak için ilk birincil anahtar sütununda aralık sorgusu yapabilirsiniz.

Tek Satır Veri Okuma

Tek bir veri satırını okumak için GetRow işlemini çağırabilirsiniz. Bu işlem, tam birincil anahtarı bildiğinizde ve yalnızca birkaç satırı okumanız gerektiğinde kullanışlıdır.

Tek bir satır okurken, verileri filtrelemek için aşağıdaki koşulları yapılandırabilirsiniz.

  • Varsayılan olarak tüm sütunlar döndürülür. Yalnızca belirli sütunların döndürülmesi için işlemi yapılandırabilirsiniz.

  • Belirli filtre koşullarını karşılayan satırları döndürmek için filtre kullanın. Daha fazla bilgi için bkz. Filtreler.

  • Tablo için birden fazla veri sürümü yapılandırdıysanız, okunacak maksimum sürüm sayısını belirtebilirsiniz. Belirli bir zaman aralığından veya belirli bir sürüm numarasına sahip verileri de okuyabilirsiniz. Veri sürümleri hakkında daha fazla bilgi için bkz. Veri sürümleri ve yaşam döngüsü.

Okuma işleminin iki olası sonucu vardır:

  • Satır mevcutsa işlem, satırın birincil anahtar sütunlarını ve nitelik sütunlarını döndürür.

  • Satır mevcut değilse sonuçta satır yer almaz ve hata bildirilmez.

Toplu Veri Okuma

Tek bir istekte birden fazla satırı okumak veya aynı anda birden fazla tablodan veri okumak için BatchGetRow işlemini çağırabilirsiniz. Bu işlem, tam birincil anahtarları bildiğinizde ve birçok satırı veya birden fazla tablodan veriyi okumanız gerektiğinde kullanışlıdır.

Bir BatchGetRow işlemi, birden fazla GetRow alt işleminden oluşur. Alt işlem oluşturma süreci, GetRow işlemiyle aynıdır.

Verileri toplu olarak okurken, verileri filtrelemek için aşağıdaki koşulları yapılandırabilirsiniz.

  • Tek bir istekte birden fazla tablodan veri okuma.

    Tek bir istek en fazla 100 satır okuyabilir.

  • Varsayılan olarak tüm sütunlar döndürülür. Yalnızca belirli sütunların döndürülmesi için işlemi yapılandırabilirsiniz.

    Toplu okumadaki tüm satırlar aynı parametre koşullarını kullanır. Örneğin, ColumnsToGet=[colA] yalnızca belirtilen tüm satırlar için colA sütununun alındığı anlamına gelir.

  • Belirli filtre koşullarını karşılayan satırları almak için filtre kullanın. Daha fazla bilgi için bkz. Filtreler.

  • Tablo için birden fazla veri sürümü yapılandırdıysanız, okunacak maksimum sürüm sayısını belirtebilirsiniz. Belirli bir zaman aralığından veya belirli bir sürüm numarasına sahip verileri de okuyabilirsiniz. Veri sürümleri hakkında daha fazla bilgi için bkz. Veri sürümleri ve yaşam döngüsü.

Bir BatchGetRow işleminin alt işlemleri bağımsız olarak yürütülür ve Tablestore her alt işlem için sonucu döndürür.

Aralıkta Veri Okuma

Belirtilen bir aralıktaki verileri okumak için GetRange işlemini çağırabilirsiniz. Bu işlem, tam bir birincil anahtar aralığı veya bir anahtar öneki belirleyebildiğinizde kullanışlıdır.

Not

Tablestore tablolarında tüm satırlar birincil anahtara göre sıralanır. Bir tablonun birincil anahtarı, tüm birincil anahtar sütunlarından sırayla oluşur. Bu nedenle, satırlar belirli bir birincil anahtar sütununa göre sıralanmaz.

GetRange işlemi soldan eşleşme ilkesini izler. Tablestore, belirtilen aralıktaki birincil anahtar değerlerine sahip verileri okumak için ilk birincil anahtar sütunundan son birincil anahtar sütununa kadar değerleri sırayla karşılaştırır. Örneğin, bir veri tablosunun birincil anahtarı PK1, PK2 ve PK3 birincil anahtar sütunlarından oluşur. Veriler okunurken Tablestore önce bir satırın PK1 değerinin ilk birincil anahtar sütunu için belirtilen aralıkta olup olmadığını belirler. Bir satırın PK1 değeri aralıktaysa Tablestore, satırın diğer birincil anahtar sütunlarının değerlerinin her bir birincil anahtar sütunu için belirtilen aralıklarda olup olmadığını belirlemeyi durdurur ve satırı döndürür. Bir satırın PK1 değeri aralıkta değilse Tablestore, PK1 ile aynı şekilde satırın diğer birincil anahtar sütunlarının değerlerinin her bir birincil anahtar sütunu için belirtilen aralıklarda olup olmadığını belirlemeye devam eder.

Aralıkta veri okurken, verileri filtrelemek için aşağıdaki koşulları yapılandırabilirsiniz.

  • Bir anahtar öneki belirtin ve diğer birincil anahtar sütunları için sanal noktalar INF_MIN (sonsuz minimum) ve INF_MAX (sonsuz maksimum) kullanın. Verileri okumak için tam bir birincil anahtar aralığı da belirtebilirsiniz.

    Önemli

    Anahtar önekini belirleyemiyorsanız, tüm birincil anahtar aralığını INF_MIN'den INF_MAX'e ayarlayarak tam tablo taraması yapabilirsiniz. Bu işlem büyük miktarda hesaplama kaynağı tüketir. Dikkatli kullanın.

    Aralık büyükse, taranan satır sayısı veya veri hacmi belirli bir sınırı aştığında tarama durur. İşlem alınan satırları ve sonraki birincil anahtar bilgilerini döndürür. Aralıktaki kalan satırları almak için döndürülen sonraki birincil anahtar bilgilerini kullanarak başka bir istek başlatabilirsiniz.

    Aşağıdaki koşullardan biri karşılandığında GetRange işlemi durabilir ve veri döndürebilir:

    • Taranan veri miktarı 4 MB'a ulaşır.

    • Taranan satır sayısı 5.000'e ulaşır.

    • Döndürülen satır sayısı üst sınıra ulaşır.

    • Tüm ayrılmış okuma aktarım hızı tüketildiği için sonraki veri satırını okumaya yetecek okuma aktarım hızı yetersiz kalır.

  • İleri veya geri yönde belirtilen maksimum sayıda satır okuma. Örneğin, ileri yönde en fazla 5 satır okuyabilirsiniz.

  • Varsayılan olarak tüm sütunlar döndürülür. Yalnızca belirli sütunların döndürülmesi için işlemi yapılandırabilirsiniz.

  • Belirli filtre koşullarını karşılayan satırları almak için filtre kullanın. Daha fazla bilgi için bkz. Filtreler.

    Aralık okumasındaki tüm satırlar aynı parametre koşullarını kullanır. Örneğin, ColumnsToGet=[colA] yalnızca aralıktaki tüm satırlar için colA sütununun alındığı anlamına gelir.

  • Tablo için birden fazla veri sürümü yapılandırdıysanız, okunacak maksimum sürüm sayısını belirtebilirsiniz. Belirli bir zaman aralığından veya belirli bir sürüm numarasına sahip verileri de okuyabilirsiniz. Veri sürümleri hakkında daha fazla bilgi için bkz. Veri sürümleri ve yaşam döngüsü.

GetRange kullanarak büyük hacimli verileri tararken Tablestore istek başına yalnızca bir tarama gerçekleştirir. Tarama, satır sayısı 5.000'i veya veri boyutu 4 MB'ı aşarsa durur. Bu sınırları aşan veriler döndürülmez. Sonraki verileri almak için sayfalama kullanmanız gerekir.

Nasıl Kullanılır

Konsolu kullanma

Konsolu kullanarak tek bir satırı sorgulayabilir veya aralıkta veri sorgulayabilirsiniz.

  1. Tablestore konsoluna giriş yapın.

  2. Overview sayfasında örneği bulun ve Actions sütunundaki Instance Management seçeneğine tıklayın.

  3. Instance Details sekmesinde Data Table List bölümünde tabloyu bulun ve Actions sütunundaki Query/Search seçeneğine tıklayın.

  4. Data Management sekmesinde Query Data seçeneğine tıklayın. Ardından tek bir satır mı yoksa aralıkta mı veri okuyacağınızı seçin.

    Tek Satır Veri Okuma

    1. Query Data iletişim kutusunda Query Range seçeneğini Single Row Query olarak ayarlayın ve sorgulanacak tabloyu seçin.

    2. Varsayılan olarak tüm sütunlar döndürülür. Yalnızca belirli nitelik sütunlarını döndürmek için Get All Columns seçeneğini devre dışı bırakın ve istenen nitelik sütunlarını girin.

      Birden fazla nitelik sütununu virgül (,) ile ayırın.

    3. Hedef satır için Primary Key Value değerini girin.

      Birincil anahtar değerinin eksiksizliği ve doğruluğu, sorgu sonuçlarını etkiler.

    4. Döndürülecek sürüm sayısını belirtmek için Max Versions değerini girin.

    5. OK seçeneğine tıklayın.

    Aralıkta Veri Okuma

    1. Query Data iletişim kutusunda Query Range seçeneğini Range Query olarak ayarlayın ve sorgulanacak tabloyu seçin.

    2. Varsayılan olarak tüm sütunlar döndürülür. Yalnızca belirli nitelik sütunlarını döndürmek için Get All Columns seçeneğini devre dışı bırakın ve istenen nitelik sütunlarını girin.

      Birden fazla nitelik sütununu virgül (,) ile ayırın.

    3. Başlangıç ve bitiş birincil anahtar sütunlarını girin.

    4. Önemli
      • Bir aralık sorgusu önce ilk birincil anahtar sütununu değerlendirir. İlk birincil anahtar sütununun değerleri aynıysa sistem ikinci birincil anahtar sütununu değerlendirir. Bu kural sonraki tüm birincil anahtar sütunları için geçerlidir.

      • Okuma aralığı sol kapalı, sağ açık bir aralıktır. Bu, aralığın başlangıcının dahil olduğu ve aralığın bitişinin hariç tutulduğu anlamına gelir.

    5. Döndürülecek sürüm sayısını belirtmek için Max Versions değerini girin.

    6. Sorgu sonucu için sıralama yönünü ayarlayın. Forward Query veya Backward Query seçeneklerinden birini seçebilirsiniz.

    7. OK seçeneğine tıklayın.

Komut satırı arabirimini (CLI) kullanma

Veri okumak için komut satırı arabirimini (CLI) kullanarak aşağıdaki komutları çalıştırabilirsiniz.

  • Tek bir veri satırını okumak için get komutunu çalıştırın. Daha fazla bilgi için bkz. Veri okuma.

    Aşağıdaki örnekte, ilk birincil anahtar sütununun değerinin "86" ve ikinci birincil anahtar sütununun değerinin 6771 olduğu satır okunmaktadır.

    get --pk '["86",6771]'
  • Aralıkta veri okumak için scan komutunu çalıştırın. Daha fazla bilgi için bkz. Veri dışa aktarma.

    Aşağıdaki örnekte, ["86",7000] ve ["86",6770] arasındaki birincil anahtar aralığından geriye doğru veri okunmakta ve yalnızca pid sütunu döndürülmektedir.

    scan --begin '["86",7000]' --end '["86",6770]' --backward --columns pid

SDK kullanma

Veri okumak için Java SDK, Go SDK, Python SDK, Node.js SDK, .NET SDK veya PHP SDK kullanabilirsiniz. Bu bölümde Java yazılım geliştirme kiti (SDK) örnek olarak kullanılmıştır.

Tek Satır Veri Okuma

Veri okurken veri sürümünü, okunacak sütunları, filtreleri ve normal ifade filtrelerini belirtebilirsiniz.

  • En son veri sürümünü ve belirli sütunları okuma

    Aşağıdaki örnek kod, bir veri tablosundaki bir satırın belirtilen sütunlarından en son sürüm verilerinin nasıl okunacağını göstermektedir.

    private static void getRow(SyncClient client, String pkValue) {
        // Construct the primary key. 
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
        PrimaryKey primaryKey = primaryKeyBuilder.build();
    
        // Specify the table name and primary key to read a row of data. 
        SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>", primaryKey);
        // Set the MaxVersions parameter to 1 to read the latest version of data. 
        criteria.setMaxVersions(1);
        GetRowResponse getRowResponse = client.getRow(new GetRowRequest(criteria));
        Row row = getRowResponse.getRow();
    
        System.out.println("Read complete. Result:");
        System.out.println(row);
    
        // Specify the columns that you want to read. 
        criteria.addColumnsToGet("Col0");
        getRowResponse = client.getRow(new GetRowRequest(criteria));
        row = getRowResponse.getRow();
    
        System.out.println("Read complete. Result:");
        System.out.println(row);
    } 
  • Filtre ile veri okuma

    Aşağıdaki örnek kod, bir veri tablosundaki bir satırdan en son sürüm verilerinin nasıl okunacağını ve Col0 sütununun değerine göre verilerin filtrenin nasıl kullanılacağını göstermektedir.

    private static void getRow(SyncClient client, String pkValue) {
        // Construct the primary key. 
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
        PrimaryKey primaryKey = primaryKeyBuilder.build();
    
        // Specify the table name and primary key to read a row of data. 
        SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>", primaryKey);
        // Set the MaxVersions parameter to 1 to read the latest version of data. 
        criteria.setMaxVersions(1);
    
        // Configure a filter to return a row in which the value of the Col0 column is 0. 
        SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("Col0",
                SingleColumnValueFilter.CompareOperator.EQUAL, ColumnValue.fromLong(0));
        // If the Col0 column does not exist, the row is not returned. 
        singleColumnValueFilter.setPassIfMissing(false);
        criteria.setFilter(singleColumnValueFilter);
    
        GetRowResponse getRowResponse = client.getRow(new GetRowRequest(criteria));
        Row row = getRowResponse.getRow();
    
        System.out.println("Read complete. Result:");
        System.out.println(row);
    }
  • Veri okurken normal ifade filtresi kullanma

    Aşağıdaki örnek kod, bir veri tablosundaki bir satırdan Col1 sütununun verilerinin nasıl okunacağını ve bu sütundaki verilerin normal ifadeyle nasıl filtreleneceğini göstermektedir.

    private static void getRow(SyncClient client, String pkValue) {
        // Specify the name of the data table. 
        SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>");
     
        // Construct the primary key. 
        PrimaryKey primaryKey = PrimaryKeyBuilder.createPrimaryKeyBuilder()
            .addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue))
            .build();
        criteria.setPrimaryKey(primaryKey);
     
        // Set the MaxVersions parameter to 1 to read the latest version of data. 
        criteria.setMaxVersions(1);
     
        // Configure a filter. A row is returned when cast<int>(regex(Col1)) is greater than 100. 
        RegexRule regexRule = new RegexRule("t1:([0-9]+),", RegexRule.CastType.VT_INTEGER);
        SingleColumnValueRegexFilter filter =  new SingleColumnValueRegexFilter("Col1",
            regexRule,SingleColumnValueRegexFilter.CompareOperator.GREATER_THAN, ColumnValue.fromLong(100));
        criteria.setFilter(filter);
     
        GetRowResponse getRowResponse = client.getRow(new GetRowRequest(criteria));
        Row row = getRowResponse.getRow();
    
        System.out.println("Read complete. Result:");
        System.out.println(row);
    }

Toplu Veri Okuma

Aşağıdaki örnek kod, 10 satır veri okumak için sürüm koşullarını, okunacak sütunları ve filtreleri nasıl yapılandıracağınızı göstermektedir.

private static void batchGetRow(SyncClient client) {
    // Specify the name of the data table. 
    MultiRowQueryCriteria multiRowQueryCriteria = new MultiRowQueryCriteria("<TABLE_NAME>");
    // Specify 10 rows that you want to read. 
    for (int i = 0; i < 10; i++) {
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("pk" + i));
        PrimaryKey primaryKey = primaryKeyBuilder.build();
        multiRowQueryCriteria.addRow(primaryKey);
    }
    // Add conditions. 
    multiRowQueryCriteria.setMaxVersions(1);
    multiRowQueryCriteria.addColumnsToGet("Col0");
    multiRowQueryCriteria.addColumnsToGet("Col1");
    SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("Col0",
            SingleColumnValueFilter.CompareOperator.EQUAL, ColumnValue.fromLong(0));
    singleColumnValueFilter.setPassIfMissing(false);
    multiRowQueryCriteria.setFilter(singleColumnValueFilter);

    BatchGetRowRequest batchGetRowRequest = new BatchGetRowRequest();
    // The BatchGetRow operation allows you to read data from multiple tables. Each multiRowQueryCriteria parameter specifies query conditions for one table. You can add multiple multiRowQueryCriteria parameters to read data from multiple tables. 
    batchGetRowRequest.addMultiRowQueryCriteria(multiRowQueryCriteria);

    BatchGetRowResponse batchGetRowResponse = client.batchGetRow(batchGetRowRequest);

    System.out.println("Whether all operations are successful:" + batchGetRowResponse.isAllSucceed());
    System.out.println("Read complete. Result:");
    for (BatchGetRowResponse.RowResult rowResult : batchGetRowResponse.getSucceedRows()) {
        System.out.println(rowResult.getRow());
    }
    if (!batchGetRowResponse.isAllSucceed()) {
        for (BatchGetRowResponse.RowResult rowResult : batchGetRowResponse.getFailedRows()) {
            System.out.println("Failed rows:" + batchGetRowRequest.getPrimaryKey(rowResult.getTableName(), rowResult.getIndex()));
            System.out.println("Cause of failures:" + rowResult.getError());
        }

        /**
         * You can use the createRequestForRetry method to construct another request to retry the operations on failed rows. In this example, only the retry request is constructed. 
         * We recommend that you use the custom retry policy in Tablestore SDKs as the retry method. This way, you can retry failed rows after batch operations are performed. After you specify the retry policy, you do not need to add retry code to call the operation. 
         */
        BatchGetRowRequest retryRequest = batchGetRowRequest.createRequestForRetry(batchGetRowResponse.getFailedRows());
    }
}

Aralıkta Veri Okuma

  • Tanımlanan aralıkta veri okuma

    Aşağıdaki örnek kod, birincil anahtar değerleri belirtilen aralıkta olan verilerin ileri yönde nasıl okunacağını göstermektedir. Yanıtta nextStartPrimaryKey parametresinin değeri boşsa, birincil anahtar değerleri belirtilen aralıkta olan tüm veriler okunur. Aksi takdirde, birincil anahtar değerleri belirtilen aralıkta olan tüm veriler döndürülünceye kadar başka bir istek başlatmanız gerekir.

    private static void getRange(SyncClient client, String startPkValue, String endPkValue) {
        // Specify the name of the data table. 
        RangeRowQueryCriteria rangeRowQueryCriteria = new RangeRowQueryCriteria("<TABLE_NAME>");
    
        // Specify the start primary key. 
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(startPkValue));
        rangeRowQueryCriteria.setInclusiveStartPrimaryKey(primaryKeyBuilder.build());
    
        // Specify the end primary key. 
        primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(endPkValue));
        rangeRowQueryCriteria.setExclusiveEndPrimaryKey(primaryKeyBuilder.build());
    
        rangeRowQueryCriteria.setMaxVersions(1);
    
        System.out.println("GetRange result:");
        while (true) {
            GetRangeResponse getRangeResponse = client.getRange(new GetRangeRequest(rangeRowQueryCriteria));
            for (Row row : getRangeResponse.getRows()) {
                System.out.println(row);
            }
    
            // If the value of the nextStartPrimaryKey parameter is not null, continue the read operation. 
            if (getRangeResponse.getNextStartPrimaryKey() != null) {
                rangeRowQueryCriteria.setInclusiveStartPrimaryKey(getRangeResponse.getNextStartPrimaryKey());
            } else {
                break;
            }
        }
    }         
  • İlk birincil anahtar sütunu tarafından tanımlanan aralığa göre veri okuma

    Aşağıdaki örnek kod, ilk birincil anahtar sütununun değeri tarafından belirlenen aralıktaki verilerin ileri yönde nasıl okunacağını göstermektedir. Bu örnekte, ikinci birincil anahtar sütununun başlangıç değeri INF_MIN, bitiş değeri ise INF_MAX olarak ayarlanır. Yanıtta nextStartPrimaryKey parametresinin değeri null ise, belirtilen aralıktaki tüm veriler okunur. Aksi takdirde, ilk birincil anahtar sütununun değeri tarafından belirlenen aralıktaki tüm veriler döndürülünceye kadar başka bir istek başlatmanız gerekir.

    private static void getRange(SyncClient client, String startPkValue, String endPkValue) {
        // Specify the name of the data table. 
        RangeRowQueryCriteria rangeRowQueryCriteria = new RangeRowQueryCriteria("<TABLE_NAME>");
        // Specify the start primary key. In this example, two primary key columns are used. 
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromString(startPkValue));// Set the value of the first primary key column to a specific value. 
        primaryKeyBuilder.addPrimaryKeyColumn("pk2", PrimaryKeyValue.INF_MIN);// Set the value of the second primary key column to an infinitely small value. 
        rangeRowQueryCriteria.setInclusiveStartPrimaryKey(primaryKeyBuilder.build());
    
        // Specify the end primary key. 
        primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromString(endPkValue));// Set the value of the first primary key column to a specific value. 
        primaryKeyBuilder.addPrimaryKeyColumn("pk2", PrimaryKeyValue.INF_MAX);// Set the value of the second primary key column to an infinitely great value. 
        rangeRowQueryCriteria.setExclusiveEndPrimaryKey(primaryKeyBuilder.build());
    
        rangeRowQueryCriteria.setMaxVersions(1);
    
        System.out.println("GetRange result:");
        while (true) {
            GetRangeResponse getRangeResponse = client.getRange(new GetRangeRequest(rangeRowQueryCriteria));
            for (Row row : getRangeResponse.getRows()) {
                System.out.println(row);
            }
    
            // If the value of the nextStartPrimaryKey parameter is not null, continue the read operation. 
            if (getRangeResponse.getNextStartPrimaryKey() != null) {
                rangeRowQueryCriteria.setInclusiveStartPrimaryKey(getRangeResponse.getNextStartPrimaryKey());
            } else {
                break;
            }
        }
    }    
  • Tanımlanan aralıkta veri okuma ve belirli bir sütuna normal ifade filtresi uygulama

    Aşağıdaki örnek kod, Col1 sütunundan birincil anahtar değerleri ["pk:2020-01-01.log", "pk:2021-01-01.log") aralığında olan verilerin nasıl okunacağını ve Col1 sütunundaki verilerin normal ifadeyle nasıl filtreleneceğini göstermektedir.

    private static void getRange(SyncClient client) {
        // Specify the name of the data table. 
        RangeRowQueryCriteria criteria = new RangeRowQueryCriteria("<TABLE_NAME>");
     
        // Specify ["pk:2020-01-01.log", "pk:2021-01-01.log") as the range of the primary key of the data that you want to read. The range is a left-closed, right-open interval. 
        PrimaryKey pk0 = PrimaryKeyBuilder.createPrimaryKeyBuilder()
            .addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("2020-01-01.log"))
            .build();
        PrimaryKey pk1 = PrimaryKeyBuilder.createPrimaryKeyBuilder()
            .addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("2021-01-01.log"))
            .build();
        criteria.setInclusiveStartPrimaryKey(pk0);
        criteria.setExclusiveEndPrimaryKey(pk1);
     
        // Set the MaxVersions parameter to 1 to read the latest version of data. 
        criteria.setMaxVersions(1);
     
        // Configure a filter. A row is returned when cast<int>(regex(Col1)) is greater than 100. 
        RegexRule regexRule = new RegexRule("t1:([0-9]+),", RegexRule.CastType.VT_INTEGER);
        SingleColumnValueRegexFilter filter =  new SingleColumnValueRegexFilter("Col1",
            regexRule,SingleColumnValueRegexFilter.CompareOperator.GREATER_THAN,ColumnValue.fromLong(100));
        criteria.setFilter(filter);
    
        while (true) {
            GetRangeResponse resp = client.getRange(new GetRangeRequest(criteria));
            for (Row row : resp.getRows()) {
                // do something
                System.out.println(row);
            }
            if (resp.getNextStartPrimaryKey() != null) {
                criteria.setInclusiveStartPrimaryKey(resp.getNextStartPrimaryKey());
            } else {
                break;
            }
       }
    }

Faturalandırma Açıklaması

Bir işlemin tükettiği Kapasite Birimi (CU) sayısına göre ücretlendirilirsiniz. Ölçülen okuma ve yazma CU'larına ilişkin ücretler, ayrılmış okuma ve yazma CU'larına ilişkin ücretlerden ayrıdır. Örnek türü, ölçülen mi yoksa ayrılmış mı CU'ların tüketileceğini belirler.

Not

Örnek türleri ve CU'lar hakkında daha fazla bilgi için bkz. Örnekler ve Okuma/yazma aktarım hızı.

Veri okuma, Yazma Kapasite Birimlerini (WCUs) değil ancak Okuma Kapasite Birimlerini (RCUs) tüketir. Tüketilen RCUs şu şekilde hesaplanır:

  • GetRow işlemi tarafından tüketilen RCUs

    Tüketilen RCU sayısı, okunan verilerin toplam boyutuna dayanır; bu boyut, birincil anahtarın ve alınan nitelik sütunlarının veri boyutlarının toplamıdır. Bu toplam boyut 4 KB'a bölünür ve en yakın tam sayıya yukarı yuvarlanır. Belirtilen satır mevcut değilse işlem bir RCU tüketir.

  • BatchGetRow işlemi tarafından tüketilen RCUs

    BatchGetRow işlemi için RCUs, her RowInBatchGetRowRequest öğesini ayrı bir GetRow işlemi olarak değerlendirerek hesaplanır.

  • GetRange işlemi tarafından tüketilen RCUs

    Tüketilen RCU sayısı, taranan tüm verilerin toplam boyutuna dayanır; bu boyut, aralıktaki tüm satırlar için birincil anahtarların ve taranan nitelik sütunlarının veri boyutlarının toplamıdır. Bu toplam boyut 4 KB'a bölünür ve en yakın tam sayıya yukarı yuvarlanır. Örneğin, bir tarama 10 satırı kapsıyorsa ve her satır için birincil anahtar ile taranan nitelik sütunlarının birleşik boyutu 330 bayt ise toplam veri boyutu 3,3 KB'dır (10 satır × 330 bayt). Bu işlem 1 RCU tüketir.