Feature Database (FeatureDB) adalah layanan basis data yang disediakan oleh FeatureStore dari Platform for AI (PAI). Layanan ini berfungsi sebagai penyimpanan data online untuk FeatureStore, menyediakan penyimpanan fitur online serta optimasi baca/tulis berperforma tinggi untuk skenario pencarian, rekomendasi, dan periklanan. Topik ini menjelaskan apa itu FeatureDB, bersama dengan fitur-fitur dan manfaatnya.
Apa itu FeatureDB
FeatureDB adalah basis data terdistribusi berperforma tinggi yang disediakan oleh FeatureStore. Layanan ini mendukung data dalam format KV dan KKV, serta menyimpan array sebagai tipe Array dan KV sebagai tipe Map. Data terstruktur yang disimpan dalam tipe Array dan Map memberikan performa lebih tinggi untuk pembacaan, penulisan, dan layanan inferensi selanjutnya. FeatureDB sepenuhnya mendukung produksi, pembaruan, dan konsumsi fitur offline dan real-time, serta fitur urutan perilaku pengguna.
Cara mengaktifkan
Anda dapat mengaktifkan layanan ini dengan mengikuti petunjuk pada antarmuka saat membuat penyimpanan data FeatureDB.
Fitur
FeatureDB telah mengimplementasikan fitur-fitur dan optimasi berikut untuk pembacaan fitur FeatureStore:
Mendukung pembacaan dan penulisan fitur tipe KV dan KKV.
Mendukung pembacaan dan penulisan fitur tipe kompleks MaxCompute (Array, Map).
Menarik semua data fitur di bawah sebuah FeatureView.
Pencarian tingkat milidetik untuk memperbarui data fitur real-time.
TTL tingkat detik, membersihkan data kedaluwarsa secara otomatis.
Penagihan pay-as-you-go berdasarkan pembacaan dan penulisan aktual.
FeatureDB dapat membagi data dari sebuah FeatureView dan menyesuaikan jumlah shard untuk memenuhi persyaratan performa baca dan tulis dalam berbagai skenario. Layanan ini juga mendukung replika untuk memastikan stabilitas dan keamanan data. Jumlah shard akan didasarkan pada Estimated Order of Magnitude yang diberikan:
Less than 10 million (default): 5 shard.
Between 10 million and 100 million: 10 shard.
More than 100 million: 20 shard.

