Scalar retrieval adalah fitur Object Storage Service (OSS) yang mengindeks metadata objek. Anda dapat menggunakan kondisi kustom untuk memfilter dan mengambil daftar objek dengan cepat. Fitur ini membantu Anda mengelola serta memahami struktur data lebih baik, menyederhanakan kueri lanjutan, analisis statistik, dan manajemen objek.
Skenario
Audit data
Pengambilan skalar memungkinkan Anda menemukan file secara cepat untuk memenuhi kebutuhan audit data atau persyaratan regulasi. Sebagai contoh, dalam industri jasa keuangan, Anda dapat menyaring file berdasarkan metadata seperti tag kustom dan izin akses. Hal ini membantu Anda menemukan file dengan tingkat sensitivitas atau izin tertentu, meningkatkan efisiensi audit data.
Cadangan data perusahaan dan pengarsipan
Saat mencadangkan dan mengarsipkan data perusahaan, Anda dapat menggunakan pengambilan skalar untuk mengambil file dari tanggal atau jenis tertentu dengan cepat. Anda dapat menyaring berdasarkan metadata seperti waktu pembuatan, kelas penyimpanan, atau tag kustom. Ini memungkinkan Anda memulihkan data historis atau catatan yang telah diarsipkan dengan cepat.
Batasan
Batasan Wilayah
Fitur pengambilan skalar tersedia untuk bucket di wilayah China (Hangzhou), China (Shanghai), China (Qingdao), China (Beijing), China (Zhangjiakou), China (Shenzhen), China (Guangzhou), China (Chengdu), China (Ulanqab), China (Hong Kong), Singapura, Indonesia (Jakarta), Jerman (Frankfurt), AS (Virginia), AS (Silicon Valley), dan Inggris (London).
Batasan Bucket
Bucket dengan fitur pengambilan skalar yang diaktifkan dapat menampung hingga 50 miliar file. Jika jumlah file dalam bucket melebihi batas tersebut, kinerja pengambilan data mungkin menurun. Untuk memproses data berskala lebih besar, hubungi Technical Support guna evaluasi lebih lanjut.
Unggah Multi-bagian
Untuk objek yang dibuat menggunakan unggah multi-bagian, hasil kueri hanya menampilkan objek lengkap yang dirakit dari bagian-bagian menggunakan operasi CompleteMultipartUpload. Bagian-bagian yang diinisialisasi tetapi tidak diselesaikan atau dibatalkan tidak termasuk dalam hasil.
Referensi Performa
Metrik performa berikut untuk mode pengambilan skalar OSS hanya untuk referensi.
Referensi untuk Waktu Pembuatan Indeks File yang Ada
100 juta file dalam satu bucket: 4 jam
1 miliar file dalam satu bucket: sekitar 10 jam
10 miliar file dalam satu bucket: sekitar 1 hingga 3 hari
20 miliar file dalam satu bucket: sekitar 2 hingga 4 hari
30 miliar file dalam satu bucket: sekitar 3 hingga 6 hari
50 miliar file dalam satu bucket: sekitar 6 hingga 10 hari
Jika bucket Anda berisi lebih dari 1 miliar file dan file-file tersebut memiliki tag, pembuatan indeks memerlukan waktu lebih lama daripada waktu yang tercantum di atas.
Referensi untuk Waktu Pembaruan Indeks File Tambahan
Secara default, OSS menyediakan tambahan 5.000 permintaan per detik (QPS) untuk mode pengambilan skalar. Ini berarti OSS dapat memproses 5.000 permintaan pembaruan indeks file per detik. QPS ini tidak memengaruhi Quality of Service (QoS) bucket Anda. Jika QPS untuk penambahan, modifikasi, atau penghapusan di bucket kurang dari default 5.000, latensi dari waktu file diunggah atau dimodifikasi hingga file dapat diambil biasanya beberapa menit. Jika QPS melebihi default 5.000, hubungi Technical Support. Kami akan mengevaluasi situasi Anda dan memberikan bantuan teknis.
Performa Tanggapan Pengambilan File
Hasil pengambilan dikembalikan dalam hitungan detik. Waktu habis default adalah 30 detik.
Aktifkan pengambilan skalar
Gunakan Konsol OSS
Untuk bucket di wilayah Cina (Hangzhou), Cina (Shanghai), Cina (Qingdao), Cina (Beijing), Cina (Zhangjiakou), Cina (Shenzhen), Cina (Guangzhou), Cina (Chengdu), Cina (Hong Kong), Singapura, Indonesia (Jakarta), dan Jerman (Frankfurt)
Masuk ke Konsol OSS.
Di panel navigasi sebelah kiri, klik Buckets. Pada halaman Buckets, temukan dan klik bucket yang diinginkan.
Di panel navigasi sebelah kiri, pilih .
Pada halaman Data Indexing, jika Anda menggunakan fitur pengindeksan data untuk pertama kalinya, ikuti petunjuk untuk memberikan izin kepada peran AliyunMetaQueryDefaultRole. Ini memungkinkan layanan OSS mengelola data di bucket Anda. Setelah memberikan izin, klik Enable Data Indexing.
Pilih Scalar Retrieval, lalu klik Enable.
CatatanMengaktifkan pengambilan skalar memerlukan waktu. Durasi tepatnya tergantung pada jumlah objek dalam bucket.
Untuk bucket di wilayah Inggris (London), Cina (Ulanqab), AS (Virginia), dan AS (Silicon Valley)
Masuk ke Konsol OSS.
Di panel navigasi sebelah kiri, klik Buckets. Pada halaman Buckets, temukan dan klik bucket yang diinginkan.
Di panel navigasi sebelah kiri, pilih . Jika Anda menggunakan fitur pengindeksan data untuk pertama kalinya, ikuti petunjuk untuk memberikan izin kepada peran AliyunMetaQueryDefaultRole. Ini memungkinkan layanan OSS mengelola data di bucket Anda.
Aktifkan Metadata Management.
CatatanMengaktifkan manajemen metadata memerlukan waktu. Durasi tepatnya tergantung pada jumlah objek dalam bucket.
Gunakan SDK Alibaba Cloud
Sebelum menggunakan fitur pengambilan skalar, Anda harus mengaktifkan fitur Manajemen Metadata untuk bucket tertentu. Contoh berikut menyediakan ilustrasi.
Java
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.MetaQueryMode;
public class OpenMetaQuery {
public static void main(String[] args) throws com.aliyuncs.exceptions.ClientException {
// Dalam contoh ini, endpoint dari wilayah Cina (Hangzhou) digunakan.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan nama bucket. Contoh: examplebucket.
String bucketName = "examplebucket";
// Dapatkan kredensial akses dari variabel lingkungan.
// Sebelum menjalankan kode sampel, pastikan bahwa variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Cina (Hangzhou), atur wilayah menjadi cn-hangzhou.
String region = "cn-hangzhou";
// Buat instance OSSClient.
// Panggil metode shutdown untuk melepaskan sumber daya terkait ketika instance OSSClient tidak lagi digunakan.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Aktifkan fitur MetaSearch.
ossClient.openMetaQuery(bucketName);
} catch (OSSException oe) {
System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
System.out.println("Kode Kesalahan:" + oe.getErrorCode());
System.out.println("ID Permintaan:" + oe.getRequestId());
System.out.println("ID Host:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Pesan Kesalahan: " + ce.getMessage());
} finally {
// Matikan instance OSSClient.
if(ossClient != null){
ossClient.shutdown();
}
}
}
}
Python
import argparse
import alibabacloud_oss_v2 as oss
# Buat parser parameter baris perintah dan tambahkan deskripsi.
parser = argparse.ArgumentParser(description="contoh open meta query")
# Tambahkan parameter baris perintah --region yang diperlukan, yang menentukan wilayah tempat bucket berada.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
# Tambahkan parameter baris perintah --bucket yang diperlukan, yang menentukan nama bucket untuk dioperasikan.
parser.add_argument('--bucket', help='Nama bucket.', required=True)
# Tambahkan parameter baris perintah --endpoint opsional, yang menentukan nama domain untuk digunakan saat mengakses OSS.
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')
def main():
# Parsing argumen baris perintah.
args = parser.parse_args()
# Muat informasi otentikasi dari variabel lingkungan.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Gunakan konfigurasi default yang disediakan oleh SDK.
cfg = oss.config.load_default()
# Atur penyedia informasi otentikasi.
cfg.credentials_provider = credentials_provider
# Atur wilayah berdasarkan argumen baris perintah.
cfg.region = args.region
# Jika endpoint diberikan, perbarui endpoint dalam konfigurasi.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Buat klien OSS.
client = oss.Client(cfg)
# Mulai permintaan untuk mengaktifkan meta query.
result = client.open_meta_query(oss.OpenMetaQueryRequest(
bucket=args.bucket,
))
# Cetak kode status dan ID permintaan dari permintaan.
print(f'kode status: {result.status_code},'
f' ID permintaan: {result.request_id},'
)
# Panggil fungsi utama saat dijalankan sebagai program utama.
if __name__ == "__main__":
main()
Go
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
var (
region string // Definisikan variabel untuk menyimpan informasi wilayah yang diperoleh dari baris perintah.
bucketName string // Definisikan variabel untuk menyimpan nama bucket yang diperoleh dari baris perintah.
)
// Fungsi init dieksekusi sebelum fungsi utama untuk menginisialisasi program.
func init() {
// Tetapkan parameter baris perintah untuk menentukan wilayah.
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
// Tetapkan parameter baris perintah untuk menentukan nama bucket.
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
flag.Parse() // Parsing parameter baris perintah.
// Periksa apakah nama bucket diberikan. Jika tidak, program mencetak parameter default dan keluar.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket diperlukan") // Log kesalahan dan hentikan program.
}
// Periksa apakah wilayah diberikan. Jika tidak, program mencetak parameter default dan keluar.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah diperlukan") // Log kesalahan dan hentikan program.
}
// Buat konfigurasi klien dan gunakan variabel lingkungan sebagai penyedia kredensial.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg) // Gunakan konfigurasi untuk membuat instance klien OSS.
// Buat permintaan OpenMetaQuery untuk mengaktifkan fitur manajemen metadata untuk bucket tertentu.
request := &oss.OpenMetaQueryRequest{
Bucket: oss.Ptr(bucketName), // Tentukan nama bucket untuk dioperasikan.
}
result, err := client.OpenMetaQuery(context.TODO(), request) // Eksekusi permintaan untuk mengaktifkan fitur manajemen metadata untuk bucket.
if err != nil {
log.Fatalf("gagal membuka meta query %v", err) // Jika terjadi kesalahan, log pesan kesalahan dan hentikan program.
}
log.Printf("hasil pembukaan meta query:%#v\n", result) // Cetak hasil pengaktifan manajemen metadata.
}PHP
<?php
// Impor file autoloader untuk memastikan bahwa library dependensi dapat dimuat dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Definisikan deskripsi argumen baris perintah.
$optsdesc = [
"region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah tempat bucket berada. Parameter ini wajib.
"endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Endpoint yang dapat digunakan layanan lain untuk mengakses OSS. Parameter ini opsional.
"bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket. Parameter ini wajib.
];
// Konversikan deskripsi argumen ke format opsi panjang yang diperlukan oleh getopt.
// Tanda titik dua (:) setelah setiap argumen menunjukkan bahwa argumen tersebut memerlukan nilai.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Parsing argumen baris perintah.
$options = getopt("", $longopts);
// Periksa apakah argumen yang diperlukan telah ditentukan.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan dari argumen.
echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
exit(1); // Jika argumen yang diperlukan tidak ditentukan, keluar dari program.
}
}
// Ekstrak nilai dari argumen yang telah diparsing.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
// Muat informasi kredensial dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk membaca Access Key ID dan Access Key Secret dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Atur penyedia kredensial.
$cfg->setRegion($region); // Atur wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Jika endpoint diberikan, atur endpoint.
}
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Buat objek OpenMetaQueryRequest untuk mengaktifkan fitur pengambilan skalar untuk bucket.
$request = new Oss\Models\OpenMetaQueryRequest(
bucket: $bucket
);
// Eksekusi operasi untuk mengaktifkan fitur pengambilan skalar.
$result = $client->openMetaQuery($request);
// Cetak hasil pengaktifan fitur pengambilan skalar.
printf(
'kode status:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, 200 menunjukkan bahwa permintaan berhasil.
'ID permintaan:' . $result->requestId . PHP_EOL // ID permintaan, yang digunakan untuk debugging atau melacak permintaan.
);
Gunakan ossutil
Contoh berikut menunjukkan cara mengaktifkan fitur manajemen metadata untuk bucket bernama examplebucket.
ossutil api open-meta-query --bucket examplebucketUntuk informasi lebih lanjut tentang perintah ini, lihat open-meta-query.
Mulai kueri pengambilan skalar
Gunakan Konsol OSS
Contoh berikut menunjukkan cara menemukan semua file yang lebih kecil dari 500 KB dan terakhir diperbarui antara pukul 00:00 pada 11 September 2024, dan pukul 00:00 pada 12 September 2024. Output diurutkan berdasarkan ukuran file secara urutan naik, dan ukuran file maksimum dihitung.
Masuk ke Konsol OSS.
Di panel navigasi di sebelah kiri, klik Buckets. Di halaman Buckets, temukan dan klik bucket yang diinginkan.
Di panel navigasi di sebelah kiri, pilih .
Konfigurasikan parameter berikut dan pertahankan pengaturan default untuk parameter lainnya.
Atur Last Modified Time ke rentang dari pukul 00:00 pada 11 September 2024, hingga pukul 00:00 pada 12 September 2024.
Atur File Size menjadi kurang dari 500 KB.
Klik Expand More Filter Conditions.
Untuk Object Sorting Method, pilih File Size dan Ascending.
Untuk Data Aggregation, pilih File Size dan Max.

