全部产品
Search
文档中心

Tablestore:Tipe data IP

更新时间:Nov 09, 2025

Indeks pencarian mendukung tipe data IP, yang menyediakan penyimpanan dan kueri efisien untuk alamat IPv4 dan IPv6 dalam skenario seperti analisis log, keamanan jaringan, dan geolokasi.

Penting

Untuk menggunakan tipe data IP pada indeks pencarian, dan hubungi dukungan teknis Tablestore untuk mengaktifkan fitur tersebut.

Cara kerjanya

Untuk menggunakan tipe data IP, Anda dapat memetakan kolom String dari tabel data Anda ke tipe IP di indeks pencarian. Tipe data IP mendukung tiga metode kueri: kueri tepat, kueri rentang, dan kueri komposit. Skema indeks alamat IP khusus menyediakan penyimpanan terpadu dan pengambilan yang efisien untuk IPv4, IPv6, dan format variannya.

Format IP yang didukung

Tipe data IP mendukung berbagai format alamat IP. Tabel berikut menjelaskan format yang didukung.

Format alamat IP

Deskripsi

IPv4

Format alamat IPv4. Terdiri dari empat kelompok angka desimal yang dipisahkan oleh titik (.).

127.0.0.1

192.168.1.1

IPv6

Format alamat IPv6. Terdiri dari delapan kelompok empat digit heksadesimal yang dipisahkan oleh titik dua (:).

FC00:0000:130F:0000:0000:09C0:876A:130B

Format IPv6 singkat

Mendukung notasi singkat standar untuk alamat IPv6.

FFFF:192.168.1.1

Alamat IPv6 yang dipetakan ke IPv4

Format alamat IPv6 yang dipetakan ke IPv4. Mendukung kueri menggunakan format IPv4.

Catatan

Sebagai contoh, jika nilai kolom `column_ip` dalam sebuah baris adalah ::FFFF:192.168.1.1, Anda dapat melakukan kueri tepat menggunakan `column_ip = 192.168.1.1 ` untuk mencocokkan baris tersebut.

::FFFF:192.168.1.1

Skenario kueri

Kueri tipe IP mendukung tiga metode: kueri tepat (cocok persis), kueri rentang, dan kueri komposit. Setiap metode cocok untuk skenario bisnis yang berbeda.

Jenis kueri

Deskripsi

Implementasi

Skema aplikasi

Kueri Istilah

Mengkueri data yang cocok dengan alamat IP tertentu.

Gunakan kueri tepat dengan alamat IP tertentu.

  • Skenario analisis log: Pelacakan perilaku pengguna dan lokasi kesalahan.

  • Skema keamanan jaringan: Validasi daftar hitam dan putih, serta audit otentikasi identitas.

Kueri rentang

Mengkueri data dalam rentang alamat IP tertentu.

  • (Direkomendasikan) Gunakan kueri tepat dengan notasi CIDR.

  • Gunakan kueri rentang untuk menentukan rentang alamat IP.

  • Skema geolokasi: Pemagaran IP geo dan analisis topologi jaringan.

  • Skema Resource Access Management: Perlindungan keamanan dan manajemen subnet CIDR.

Kueri komposit

Mengkueri data berdasarkan kombinasi alamat IP dan dimensi lainnya.

Gunakan fitur kueri komposit.

  • Kueri multi-dimensi: Kueri berdasarkan alamat IP dikombinasikan dengan dimensi waktu atau perilaku pengguna.

Menggunakan bidang tipe IP

Anda dapat menggunakan bidang tipe IP dengan Tablestore Java software development kit (SDK) dan Go SDK. Topik ini menggunakan Java SDK sebagai contoh. Pastikan Anda menggunakan versi 5.17.6 atau lebih baru dari Tablestore Java SDK.

Langkah 1: Buat indeks pencarian yang berisi tipe IP

Saat membuat indeks pencarian, petakan bidang String yang ingin digunakan untuk kueri IP ke tipe IP.