Manfaat
Hemat Biaya
Untuk pelanggan dengan kebutuhan penyimpanan fitur yang lebih kecil, menggunakan FeatureDB dapat mengurangi biaya.
Memenuhi kebutuhan pembaruan frekuensi tinggi
Saat menggunakan fitur statistik real-time, fitur real-time perlu diperbarui setiap beberapa detik ke penyimpanan beberapa instance EasyRec Processor (layanan inferensi model). FeatureDB dapat memenuhi kebutuhan tinggi untuk pembaruan frekuensi tinggi.
Mendukung fitur tipe kompleks
Dalam bisnis pencarian dan promosi, fitur tipe Array dan Map, urutan panjang perilaku pengguna, dan SideInfo mereka banyak digunakan. Jika fitur tipe kompleks disimpan sebagai string, mereka perlu diserialisasi menjadi tipe Map saat digunakan, yang mengurangi performa.
FeatureDB mendukung penyimpanan data tipe kompleks dan menyinkronkan data tipe kompleks MaxCompute 2.0 ke FeatureDB untuk operasi baca berperforma tinggi.
Mendukung skalabilitas elastis
Untuk pelanggan skala besar, jumlah shard dapat ditingkatkan secara fleksibel sesuai dengan tampilan fitur untuk meningkatkan performa baca dan tulis.
Menyelesaikan titik buta pemantauan
Saat mengintegrasikan sumber data pihak ketiga, memantau seluruh tautan data menjadi sulit, terutama untuk fitur real-time. FeatureDB dapat memantau indikator kinerja utama seperti QPS baca/tulis, RT, latensi pembaruan data, dan penggunaan penyimpanan pada tingkat granularitas tampilan.
Fungsi
Koneksi langsung VPC
FeatureDB menyediakan koneksi langsung VPC berbasis PrivateLink. Setelah konfigurasi berhasil, Anda dapat menggunakan SDK FeatureStore di VPC Anda untuk mengakses FeatureDB melalui koneksi pribadi berbasis PrivateLink, sehingga meningkatkan performa baca/tulis data dan mengurangi latensi akses.
Anda dapat mengonfigurasi koneksi langsung VPC melalui salah satu metode berikut:
Metode 1: Jika Anda tidak memiliki penyimpanan data FeatureDB, klik Create Source di tab Store. Saat membuat sumber data FeatureDB, konfigurasikan VPC, Zone and vSwitch, dan Security Group Name di bagian VPC Direct Connection Configurations. Untuk instruksi spesifik, lihat Penyimpanan data online: FeatureDB.
Metode 2: Jika Anda sudah membuat sumber data FeatureDB, klik feature_db di tab Store. Di halaman yang muncul, klik VPC Direct Connection Configurations. Tentukan VPC, Zone and vSwitch, dan Security Group Name, lalu klik OK.
Catatan
Pengaturan VPC tidak dapat diubah setelah ditetapkan. Pastikan bahwa VPC yang Anda konfigurasikan adalah VPC tempat layanan online Anda yang menggunakan FeatureStore berada.
Kami merekomendasikan Anda untuk menerapkan layanan Anda di zona-zona berikut untuk menghindari latensi jaringan dan meningkatkan performa.
Area
Wilayah
Zona yang direkomendasikan
Asia Pasifik
Cina (Hangzhou)
Zona G
Cina (Shanghai)
Zona L
Cina (Beijing)
Zona F
Cina (Shenzhen)
Zona F
Cina (Hongkong)
Zona B
Singapura
Zona C
Eropa dan Amerika
Jerman (Frankfurt)
Zona A
Amerika Serikat (Silicon Valley)
Zona B
Zone and vSwitch: Pastikan Anda memilih vSwitch di zona tempat instance layanan online Anda berada. Kami merekomendasikan Anda memilih vSwitch di setidaknya dua zona untuk ketersediaan dan stabilitas tinggi.
Setelah Anda mengonfirmasi, Anda tidak dapat mengubah atau menghapus konfigurasi tersebut. Anda hanya dapat menambahkan vSwitch di zona lain.
Tulis fitur
Untuk fitur offline, Anda dapat menggunakan SDK Python FeatureStore untuk menjalankan tugas terjadwal melalui DataWorks guna menyinkronkan data dari MaxCompute ke FeatureDB.
Untuk fitur real-time, Anda dapat menulis data fitur langsung menggunakan Java SDK.
// Konfigurasikan regionId, akun Alibaba Cloud, Proyek FeatureStore
Configuration configuration = new Configuration("cn-beijing",
Constants.accessId, Constants.accessKey,"fs_demo_featuredb" );
// Konfigurasikan nama pengguna dan kata sandi FeatureDB
configuration.setUsername(Constants.username);
configuration.setPassword(Constants.password);
// Jika menggunakan jaringan publik untuk terhubung ke FeatureStore, lihat informasi domain di atas
// Jika menggunakan lingkungan VPC, tidak perlu diatur
//configuration.setDomain(Constants.host);
ApiClient client = new ApiClient(configuration);
// Jika menggunakan koneksi jaringan publik, atur usePublicAddress = true, lingkungan VPC tidak perlu diatur
// FeatureStoreClient featureStoreClient = new FeatureStoreClient(client, Constants.usePublicAddress);
FeatureStoreClient featureStoreClient = new FeatureStoreClient(client );
Project project = featureStoreClient.getProject("fs_demo_featuredb");
if (null == project) {
throw new RuntimeException("proyek tidak ditemukan");
}
FeatureView featureView = project.getFeatureView("user_test_2");
if (null == featureView) {
throw new RuntimeException("featureview tidak ditemukan");
}
List<Map<String, Object>> writeData = new ArrayList<>();
// Simulasikan pembuatan data untuk ditulis
for (int i = 0; i < 10; i++) {
Map<String, Object> data = new HashMap<>();
data.put("user_id", i);
data.put("string_field", String.format("test_%d", i));
data.put("int32_field", i);
data.put("int64_field", Long.valueOf(i));
data.put("float_field", Float.valueOf(i));
data.put("double_field", Double.valueOf(i));
data.put("boolean_field", i % 2 == 0);
writeData.add(data);
}
for (int i = 0; i < 100;i++) {
featureView.writeFeatures(writeData);
}
// Ini hanya perlu dipanggil sekali, jika semua data telah ditulis, pastikan semua penulisan selesai, setelah memanggil antarmuka ini, writeFeatures tidak dapat dipanggil lagi
featureView.writeFlush();
Untuk penulisan fitur real-time, seluruh baris data akan diperbarui secara default. Jika data yang ditulis hanya berisi beberapa bidang, bidang yang tidak ditulis akan diatur kosong. Jika Anda ingin memperbarui hanya bidang yang ditulis dan menggabungkannya dengan data asli, Anda dapat melakukan pengaturan berikut:
Gunakan Java SDK: Tentukan InsertMode.PartialFieldWrite.
for (int i = 0; i < 100;i++) { featureView.writeFeatures(writeData, InsertMode.PartialFieldWrite); }Gunakan Flink Connector: Atur insert_mode ke partial_field_write.
Baca fitur
Anda dapat menggunakan SDK FeatureStore (Go/Java) atau EasyRec Processor untuk membaca fitur.
SDK FeatureStore (Go/Java) mendukung kueri titik KV untuk fitur offline/real-time. Dengan menentukan nilai JoinID (kunci utama) dan nama fitur, Anda dapat menyelesaikan kueri key-value (KV) dalam milidetik untuk mendapatkan data fitur target. SDK FeatureStore (Go/Java) juga mendukung kueri KKV untuk fitur urutan perilaku. Dengan menentukan nilai UserID, Anda dapat menanyakan hasil fitur urutan yang dirakit.
EasyRec Processor telah mengintegrasikan SDK Cpp FeatureStore, yang mendukung menarik semua data fitur dari FeatureDB ke dalam memori dan mendukung polling tingkat milidetik untuk memperbarui data fitur real-time ke memori, sehingga mencapai pembacaan berkinerja lebih tinggi.
Metrik
Jika Anda menggunakan FeatureDB sebagai sumber data online, setelah membuat tampilan fitur, klik Data Monitoring di sisi kanan tampilan target untuk melihat metrik seperti QPS baca/tulis dan RT untuk tampilan tersebut.
Tautan fitur real-time
Layanan penyimpanan yang disediakan oleh FeatureStore terutama mencakup tiga bagian: Feature Service (lapisan akses), MSMQ (DataHub), dan FeatureDB.
Dalam fitur real-time, pengguna dapat memanggil layanan fitur melalui SDK Java FeatureStore atau Flink Connector untuk menulis data fitur ke FeatureDB. Data yang ditulis melalui layanan fitur juga akan disinkronkan ke tabel MaxCompute pengguna, yang dapat digunakan untuk ekspor sampel fitur real-time dan pelatihan model lebih lanjut.
Untuk data fitur yang disimpan di FeatureDB, pengguna dapat membacanya melalui SDK Java/Go FeatureStore, atau menarik semua fitur melalui EasyRec Processor dan menyimpannya di cache lokal untuk pembacaan berperforma tinggi. Untuk fitur real-time, informasi fitur terbaru dapat diperoleh pada tingkat milidetik.
Siklus hidup fitur real-time
Saat membuat tampilan fitur real-time, Anda dapat menentukan Feature Lifecycle untuk tabel FeatureDB. Saat waktu bertahan hidup suatu baris mencapai siklus hidup, baris tersebut akan dibersihkan secara otomatis dalam hitungan detik.