Klik Query. Dua file memenuhi kondisi kueri. Seperti yang ditunjukkan pada gambar berikut, ukuran file maksimum adalah 434 KB.

Untuk informasi lebih lanjut tentang semua kondisi kueri dan pengaturan output, lihat Query conditions and output settings.
Gunakan Alibaba Cloud SDK
Kode berikut menunjukkan cara menggunakan fitur pengambilan skalar untuk kueri objek yang memenuhi kondisi tertentu.
Java
Untuk lebih banyak contoh kode, lihat Pengambilan skalar (Java SDK).
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.util.ArrayList;
import java.util.List;
public class DoMetaQuery {
public static void main(String[] args) throws Exception {
// Dalam contoh ini, endpoint wilayah China (Hangzhou) digunakan.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan nama bucket. Contoh: examplebucket.
String bucketName = "examplebucket";
// Dapatkan kredensial akses dari variabel lingkungan.
// Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
String region = "cn-hangzhou";
// Buat instance OSSClient.
// Panggil metode shutdown untuk melepaskan sumber daya terkait ketika instance OSSClient tidak lagi digunakan.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Kueri objek yang memenuhi kondisi tertentu dan kembalikan objek berdasarkan bidang tertentu dan dalam urutan pengurutan yang ditentukan.
int maxResults = 20;
// Kueri objek yang lebih kecil dari 1.048.576 byte, kembalikan hingga 20 objek sekaligus, dan urutkan objek dalam urutan naik.
String query = "{\"Field\": \"Size\",\"Value\": \"1048576\",\"Operation\": \"lt\"}";
String sort = "Size";
DoMetaQueryRequest doMetaQueryRequest = new DoMetaQueryRequest(bucketName, maxResults, query, sort);
Aggregation aggregationRequest = new Aggregation();
Aggregations aggregations = new Aggregations();
List<Aggregation> aggregationList = new ArrayList<Aggregation>();
// Tentukan nama bidang yang digunakan dalam operasi agregasi.
aggregationRequest.setField("Size");
// Tentukan operator yang digunakan dalam operasi agregasi. max menunjukkan nilai maksimum.
aggregationRequest.setOperation("max");
aggregationList.add(aggregationRequest);
aggregations.setAggregation(aggregationList);
// Tentukan operasi agregasi.
doMetaQueryRequest.setAggregations(aggregations);
doMetaQueryRequest.setOrder(SortOrder.ASC);
DoMetaQueryResult doMetaQueryResult = ossClient.doMetaQuery(doMetaQueryRequest);
if(doMetaQueryResult.getFiles() != null){
for(ObjectFile file : doMetaQueryResult.getFiles().getFile()){
System.out.println("Nama File: " + file.getFilename());
// Kueri nilai ETag yang digunakan untuk mengidentifikasi konten objek.
System.out.println("ETag: " + file.getETag());
// Kueri daftar kontrol akses (ACL) objek.
System.out.println("ObjectACL: " + file.getObjectACL());
// Kueri tipe objek.
System.out.println("OssObjectType: " + file.getOssObjectType());
// Kueri kelas penyimpanan objek.
System.out.println("OssStorageClass: " + file.getOssStorageClass());
// Kueri jumlah tag objek.
System.out.println("TaggingCount: " + file.getOssTaggingCount());
if(file.getOssTagging() != null){
for(Tagging tag : file.getOssTagging().getTagging()){
System.out.println("Key: " + tag.getKey());
System.out.println("Value: " + tag.getValue());
}
}
if(file.getOssUserMeta() != null){
for(UserMeta meta : file.getOssUserMeta().getUserMeta()){
System.out.println("Key: " + meta.getKey());
System.out.println("Value: " + meta.getValue());
}
}
}
} else if(doMetaQueryResult.getAggregations() != null){
for(Aggregation aggre : doMetaQueryResult.getAggregations().getAggregation()){
// Kueri bidang yang digunakan untuk agregasi.
System.out.println("Field: " + aggre.getField());
// Kueri operator agregasi.
System.out.println("Operation: " + aggre.getOperation());
// Kueri hasil operasi agregasi.
System.out.println("Value: " + aggre.getValue());
if(aggre.getGroups() != null && aggre.getGroups().getGroup().size() > 0){
// Kueri nilai agregasi.
System.out.println("Nilai Grup: " + aggre.getGroups().getGroup().get(0).getValue());
// Kueri jumlah total agregasi.
System.out.println("Jumlah Grup: " + aggre.getGroups().getGroup().get(0).getCount());
}
}
} else {
System.out.println("NextToken: " + doMetaQueryResult.getNextToken());
}
} catch (OSSException oe) {
System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
System.out.println("Kode Kesalahan:" + oe.getErrorCode());
System.out.println("ID Permintaan:" + oe.getRequestId());
System.out.println("ID Host:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Pesan Kesalahan: " + ce.getMessage());
} finally {
// Matikan instance OSSClient.
ossClient.shutdown();
}
}
}
Python
Untuk lebih banyak contoh kode, lihat Pengambilan skalar.
import argparse
import alibabacloud_oss_v2 as oss
# Buat parser parameter baris perintah untuk menerima parameter input pengguna.
parser = argparse.ArgumentParser(description="do meta query sample")
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')
def main():
# Parse argumen baris perintah.
args = parser.parse_args()
# Muat informasi otentikasi dari variabel lingkungan.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Gunakan konfigurasi default SDK.
cfg = oss.config.load_default()
# Setel penyedia otentikasi.
cfg.credentials_provider = credentials_provider
# Setel wilayah berdasarkan parameter input.
cfg.region = args.region
# Jika endpoint disediakan, perbarui endpoint dalam konfigurasi.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Buat klien OSS.
client = oss.Client(cfg)
# Jalankan operasi kueri meta.
result = client.do_meta_query(oss.DoMetaQueryRequest(
bucket=args.bucket, # Tentukan bucket untuk dikueri.
meta_query=oss.MetaQuery( # Definisikan isi spesifik dari kueri.
aggregations=oss.MetaQueryAggregations( # Definisikan operasi agregasi.
aggregations=[ # Daftar agregasi.
oss.MetaQueryAggregation( # Agregasi pertama: hitung total ukuran.
field='Size',
operation='sum',
),
oss.MetaQueryAggregation( # Agregasi kedua: temukan nilai maksimum.
field='Size',
operation='max',
)
],
),
next_token='', # Token paginasi.
max_results=80369, # Jumlah maksimum hasil yang akan dikembalikan.
query='{"Field": "Size","Value": "1048576","Operation": "gt"}', # Kondisi kueri.
sort='Size', # Bidang pengurutan.
order=oss.MetaQueryOrderType.DESC, # Urutan pengurutan.
),
))
# Keluarkan informasi dasar dari hasil kueri.
print(f'kode status: {result.status_code},'
f' ID permintaan: {result.request_id},'
# Bagian yang dikomentari berikut dapat diaktifkan sesuai kebutuhan untuk mendapatkan informasi lebih rinci.
# f' file: {result.files},'
# f' file: {result.files.file},'
# f' waktu modifikasi file: {result.files.file.file_modified_time},'
# f' etag: {result.files.file.etag},'
# f' enkripsi sisi server: {result.files.file.server_side_encryption},'
# f' jumlah tagging OSS: {result.files.file.oss_tagging_count},'
# f' tagging OSS: {result.files.file.oss_tagging},'
# f' key: {result.files.file.oss_tagging.taggings[0].key},'
# f' value: {result.files.file.oss_tagging.taggings[0].value},'
# f' key: {result.files.file.oss_tagging.taggings[1].key},'
# f' value: {result.files.file.oss_tagging.taggings[1].value},'
# f' metadata pengguna OSS: {result.files.file.oss_user_meta},'
# f' key: {result.files.file.oss_user_meta.user_metas[0].key},'
# f' value: {result.files.file.oss_user_meta.user_metas[0].value},'
# f' key: {result.files.file.oss_user_meta.user_metas[1].key},'
# f' value: {result.files.file.oss_user_meta.user_metas[1].value},'
# f' nama file: {result.files.file.filename},'
# f' ukuran: {result.files.file.size},'
# f' jenis objek OSS: {result.files.file.oss_object_type},'
# f' kelas penyimpanan OSS: {result.files.file.oss_storage_class},'
# f' ACL objek: {result.files.file.object_acl},'
# f' CRC64 OSS: {result.files.file.oss_crc64},'
# f' algoritma enkripsi sisi server pelanggan: {result.files.file.server_side_encryption_customer_algorithm},'
# f' agregasi: {result.aggregations},'
f' bidang: {result.aggregations.aggregations[0].field},'
f' operasi: {result.aggregations.aggregations[0].operation},'
f' bidang: {result.aggregations.aggregations[1].field},'
f' operasi: {result.aggregations.aggregations[1].operation},'
f' token berikutnya: {result.next_token},'
)
# Jika informasi file ada, cetak tag dan metadata yang ditentukan pengguna.
if result.files:
if result.files.file.oss_tagging.taggings:
for r in result.files.file.oss_tagging.taggings:
print(f'hasil: key: {r.key}, value: {r.value}')
if result.files.file.oss_user_meta.user_metas:
for r in result.files.file.oss_user_meta.user_metas:
print(f'hasil: key: {r.key}, value: {r.value}')
# Cetak hasil semua agregasi.
if result.aggregations.aggregations:
for r in result.aggregations.aggregations:
print(f'hasil: bidang: {r.field}, operasi: {r.operation}')
if __name__ == "__main__":
main()
Go
Untuk lebih banyak contoh kode, lihat Pengambilan skalar (Go SDK V2).
package main
import (
"context"
"flag"
"fmt"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
var (
region string // Definisikan variabel untuk menyimpan informasi wilayah yang diperoleh dari baris perintah.
bucketName string // Definisikan variabel untuk menyimpan nama bucket yang diperoleh dari baris perintah.
)
// Fungsi init dieksekusi sebelum fungsi utama untuk menginisialisasi program.
func init() {
// Setel parameter baris perintah untuk menentukan wilayah. Nilai default adalah string kosong.
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
// Setel parameter baris perintah untuk menentukan nama bucket. Nilai default adalah string kosong.
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
flag.Parse() // Parse parameter baris perintah.
// Periksa apakah nama bucket disediakan. Jika tidak, program mengeluarkan parameter default dan keluar.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket diperlukan")
}
// Periksa apakah wilayah disediakan. Jika tidak, program mengeluarkan parameter default dan keluar.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah diperlukan")
}
// Buat konfigurasi klien dan gunakan variabel lingkungan sebagai penyedia kredensial dan wilayah yang ditentukan.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg) // Gunakan konfigurasi untuk membuat instance klien OSS.
// Buat permintaan DoMetaQuery untuk mengkueri objek yang memenuhi kondisi tertentu.
request := &oss.DoMetaQueryRequest{
Bucket: oss.Ptr(bucketName), // Tentukan nama bucket untuk dikueri.
MetaQuery: &oss.MetaQuery{
Query: oss.Ptr(`{"Field": "Size","Value": "1048576","Operation": "gt"}`), // Kondisi kueri: objek yang lebih besar dari 1 MB.
Sort: oss.Ptr("Size"), // Bidang pengurutan: urutkan berdasarkan ukuran objek.
Order: oss.Ptr(oss.MetaQueryOrderAsc), // Urutan pengurutan: naik.
},
}
result, err := client.DoMetaQuery(context.TODO(), request) // Kirim permintaan untuk melakukan kueri metadata.
if err != nil {
log.Fatalf("gagal melakukan kueri meta %v", err)
}
// Cetak NextToken, yang digunakan untuk kueri berhalaman untuk mengambil data dari halaman berikutnya.
fmt.Printf("NextToken:%s\n", *result.NextToken)
// Iterasi hasil yang dikembalikan dan cetak detail setiap file.
for _, file := range result.Files {
fmt.Printf("Nama File: %s\n", *file.Filename)
fmt.Printf("ukuran: %d\n", file.Size)
fmt.Printf("Waktu Modifikasi File:%s\n", *file.FileModifiedTime)
fmt.Printf("Jenis Objek OSS:%s\n", *file.OSSObjectType)
fmt.Printf("Kelas Penyimpanan OSS:%s\n", *file.OSSStorageClass)
fmt.Printf("ACL Objek:%s\n", *file.ObjectACL)
fmt.Printf("ETag:%s\n", *file.ETag)
fmt.Printf("CRC64 OSS:%s\n", *file.OSSCRC64)
if file.OSSTaggingCount != nil {
fmt.Printf("Jumlah Tagging OSS:%d\n", *file.OSSTaggingCount)
}
// Cetak informasi tag objek.
for _, tagging := range file.OSSTagging {
fmt.Printf("Kunci Tagging OSS:%s\n", *tagging.Key)
fmt.Printf("Nilai Tagging OSS:%s\n", *tagging.Value)
}
// Cetak metadata yang ditentukan pengguna.
for _, userMeta := range file.OSSUserMeta {
fmt.Printf("Kunci Metadata Pengguna OSS:%s\n", *userMeta.Key)
fmt.Printf("Nilai Kunci Metadata Pengguna OSS:%s\n", *userMeta.Value)
}
}
}
PHP
Untuk lebih banyak contoh kode, lihat Pengambilan skalar (PHP SDK V2).
<?php
// Impor file autoloader untuk memastikan bahwa library dependensi dapat dimuat dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Definisikan deskripsi argumen baris perintah.
$optsdesc = [
"region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah tempat bucket berada. Parameter ini diperlukan.
"endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Endpoint yang dapat digunakan layanan lain untuk mengakses OSS. Parameter ini opsional.
"bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket. Parameter ini diperlukan.
];
// Konversi deskripsi argumen ke format opsi panjang yang diperlukan oleh getopt.
// Tanda titik dua (:) setelah setiap argumen menunjukkan bahwa argumen tersebut memerlukan nilai.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Parse argumen baris perintah.
$options = getopt("", $longopts);
// Periksa apakah argumen yang diperlukan telah ditentukan.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan argumen.
echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
exit(1); // Jika argumen yang diperlukan tidak ditentukan, keluar dari program.
}
}
// Ekstrak nilai dari argumen yang diparse.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
// Muat informasi kredensial dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk membaca Access Key ID dan Access Key Secret dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Setel penyedia kredensial.
$cfg->setRegion($region); // Setel wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Jika endpoint disediakan, setel endpoint.
}
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Buat objek DoMetaQueryRequest untuk melakukan operasi kueri metadata.
$request = new \AlibabaCloud\Oss\V2\Models\DoMetaQueryRequest(
bucket: $bucket,
metaQuery: new \AlibabaCloud\Oss\V2\Models\MetaQuery(
maxResults: 5, // Jumlah maksimum hasil yang akan dikembalikan.
query: "{'Field': 'Size','Value': '1048576','Operation': 'gt'}", // Kondisi kueri: objek yang ukurannya lebih besar dari 1 MB.
sort: 'Size', // Urutkan berdasarkan ukuran objek.
order: \AlibabaCloud\Oss\V2\Models\MetaQueryOrderType::ASC, // Urutkan dalam urutan naik.
aggregations: new \AlibabaCloud\Oss\V2\Models\MetaQueryAggregations( // Operasi agregasi
aggregations: [
new \AlibabaCloud\Oss\V2\Models\MetaQueryAggregation(
field: 'Size', // Bidang ukuran objek.
operation: 'sum' // Operasi agregasi: jumlah.
),
new \AlibabaCloud\Oss\V2\Models\MetaQueryAggregation(
field: 'Size', // Bidang ukuran objek.
operation: 'max' // Operasi agregasi: nilai maksimum.
),
]
)
)
);
// Lakukan operasi kueri metadata.
$result = $client->doMetaQuery($request);
// Cetak hasil kueri metadata.
printf(
'kode status:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, 200 menunjukkan bahwa permintaan berhasil.
'ID permintaan:' . $result->requestId . PHP_EOL . // ID permintaan, yang digunakan untuk debug atau melacak permintaan.
'hasil:' . var_export($result, true) . PHP_EOL // Hasil kueri, yang berisi objek yang cocok dan data agregat mereka.
);
Gunakan ossutil
Anda dapat menggunakan antarmuka baris perintah (CLI) ossutil untuk mengkueri objek yang memenuhi kondisi tertentu dengan fitur pengambilan skalar. Untuk menginstal ossutil, lihat Instal ossutil.
Contoh berikut menunjukkan cara mengkueri file yang memenuhi kondisi tertentu di bucket bernama examplebucket.
ossutil api do-meta-query --bucket examplebucket --meta-query "{\"MaxResults\":\"5\",\"Query\":\"{\\\"Field\\\": \\\"Size\\\",\\\"Value\\\": \\\"1048576\\\",\\\"Operation\\\": \\\"gt\\\"}\",\"Sort\":\"Size\",\"Order\":\"asc\",\"Aggregations\":{\"Aggregation\":[{\"Field\":\"Size\",\"Operation\":\"sum\"},{\"Field\":\"Size\",\"Operation\":\"max\"}]}}"Untuk informasi lebih lanjut tentang perintah ini, lihat do-meta-query.
Nonaktifkan pengambilan skalar
Menonaktifkan fitur ini tidak memengaruhi data yang sudah tersimpan di OSS. Jika Anda mengaktifkan kembali fitur ini, sistem akan memindai ulang file yang ada dan membangun kembali indeks. Proses ini memerlukan waktu, tergantung pada jumlah file dalam bucket Anda.
Penagihan berhenti pada jam setelah Anda menonaktifkan fitur ini. Namun, pembuatan tagihan mungkin tertunda. Kami sarankan Anda memantau tagihan Anda.
Gunakan Konsol OSS
Masuk ke Konsol OSS. Pada halaman Pengindeksan Data, klik Disable di sebelah Manajemen Metadata dan ikuti petunjuk untuk mengonfirmasi aksi tersebut.

