All Products
Search
Document Center

Simple Log Service:Gunakan Simple Log Service SDK untuk C++ untuk menggunakan SQL Dedicated

Last Updated:Jul 06, 2025

Topik ini menjelaskan cara menggunakan Simple Log Service SDK untuk C++ untuk memanfaatkan fitur SQL Dedicated.

Prasyarat

  • Pengguna Resource Access Management (RAM) telah dibuat, dan izin yang diperlukan telah diberikan kepada pengguna RAM. Untuk informasi lebih lanjut, lihat Buat Pengguna RAM dan Berikan Izin kepada Pengguna RAM.

  • Variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah dikonfigurasi. Untuk informasi lebih lanjut, lihat Konfigurasikan Variabel Lingkungan di Linux, macOS, dan Windows.

    Penting
    • Pasangan AccessKey dari akun Alibaba Cloud memiliki izin untuk semua operasi API. Kami menyarankan Anda menggunakan pasangan AccessKey dari pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.

    • Kami menyarankan Anda untuk tidak menyimpan ID AccessKey atau Rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor, dan keamanan semua sumber daya dalam akun Anda mungkin terganggu.

  • Simple Log Service SDK untuk C++ versi terbaru telah diinstal. Untuk informasi lebih lanjut, lihat Alibaba Cloud Simple Log Service SDK untuk C++.

Informasi latar belakang

Simple Log Service menyediakan fitur SQL Dedicated untuk meningkatkan kemampuan analisis SQL. Anda dapat menggunakan fitur ini untuk memproses ratusan miliar baris data. Untuk informasi lebih lanjut, lihat Aktifkan SQL Dedicated.

Simple Log Service menyediakan operasi ExecuteLogStoreSql dan ExecuteProjectSql. Anda dapat memanggil operasi ini untuk menggunakan fitur SQL Dedicated secara efisien.

  • ExecuteLogStoreSql: menggunakan fitur SQL Dedicated di Logstore tertentu. Operasi ini mendukung sintaksis SQL-92. Pernyataan kueri berada dalam format Pernyataan Pencarian|Pernyataan Analitik, dan pernyataan analitik mengikuti sintaksis SQL-92 standar.

  • ExecuteProjectSql: menggunakan fitur SQL Dedicated di proyek tertentu. Operasi ini mendukung sintaksis SQL-92. Anda harus menentukan kondisi filter dan rentang waktu dalam klausa WHERE dari pernyataan SQL.

Catatan

Jika Anda ingin menyaring data sebelum menganalisis data, kami sarankan Anda memanggil operasi ExecuteLogStoreSql dan menentukan pernyataan kueri dalam format Pernyataan Pencarian|Pernyataan Analitik. Ini meningkatkan efisiensi analisis.

Contoh kode

Berikut adalah contoh kode yang menunjukkan cara menggunakan fitur SQL Dedicated. Untuk informasi lebih lanjut, lihat Alibaba Cloud Simple Log Service SDK untuk C++.

#include <cstdlib>

// Titik akhir Simple Log Service. Dalam contoh ini, titik akhir Simple Log Service untuk wilayah China (Hangzhou) digunakan. Ganti nilai parameter dengan titik akhir sebenarnya. 
std::string endpoint = "cn-hangzhou.log.aliyuncs.com";
// Konfigurasikan variabel lingkungan. Dalam contoh ini, ID AccessKey dan Rahasia AccessKey diperoleh dari variabel lingkungan. 
string accessId = (string)getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
string accessKey = (string)getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
// Nama proyek. 
std::string project = "nama_proyek_anda";
// Nama Logstore. 
std::string logStore = "your_logstore";

// Buat klien Simple Log Service. 
LOGClient client(endpoint, accessId, accessKey);