Anda dapat menentukan waktu bertahan hidup menggunakan metode berikut:
Metode 1: Jangan atur bidang Event Time. Dalam hal ini, waktu bertahan hidup akan dihitung berdasarkan waktu penulisan data.
Metode 2: Periksa Event Time untuk bidang fitur. Satuannya adalah milidetik. Dengan asumsi event_time adalah nilai dari Event Time, time_now adalah waktu saat ini, dan time_ttl = time_now - ttl adalah event_time saat data harus mulai kedaluwarsa. Metode penanganan spesifik untuk data fitur yang ditulis adalah:
Jika menggunakan mode PartialFieldWrite untuk penulisan pembaruan bidang parsial, waktu bertahan hidup akan berdasarkan waktu penulisan data aktual.
event_time > time_now + 15menit: Data tidak akan ditulis. (Ini mencegah perbedaan timestamp antar sistem yang berbeda, memungkinkan buffer 15 menit)
time_ttl < event_time <= time_now + 15menit: Data ditulis secara normal, waktu bertahan hidup dihitung mulai dari event_time, dan baris data dibersihkan secara otomatis setelah mencapai siklus hidup.
0 < event_time < time_ttl: Data akan dibersihkan secara otomatis setelah ditulis. Perhatikan bahwa satuan event_time adalah milidetik. Jika nilai bidang Event Time Anda dalam detik, itu akan masuk dalam kasus ini, menyebabkan data tidak ditulis dengan sukses.
event_time <= 0: Waktu bertahan hidup dihitung berdasarkan waktu penulisan data aktual.
Nilai tidak valid (tidak dapat dikonversi ke integer): Data tidak akan ditulis.
Mendaftarkan bidang Event Time tetapi tidak memasukkan nilai bidang Event Time: Data ditulis secara normal, waktu bertahan hidup dihitung berdasarkan waktu penulisan data aktual.
Tidak ada bidang Event Time: Data ditulis secara normal, waktu bertahan hidup dihitung berdasarkan waktu penulisan data aktual.
Selain itu, di FeatureDB, nilai event_time digunakan sebagai ts untuk baris data ini, yang berarti jika Anda perlu memperbarui data yang sesuai dengan sebuah kunci, nilai dari bidang Event Time perlu sama atau lebih besar dari nilai sebelumnya agar baris data ini diperbarui. Jika event_time baru < nilai event_time asli, data yang sesuai dengan kunci ini tidak akan diperbarui.
Pengujian performa
Berikut adalah contoh hasil pengujian kinerja untuk membaca data FeatureDB menggunakan SDK Go FeatureStore. Data tabel fitur yang dipilih adalah data sisi pengguna dalam skenario rekomendasi, dengan total 17.689.586 baris dalam tabel fitur. Mesin uji memiliki 4 core dan 8GiB memori. Hasil uji hanya untuk referensi.
Koneksi langsung VPC dikonfigurasi, dan layanan online di zona yang direkomendasikan:
Jumlah bidang fitur (kolom)
Jumlah kunci yang dibaca (baris)
Latensi rata-rata
TP95
TP99
260
1
0,89 milidetik
1,20 milidetik
1,45 milidetik
260
10
1,17 milidetik
1,52 milidetik
1,87 milidetik
260
50
1,91 milidetik
2,56 milidetik
2,92 milidetik
260
100
2,87 milidetik
3,58 milidetik
3,93 milidetik
260
200
4,43 milidetik
5,25 milidetik
5,80 milidetik
Koneksi langsung VPC dikonfigurasi, tetapi layanan online berada di zona non-rekomendasi:
Jumlah bidang fitur (kolom)
Jumlah kunci yang dibaca (baris)
Latensi rata-rata
TP95
TP99
260
1
2,54 milidetik
2,86 milidetik
3,15 milidetik
260
10
2,75 milidetik
3,12 milidetik
3,56 milidetik
260
50
3,95 milidetik
4,75 milidetik
5,19 milidetik
260
100
4,82 milidetik
5,66 milidetik
6,21 milidetik
260
200
6,84 milidetik
7,75 milidetik
8,25 milidetik
Koneksi langsung VPC tidak dikonfigurasi:
Jumlah bidang fitur (kolom)
Jumlah kunci yang dibaca (baris)
Latensi rata-rata
TP95
TP99
260
1
3,62 milidetik
3,83 milidetik
4,27 milidetik
260
10
3,82 milidetik
4,11 milidetik
4,61 milidetik
260
50
4,54 milidetik
5,19 milidetik
5,60 milidetik
260
100
5,40 milidetik
6,13 milidetik
6,56 milidetik
260
200
7,15 milidetik
7,93 milidetik
8,47 milidetik
Penagihan
Untuk informasi lebih lanjut, lihat Penagihan FeatureStore.