Dalam sebagian besar skenario analisis perilaku pengguna dan identifikasi pengguna, Anda perlu menyaring ratusan juta hingga miliaran pengguna untuk mendapatkan data metrik dengan tag tertentu. Topik ini menjelaskan cara melakukan analisis perilaku pengguna di Hologres.
Informasi latar belakang
Pengunjung unik (UV) adalah pengguna individu yang mengunjungi situs web setidaknya sekali. Jumlah UV dapat digunakan sebagai metrik yang dikumpulkan dalam periode waktu tertentu setelah deduplikasi yang akurat. Jumlah UV sering digunakan dalam analisis perilaku. Sebagai contoh, dalam promosi penjualan e-commerce berskala besar, penjual perlu menghitung jumlah UV tampilan halaman item (IPV), jumlah UV yang menambahkan item ke keranjang belanja, dan jumlah UV yang melakukan pembelian. Penjual dapat menyesuaikan kebijakan operasional berdasarkan informasi UV untuk mencapai tujuan penjualan. Anda bisa mendapatkan jumlah UV dalam periode waktu tetap, seperti satu hari, tujuh hari, atau satu bulan, sesuai dengan kebutuhan bisnis Anda. Anda juga bisa mendapatkan jumlah UV dalam periode waktu tertentu, seperti setengah tahun.
Saat menghitung jumlah UV, dimensi komputasi dan jumlah data bervariasi berdasarkan kebutuhan bisnis Anda. Dalam banyak kasus, persyaratan berikut terlibat:
Bisnis Anda melibatkan ratusan juta catatan data dalam lebih dari 10 dimensi setiap hari. Anda ingin secara fleksibel menggabungkan dimensi untuk menanyakan data.
Selain kueri data berdasarkan hari, minggu, bulan, atau tahun, Anda ingin menanyakan data secara lebih rinci untuk periode panjang tertentu secara real-time.
Anda ingin secara akurat menghapus duplikat pengguna.
Dalam skenario komputasi UV kompleks sebelumnya, sistem pra-kalkulasi, seperti Apache Kylin, atau solusi Flink-MySQL dengan kombinasi dimensi tetap biasanya digunakan. Tugas ETL (ekstraksi, transformasi, dan pemuatan) digunakan untuk melakukan pembaruan berkala. Ini membantu meningkatkan efisiensi komputasi. Namun, kekurangan berikut ada:
Jika komputasi UV melibatkan sejumlah besar dimensi, volume ruang penyimpanan yang besar diperlukan, dan waktu pra-kalkulasi menjadi lama.
Deduplikasi yang akurat mengonsumsi sejumlah besar sumber daya. Akibatnya, masalah out-of-memory (OOM) rentan terjadi.
Data tidak dapat diproses secara real-time, dan persyaratan ketepatan waktu tidak dapat dipenuhi. Komputasi UV hanya dapat dilakukan untuk periode waktu tetap, bukan periode waktu kustom.
Anda juga dapat menggunakan fungsi COUNT DISTINCT untuk menghitung jumlah UV dalam tabel fakta. Ini memungkinkan Anda mengonfigurasi periode waktu kustom untuk komputasi UV. Namun, sebagian besar sistem tidak dapat menghitung sejumlah besar data dalam tabel fakta. Jika periode komputasi panjang, proses kueri melambat. Tabel fakta juga tidak mendukung akses dengan konkurensi tinggi.
Tentang solusi Hologres
Hologres adalah gudang data real-time untuk pemrosesan hibrida servis dan analitik (HSAP). Hologres menggunakan arsitektur terdistribusi, mendukung penulisan data real-time, dan dapat menganalisis serta memproses petabyte data dengan konkurensi tinggi dan latensi rendah. Hologres kompatibel dengan protokol PostgreSQL dan memungkinkan Anda menggunakan alat yang ada untuk analisis data.
Dalam skenario analisis perilaku berbasis UV, Hologres memungkinkan Anda menggunakan fungsi COUNT DISTINCT untuk menanyakan data dari tabel fakta. Oleh karena itu, Hologres memberikan kinerja kueri yang lebih baik dibandingkan produk lainnya. Hologres juga mendukung solusi pra-agregasi berbasis roaring bitmap. Kemampuan ini memungkinkan Hologres untuk secara akurat menghitung jumlah UV dari ratusan juta catatan data.
COUNT DISTINCT
Fungsi COUNT DISTINCT mengikuti sintaksis asli PostgreSQL. Fungsi COUNT DISTINCT dioptimalkan di Hologres untuk mendukung berbagai skenario, seperti deduplikasi berdasarkan satu bidang, deduplikasi berdasarkan beberapa bidang, deduplikasi pada data yang condong, dan deduplikasi saat tidak ada bidang yang ditentukan dalam klausa GROUP BY. Anda dapat langsung menggunakan fungsi COUNT DISTINCT untuk menanyakan data dari tabel fakta lebar. Ini meningkatkan kinerja kueri.
Roaring bitmap
Roaring bitmaps adalah bitmap terkompresi untuk pengindeksan. Fitur kompresi data dan deduplikasi dari roaring bitmaps cocok untuk komputasi UV dalam skenario data besar. Roaring bitmaps memiliki karakteristik berikut:
Dalam roaring bitmap, 216 chunk dibangun untuk bilangan bulat 32-bit dan sesuai dengan 16 bit paling signifikan dari bilangan bulat 32-bit. 16 bit paling tidak signifikan dari bilangan bulat 32-bit dipetakan ke satu bit dalam setiap chunk. Kapasitas satu chunk ditentukan oleh nilai maksimum yang ada dalam chunk tersebut.
Roaring bitmap menggunakan satu bit untuk merepresentasikan bilangan bulat 32-bit. Ini secara signifikan mengompres data.
Roaring bitmaps menyediakan operasi bitwise untuk deduplikasi.
Untuk informasi lebih lanjut tentang cara menggunakan roaring bitmaps, lihat Fungsi roaring bitmap.
Bagian berikut menjelaskan empat solusi untuk komputasi UV untuk memenuhi persyaratan berbeda. Anda dapat memilih solusi berdasarkan jumlah data bisnis Anda dan persyaratan ketepatan waktu Anda.
Komputasi UV dalam kueri ad hoc
Deskripsi
Pra-agregasi tidak digunakan. Hologres memungkinkan Anda menentukan periode waktu dan menggunakan fungsi COUNT DISTINCT untuk menghitung jumlah UV dalam tabel fakta. Untuk informasi lebih lanjut, lihat Solusi komputasi UV dalam kueri ad hoc.
Keuntungan
Solusi ini memenuhi persyaratan real-time dan memungkinkan Anda menentukan periode waktu untuk komputasi UV. Komputasi UV dan page view (PV) dalam kueri ad hoc dilakukan tanpa kebutuhan pra-kalkulasi dan penjadwalan. Fungsi COUNT DISTINCT untuk komputasi UV dioptimalkan di Hologres untuk secara signifikan meningkatkan efisiensi komputasi.
Kekurangan
Jika jumlah data meningkat, efisiensi komputasi dan queries per second (QPS) yang didukung mungkin menurun.
Skenario
Solusi ini cocok untuk komputasi UV fleksibel dari puluhan juta catatan data.
Komputasi UV near-real-time berdasarkan pra-agregasi
Deskripsi
Berdasarkan roaring bitmaps dari Hologres, solusi ini melakukan pra-agregasi dengan menggunakan penjadwalan berkala untuk memungkinkan komputasi UV fleksibel dalam periode waktu kustom. Untuk informasi lebih lanjut, lihat Komputasi UV near-real-time berdasarkan pra-agregasi.
Keuntungan
Keuntungan: Solusi ini memberikan kinerja komputasi yang sangat baik dan mendukung komputasi UV dengan QPS tinggi dan latensi rendah berdasarkan estimasi kardinalitas yang akurat. Ini juga memungkinkan Anda mengonfigurasi periode waktu kustom.
Kekurangan
Anda perlu melakukan pra-kalkulasi dan memperbarui data secara berkala dalam tabel agregasi, yang meningkatkan beban tugas pemeliharaan.
Skenario
Solusi ini cocok untuk komputasi UV dari ratusan juta catatan data dengan QPS tinggi dalam periode waktu kustom.
Komputasi UV offline oleh Hologres dan MaxCompute berdasarkan pra-agregasi
Deskripsi
Jika Anda ingin menghitung jumlah UV pada jumlah data ultra-besar, Anda dapat membangun indeks bitmap secara offline di MaxCompute dan menanyakan data dari tabel hasil agregasi berdasarkan dimensi bisnis di Hologres. Ini mencapai komputasi UV dalam sub-detik. Dalam solusi ini, Anda hanya perlu melakukan pra-agregasi sekali pada granularitas terbaik dan menghasilkan satu tabel hasil pra-agregasi dengan granularitas terbaik. Kemampuan komputasi yang kuat dari Hologres membantu menerapkan komputasi UV offline pada jumlah data ultra-besar. Untuk informasi lebih lanjut, lihat Roaring bitmaps.
Keuntungan
Solusi ini memberikan efisiensi tinggi dalam komputasi UV offline pada jumlah data ultra-besar.
Kekurangan
Solusi ini memerlukan pengguna yang memiliki pengalaman pengembangan fungsi yang ditentukan pengguna (UDF) di MaxCompute untuk membangun indeks bitmap.
Skenario
Solusi ini cocok untuk komputasi UV pada jumlah data ultra-besar.
Komputasi UV real-time oleh Hologres dan Flink berdasarkan pra-agregasi
Deskripsi
Anda dapat menggunakan solusi ini untuk memenuhi persyaratan tinggi pada ketepatan waktu komputasi UV dalam skenario seperti tampilan UV real-time pada dasbor. Dalam skenario komputasi UV real-time, Flink dihubungkan dengan tabel dimensi di Hologres. Deduplikasi berbasis tag pengguna dilakukan secara real-time menggunakan roaring bitmaps. Untuk informasi lebih lanjut, lihat Gunakan Hologres dan Flink untuk menghitung jumlah UV secara real-time berdasarkan pra-agregasi.
Keuntungan
Solusi ini mengimplementasikan komputasi UV dan PV real-time secara lebih rinci. Solusi ini mendukung pemrosesan data sederhana dan komputasi dimensi fleksibel, serta memberikan ketepatan waktu tinggi.
Kekurangan
Solusi ini melibatkan fungsi jendela Flink. Pengguna yang memiliki pengalaman pengembangan Flink diperlukan.
Skenario
Solusi ini cocok untuk skenario komputasi UV real-time, seperti tampilan data real-time pada dasbor selama promosi penjualan berskala besar.