// Jalankan pernyataan SQL di Logstore yang ditentukan. 
try
{
    std::string sql = "* | select count(1)";
    int from = time(NULL) - 600;
    int to = from + 600;
    LogStoreSqlResponse logsResponse = client.ExecuteLogStoreSql(project, logStore,
                                                                 1627268185,1627269085,"* | SELECT count(*)",true);
    // Cetak statistik hasil analisis. 
    std::cout << "Hasil sql yang dikembalikan:" << std::endl
              << "jumlah:" << logsResponse.result.logline << std::endl          // Jumlah baris data log yang dikembalikan dalam hasil analisis. 
              << "baris diproses:" << logsResponse.processedRows << std::endl  // Jumlah baris data log yang diproses. 
              << "waktu habis (ms):" << logsResponse.elapsedMilli << std::endl    // Waktu yang diperlukan untuk menjalankan pernyataan SQL. 
              << "cpu detik:" << logsResponse.cpuSec << std::endl                // Waktu CPU yang dikonsumsi untuk menjalankan pernyataan SQL setelah fitur SQL Dedicated diaktifkan. Unit: detik. Anda akan dikenakan biaya atas waktu CPU yang dikonsumsi saat menggunakan fitur SQL Dedicated untuk melakukan operasi kueri dan analisis. Untuk informasi lebih lanjut, lihat Item yang dapat ditagih. 
              << "inti cpu:" << logsResponse.cpuCore << std::endl;             // Jumlah inti CPU yang digunakan untuk menjalankan pernyataan SQL setelah fitur SQL Dedicated diaktifkan. 
    for (std::vector<LogItem>::const_iterator itr = logsResponse.result.logdatas.begin();
         itr != logsResponse.result.logdatas.end(); ++itr)
    {
        const LogItem &item = *itr;
        for (std::vector<std::pair<std::string, std::string>>::const_iterator itr_data = item.data.begin();
             itr_data != item.data.end(); ++itr_data)
        {
            std::cout << itr_data->first << ":" << itr_data->second;
        }
    }
}
catch (LOGException &e)
{
    std::cout << "kode kesalahan :" << e.GetErrorCode() << std::endl;
    std::cout << "pesan kesalahan :" << e.GetMessage() << std::endl;
    throw e;
}