Gunakan Alibaba Cloud SDK
Java
Untuk lebih banyak contoh kode, lihat Pengambilan Skalar (Java SDK).
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
public class CloseMetaQuery {
public static void main(String[] args) throws Exception {
// Dalam contoh ini, endpoint dari wilayah China (Hangzhou) digunakan.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan nama bucket. Contoh: examplebucket.
String bucketName = "examplebucket";
// Dapatkan kredensial akses dari variabel lingkungan.
// Sebelum menjalankan kode contoh, pastikan bahwa variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou.
String region = "cn-hangzhou";
// Buat instance OSSClient.
// Panggil metode shutdown untuk melepaskan sumber daya terkait ketika instance OSSClient tidak lagi digunakan.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Nonaktifkan fitur MetaSearch untuk bucket.
ossClient.closeMetaQuery(bucketName);
} catch (OSSException oe) {
System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
System.out.println("Kode Kesalahan:" + oe.getErrorCode());
System.out.println("ID Permintaan:" + oe.getRequestId());
System.out.println("ID Host:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Pesan Kesalahan: " + ce.getMessage());
} finally {
// Matikan instance OSSClient.
if(ossClient != null){
ossClient.shutdown();
}
}
}
}
Python
Untuk lebih banyak contoh kode, lihat Pengambilan Skalar.
import argparse
import alibabacloud_oss_v2 as oss
# Buat objek ArgumentParser untuk memproses argumen baris perintah.
parser = argparse.ArgumentParser(description="contoh close meta query")
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')
def main():
# Parse argumen baris perintah.
args = parser.parse_args()
# Muat informasi kredensial dari variabel lingkungan.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Gunakan konfigurasi default dari SDK.
cfg = oss.config.load_default()
# Atur penyedia kredensial ke yang diperoleh dari variabel lingkungan.
cfg.credentials_provider = credentials_provider
# Setel informasi wilayah dalam konfigurasi.
cfg.region = args.region
# Jika endpoint disediakan, atur endpoint dalam konfigurasi.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Buat klien OSS.
client = oss.Client(cfg)
# Panggil metode close_meta_query untuk menonaktifkan fitur kueri meta untuk bucket yang ditentukan.
result = client.close_meta_query(oss.CloseMetaQueryRequest(
bucket=args.bucket,
))
# Cetak kode status dan ID permintaan dari tanggapan.
print(f'kode status: {result.status_code}, id permintaan: {result.request_id}')
# Panggil fungsi utama saat skrip ini dijalankan langsung.
if __name__ == "__main__":
main()
Go
Untuk lebih banyak contoh kode, lihat Pengambilan Skalar (Go SDK V2).
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
var (
region string // Definisikan variabel untuk menyimpan informasi wilayah yang diperoleh dari baris perintah.
bucketName string // Definisikan variabel untuk menyimpan nama bucket yang diperoleh dari baris perintah.
)
// Fungsi init dieksekusi sebelum fungsi utama untuk menginisialisasi program.
func init() {
// Tetapkan parameter baris perintah untuk menentukan wilayah.
flag.StringVar(®ion, "region", "", "Wilayah tempat bucket berada.")
// Tetapkan parameter baris perintah untuk menentukan nama bucket.
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
flag.Parse() // Parse parameter baris perintah.
// Periksa apakah nama bucket diberikan. Jika tidak, program mencetak parameter default dan keluar.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket diperlukan") // Log kesalahan dan hentikan program.
}
// Periksa apakah wilayah diberikan. Jika tidak, program mencetak parameter default dan keluar.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah diperlukan") // Log kesalahan dan hentikan program.
}
// Buat konfigurasi klien dan gunakan variabel lingkungan sebagai penyedia kredensial dan wilayah yang ditentukan.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg) // Buat instance klien OSS.
// Buat permintaan CloseMetaQuery untuk menonaktifkan fitur manajemen metadata untuk bucket tertentu.
request := &oss.CloseMetaQueryRequest{
Bucket: oss.Ptr(bucketName), // Tentukan nama bucket yang akan dioperasikan.
}
result, err := client.CloseMetaQuery(context.TODO(), request) // Eksekusi permintaan untuk menonaktifkan fitur manajemen metadata untuk bucket.
if err != nil {
log.Fatalf("gagal menutup kueri meta %v", err) // Jika terjadi kesalahan, log pesan kesalahan dan hentikan program.
}
log.Printf("hasil penutupan kueri meta:%#v\n", result)
}PHP
Untuk lebih banyak contoh kode, lihat Pengambilan Skalar (PHP SDK V2).
<?php
// Impor file autoloader untuk memastikan bahwa pustaka dependensi dapat dimuat dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Definisikan deskripsi argumen baris perintah.
$optsdesc = [
"region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah tempat bucket berada. Parameter ini wajib.
"endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Endpoint yang dapat digunakan layanan lain untuk mengakses OSS. Parameter ini opsional.
"bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket. Parameter ini wajib.
];
// Konversi deskripsi argumen ke format opsi panjang yang diperlukan oleh getopt.
// Tanda titik dua (:) setelah setiap argumen menunjukkan bahwa argumen tersebut memerlukan nilai.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Parse argumen baris perintah.
$options = getopt("", $longopts);
// Periksa apakah argumen yang diperlukan telah ditentukan.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan dari argumen.
echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
exit(1); // Jika argumen yang diperlukan tidak ditentukan, keluar dari program.
}
}
// Ekstrak nilai dari argumen yang telah diurai.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
// Muat informasi kredensial dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk membaca Access Key ID dan Access Key Secret dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Atur penyedia kredensial.
$cfg->setRegion($region); // Atur wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Jika endpoint disediakan, atur endpoint.
}
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Buat objek CloseMetaQueryRequest untuk menonaktifkan fitur pengambilan untuk bucket.
$request = new \AlibabaCloud\Oss\V2\Models\CloseMetaQueryRequest(
bucket: $bucket
);
// Eksekusi operasi untuk menonaktifkan fitur pengambilan.
$result = $client->closeMetaQuery($request);
// Cetak hasil dari penonaktifan fitur pengambilan.
printf(
'kode status:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, 200 menunjukkan bahwa permintaan berhasil.
'id permintaan:' . $result->requestId . PHP_EOL // ID permintaan, yang digunakan untuk debug atau melacak permintaan.
);
Gunakan ossutil
Perintah sampel berikut menunjukkan cara menonaktifkan fitur manajemen metadata untuk bucket bernama examplebucket.
ossutil api close-meta-query --bucket examplebucketUntuk informasi lebih lanjut tentang perintah ini, lihat close-meta-query.
Kondisi Kueri dan Pengaturan Output
Kondisi Kueri
Tabel berikut menjelaskan semua kondisi kueri. Anda dapat mengatur kondisi ini secara individual atau dalam kombinasi sesuai kebutuhan.
Pengaturan Output Hasil
Anda dapat mengurutkan hasil output dan melakukan analisis statistik sederhana.
Object Sorting Method: Anda dapat mengurutkan berdasarkan waktu modifikasi terakhir, nama file, atau ukuran file dalam urutan naik, turun, atau default. Anda dapat mengurutkan hasil kueri sesuai kebutuhan untuk menemukan file yang diperlukan dengan cepat.
Data Aggregation: Mendukung berbagai jenis output. Anda dapat melakukan perhitungan pada hasil kueri, seperti deduplikasi, penghitungan kelompok, mencari nilai maksimum atau minimum, menghitung rata-rata, dan menjumlahkan nilai. Hal ini memungkinkan analisis dan manajemen data yang efisien.
Operasi API terkait
Operasi sebelumnya didasarkan pada operasi API. Jika program Anda memiliki persyaratan penyesuaian tinggi, Anda dapat langsung membuat permintaan REST API. Namun, jika Anda membuat permintaan REST API, Anda harus menulis kode secara manual untuk menghitung tanda tangan.
Untuk informasi lebih lanjut tentang cara mengaktifkan fitur manajemen metadata, lihat OpenMetaQuery.
Untuk menanyakan file yang memenuhi kondisi tertentu, lihat DoMetaQuery.
Untuk informasi lebih lanjut tentang cara menonaktifkan fitur manajemen metadata, lihat CloseMetaQuery.
Penagihan
Biaya pengambilan skalar terdiri dari dua komponen berikut:
Biaya fitur pengambilan skalar (gratis selama pratinjau publik)
Komponen ini mencakup biaya manajemen metadata objek. Fitur ini saat ini dalam pratinjau publik dan tidak dikenakan biaya. Penagihan resmi akan dimulai pada 25 Agustus 2025, setelah periode pratinjau publik berakhir. Setelah itu, Anda akan dikenakan biaya sesuai dengan tarif penagihan indeks data OSS. Untuk informasi lebih lanjut, lihat Biaya indeks data.
Biaya permintaan API
Biaya ini dihasilkan selama pembaruan indeks file tambahan. Anda akan dikenakan biaya berdasarkan jumlah panggilan API. Permintaan API yang relevan adalah sebagai berikut:
Perilaku
API
Jumlah
Membuat indeks untuk file di bucket
HeadObject dan GetObject
Dipanggil sekali untuk setiap file
Sebuah file di bucket memiliki tag
GetObjectTag
Dipanggil sekali untuk setiap file dengan tag
Sebuah file di bucket memiliki metadata khusus
GetObjectMeta
Dipanggil sekali untuk setiap file dengan metadata khusus
Sebuah file tautan simbolik ada di bucket
GetSymlink
Dipanggil sekali untuk setiap file tautan simbolik
Pemindaian file di bucket
ListObjects
Dipanggil sekali untuk setiap 1.000 file yang dipindai
Untuk detail lebih lanjut mengenai biaya permintaan API OSS, lihat Biaya permintaan.
Untuk menghentikan penagihan, Anda harus menonaktifkan pengambilan skalar.
FAQ
Mengapa memerlukan waktu lama untuk membangun indeks data untuk bucket yang berisi ratusan juta file?
Indeks dapat dibangun untuk sekitar 600 file tambahan per detik. Anda dapat memperkirakan waktu yang diperlukan berdasarkan jumlah file dalam bucket Anda.
Bagaimana cara saya menanyakan total ukuran file dalam awalan atau direktori tertentu?
Masuk ke Konsol OSS.
Di panel navigasi sebelah kiri, klik Buckets. Di halaman Buckets, temukan dan klik bucket yang diinginkan.
Di panel navigasi sebelah kiri, pilih .
Atur Filename ke Pencocokan Awalan dan masukkan
random_files/sebagai awalan. Biarkan parameter lainnya pada pengaturan default.
Klik Set Output Method.
Untuk Object Sorting Method, pilih Default Sort.
Untuk Data Aggregation, pilih File Size dan Sum.

Klik Query Now. Anda dapat melihat statistik akhir, termasuk jumlah total file dan ukuran total semua file di direktori `random_files/`.

Referensi
Pengambilan skalar mendukung berbagai kondisi filter, seperti waktu modifikasi terakhir, kelas penyimpanan, daftar kontrol akses, dan ukuran file. Untuk memfilter objek dalam rentang waktu tertentu dari banyak objek di Bucket OSS, lihat Cara memfilter file di OSS dalam rentang waktu tertentu.