全部产品
Search
文档中心

Hologres:Tabel lebar

更新时间:Jul 02, 2025

Topik ini menjelaskan praktik terbaik untuk menggunakan tabel lebar dalam komputasi tag di Hologres.

Informasi latar belakang

Dalam model gudang data offline, data tag pengguna disimpan dalam beberapa tabel yang berorientasi pada tema dan dimensi. Hal ini membantu membangun sistem tag serta memelihara dan mengelola data. Namun, jika model data seperti itu digunakan dalam analisis profil online untuk mengatur data tag, beberapa tabel tag harus digabungkan untuk menyaring tag, yang terlalu mahal untuk layanan basis data.

Solusi

Dalam solusi tabel lebar, tabel properti stabil dikumpulkan menjadi tabel lebar secara offline, dan operasi JOIN pada beberapa tabel diubah menjadi operasi pada satu tabel lebar. Jika tag baru diperlukan, kolom ditambahkan ke tabel lebar untuk tag tersebut. Gambar berikut menunjukkan solusi ini. SolutionSolusi ini cocok untuk skenario berikut:

  • Skenario di mana kurang dari 1.000 tag digunakan.

  • Skenario di mana data jarang diperbarui.

Ketika data disimpan dalam tabel lebar, operasi AND, OR, dan NOT pada kondisi filter beberapa kolom diproses secara otomatis oleh mekanisme optimasi penyimpanan berorientasi kolom, yang lebih efisien daripada operasi JOIN. Selain itu, Hologres mendukung penyimpanan berorientasi kolom, yang mencegah peningkatan operasi I/O. Aplikasi pemodelan dan pengembangan basis data tradisional dapat digunakan dalam solusi ini.

Contoh penggunaan

Dalam contoh berikut, tabel lebar digunakan untuk analisis profil. Pernyataan SQL dieksekusi untuk menanyakan pria ([gender = Male]) di provinsi Zhejiang ([province = Zhejiang]) yang status pernikahannya menikah dalam tabel dws_userbase. Kami merekomendasikan Anda untuk menetapkan indeks yang tepat untuk tabel berdasarkan mode kueri guna meningkatkan kinerja kueri. Untuk informasi lebih lanjut, lihat CREATE TABLE.

-- Tabel lebar.
BEGIN;
CREATE TABLE dws_userbase
(
  uid text not null primary key,
  province text,
  gender text,
  married text
  ...             -- Kolom properti lainnya.
);
call set_table_property('dws_userbase', 'distribution_key', 'uid');
call set_table_property('dws_userbase', 'bitmap_columns', 'province,gender,married');
END;

-- Kueri berdasarkan properti dasar.
SELECT count(distinct uid) as cnt,
       married
FROM dws_userbase ub
WHERE province = 'Zhejiang' and gender = 'Male'
GROUP BY married;