// Jalankan pernyataan SQL di proyek yang ditentukan. 
try
{
    int now = time(NULL);
    std::string sql = "select count(1) as cnt from xxx where __time__ > " + to_string(now);
    ProjectSqlResponse logsResponse = client.ExecuteProjectSql(project,"select avg(latency),max(latency) ,count(1) as c from sample-logstore where status>200 and __time__>=1500975424 and __time__ < 1501035044 GROUP BY method ORDER BY c",true);
    
    // Cetak statistik hasil analisis. 
    std::cout << "Hasil sql yang dikembalikan:" << std::endl       
              << "jumlah:" << logsResponse.result.logline << std::endl          // Jumlah baris data log yang dikembalikan dalam hasil analisis. 
              << "baris diproses:" << logsResponse.processedRows << std::endl  // Jumlah baris data log yang diproses. 
              << "waktu habis (ms):" << logsResponse.elapsedMilli << std::endl    // Waktu yang diperlukan untuk menjalankan pernyataan SQL. 
              << "cpu detik:" << logsResponse.cpuSec << std::endl                // Waktu CPU yang dikonsumsi untuk menjalankan pernyataan SQL setelah fitur SQL Dedicated diaktifkan. Unit: detik. Anda akan dikenakan biaya atas waktu CPU yang dikonsumsi saat menggunakan fitur SQL Dedicated untuk melakukan operasi kueri dan analisis. Untuk informasi lebih lanjut, lihat Item yang dapat ditagih. 
              << "inti cpu:" << logsResponse.cpuCore << std::endl;             // Jumlah inti CPU yang digunakan untuk menjalankan pernyataan SQL setelah fitur SQL Dedicated diaktifkan. 
    for (std::vector<LogItem>::const_iterator itr = logsResponse.result.logdatas.begin(); itr != logsResponse.result.logdatas.end(); ++itr)
    {
        const LogItem &item = *itr;
        for (std::vector<std::pair<std::string, std::string>>::const_iterator itr_data = item.data.begin();
             itr_data != item.data.end(); ++itr_data)
        {
            std::cout << itr_data->first << ":" << itr_data->second;
        }
    }
}
catch (LOGException &e)
{
    std::cout << "kode kesalahan :" << e.GetErrorCode() << std::endl;
    std::cout << "pesan kesalahan :" << e.GetMessage() << std::endl;
    throw e;
}
  • Operasi ExecuteLogStoreSql

    Anda dapat memanggil operasi ExecuteLogStoreSql untuk menggunakan fitur SQL Dedicated. Permintaan harus dalam format LogStoreSqlResponse logsResponse = client.ExecuteLogStoreSql(project, logStore, from, to, query, powerSql). Tabel berikut menjelaskan parameter permintaan.

    Parameter

    Tipe

    Diperlukan

    Contoh

    Deskripsi

    project

    String

    Ya

    N/A

    Nama proyek.

    Saat membuat klien Simple Log Service, Anda harus menentukan nilai untuk parameter project. Oleh karena itu, Anda tidak perlu mengonfigurasi parameter ini lagi.

    logStore

    String

    Ya

    N/A

    Nama Logstore.

    Saat membuat klien Simple Log Service, Anda harus menentukan nilai untuk parameter logStore. Oleh karena itu, Anda tidak perlu mengonfigurasi parameter ini lagi.

    from

    Long

    Ya

    1.627.268.185

    Awal rentang waktu untuk kueri. Nilainya adalah timestamp yang mengikuti format waktu UNIX. Ini adalah jumlah detik yang telah berlalu sejak 00:00:00 UTC, Kamis, 1 Januari 1970.

    to

    Long

    Ya

    1.627.269.085

    Akhir rentang waktu untuk kueri. Nilainya adalah timestamp yang mengikuti format waktu UNIX. Ini adalah jumlah detik yang telah berlalu sejak 00:00:00 UTC, Kamis, 1 Januari 1970.

    query

    String

    Ya

    "* | SELECT count(*)"

    Pernyataan kueri. Format: Pernyataan Pencarian|Pernyataan Analitik. Untuk informasi lebih lanjut, lihat Sintaksis.

    Secara default, Simple Log Service mengembalikan 100 baris data. Anda dapat menggunakan klausa LIMIT untuk menentukan jumlah baris data yang akan dikembalikan. Untuk informasi lebih lanjut, lihat Klausa LIMIT.

    powerSql

    Boolean

    Tidak

    true

    Menentukan apakah akan menggunakan SQL Dedicated. Untuk informasi lebih lanjut, lihat Aktifkan SQL Dedicated. Nilai valid:

    • true: menggunakan SQL Dedicated.

    • false (default): menggunakan SQL Standar.

  • Operasi ExecuteProjectSql

    Anda dapat memanggil operasi ExecuteProjectSql untuk menggunakan fitur SQL Dedicated. Permintaan harus dalam format ProjectSqlResponse logsResponse = client.ExecuteProjectSql(project, query, powerSql). Tabel berikut menjelaskan parameter permintaan.

    Parameter

    Tipe

    Diperlukan

    Contoh

    Deskripsi

    project

    String

    Ya

    N/A

    Nama proyek.

    Saat membuat klien Simple Log Service, Anda harus menentukan nilai untuk parameter project. Oleh karena itu, Anda tidak perlu mengonfigurasi parameter ini lagi.

    query

    String

    Ya

    "select avg(latency),max(latency) ,count(1) as c from sample-logstore where status>200 and __time__>=1500975424 and __time__ < 1501035044 GROUP BY method ORDER BY c"

    Pernyataan SQL di mana kondisi filter dan rentang waktu harus ditentukan dalam klausa WHERE.

    Secara default, Simple Log Service mengembalikan 100 baris data. Anda dapat menggunakan klausa LIMIT untuk menentukan jumlah baris data yang akan dikembalikan. Untuk informasi lebih lanjut, lihat Klausa LIMIT.

    powerSql

    Boolean

    Tidak

    true

    Menentukan apakah akan menggunakan SQL Dedicated. Untuk informasi lebih lanjut, lihat Aktifkan SQL Dedicated. Nilai valid:

    • true: menggunakan SQL Dedicated.

    • false (default): menggunakan SQL Standar.