private static void createSearchIndex(SyncClient client) {
    CreateSearchIndexRequest request = new CreateSearchIndexRequest();
    request.setTableName(TABLE_NAME);
    request.setIndexName(INDEX_NAME);
    IndexSchema indexSchema = new IndexSchema();
    indexSchema.setFieldSchemas(Arrays.asList(
        new FieldSchema("Col_Keyword", FieldType.KEYWORD).setIndex(true).setEnableSortAndAgg(true),
        // Tetapkan indeks untuk kolom Col_Ip ke tipe IP.
        new FieldSchema("Col_Ip", FieldType.IP).setIndex(true).setEnableSortAndAgg(true)
    ));
    request.setIndexSchema(indexSchema);
    client.createSearchIndex(request);
}

Langkah 2: Tulis data IP ke tabel data

Tulis data alamat IP ke bidang yang telah dikonfigurasikan sebagai tipe IP.

private static void putRow(SyncClient client) {
    String[] keywords = { "Router", "Phone", "PC1", "PC2", "Home Bot" };
    for (int i = 0; i < 5; i++) {
        // Bangun kunci utama.
        PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
        primaryKeyBuilder.addPrimaryKeyColumn(PRIMARY_KEY_NAME_1, PrimaryKeyValue.fromString("pk1" + i));
        PrimaryKey primaryKey = primaryKeyBuilder.build();

        RowPutChange rowPutChange = new RowPutChange(TABLE_NAME, primaryKey);

        // Tambahkan kolom atribut.
        rowPutChange.addColumn("Col_Keyword", ColumnValue.fromString(keywords[i]));
        // Tambahkan kolom atribut dan tulis alamat IP.
        rowPutChange.addColumn("Col_Ip", ColumnValue.fromString("192.168.1." + i));
        client.putRow(new PutRowRequest(rowPutChange));
    }
}

Langkah 3: Verifikasi konfigurasi

  • Verifikasi kueri IP tepat

    /**
     * Untuk mengkueri alamat IP yang tepat, gunakan TermQuery.
     */
    private static void searchExactIp(SyncClient client) {
        SearchQuery searchQuery = new SearchQuery();
        TermQuery query = QueryBuilders.term("Col_Ip", "192.168.1.1").build();
        searchQuery.setQuery(query);
        searchQuery.setLimit(100);
        SearchRequest searchRequest = new SearchRequest(TABLE_NAME, INDEX_NAME, searchQuery);
        SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
        columnsToGet.setReturnAll(true);
        searchRequest.setColumnsToGet(columnsToGet);
        SearchResponse resp = client.search(searchRequest);
        System.out.println("TotalCount: " + resp.getTotalCount());
        System.out.println("Row: " + resp.getRows());
    }
  • Verifikasi kueri rentang IP

    /**
     * Untuk mengkueri rentang alamat IP, Anda dapat menggunakan notasi CIDR dalam TermQuery atau menggunakan RangeQuery.
     */
    private static void searchIpSegment(SyncClient client) {
        SearchQuery searchQuery = new SearchQuery();
        // Kueri untuk rentang IP menggunakan notasi CIDR.
        TermQuery query = QueryBuilders.term("Col_Ip", "192.168.1.1/24").build();
        // Sebagai alternatif, gunakan RangeQuery untuk mengkueri rentang IP.
        // RangeQuery query = QueryBuilders.range("Col_Ip").greaterThanOrEqual("192.168.1.0").lessThanOrEqual("192.168.1.255").build();
        searchQuery.setQuery(query);
        searchQuery.setLimit(100);
        SearchRequest searchRequest = new SearchRequest(TABLE_NAME, INDEX_NAME, searchQuery);
    
        SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
        columnsToGet.setReturnAll(true);
        searchRequest.setColumnsToGet(columnsToGet);
    
        SearchResponse resp = client.search(searchRequest);
        System.out.println("TotalCount: " + resp.getTotalCount());
        System.out.println("Row: " + resp.getRows());
    }

Penggunaan produksi

  • Rekomendasi kueri rentang

    Saat melakukan kueri rentang, kami merekomendasikan Anda menentukan batas atas dan bawah dari rentang alamat IP. Jika tabel data Anda berisi alamat IPv4 dan IPv6, kueri dengan hanya satu kondisi batas untuk alamat IPv4 mungkin mengembalikan alamat IPv6 yang tidak diinginkan.

  • Rekomendasi notasi CIDR

    Untuk kueri rentang IP, kami merekomendasikan menggunakan notasi CIDR, seperti 192.168.1.1/24. Metode ini lebih ringkas dan akurat daripada kueri rentang tradisional dan membantu mencegah kesalahan saat menetapkan kondisi batas.