Topik ini menjelaskan cara mengasosiasikan Logstore dengan database MySQL untuk melakukan kueri dan analisis. Pada topik ini, log dari perusahaan game digunakan sebagai contoh.
Prasyarat
Log telah dikumpulkan dan disimpan dalam Logstore. Untuk informasi selengkapnya, lihat Ikhtisar pengumpulan data.
Indeks telah dibuat untuk bidang-bidang dalam log. Untuk informasi selengkapnya, lihat Buat indeks.
Database MySQL tersedia. Untuk informasi selengkapnya, lihat Buat database dan akun.
Informasi latar belakang
Perusahaan A adalah perusahaan game yang memiliki dua jenis data berikut: log game pengguna dan metadata pengguna. Simple Log Service (SLS) dapat mengumpulkan log game pengguna secara real time. Log game pengguna berisi informasi event seperti operasi, target, health points (HP), magic points (MP), jaringan, metode pembayaran, lokasi klik, status code, dan ID pengguna. Metadata pengguna mencakup informasi pengguna seperti jenis kelamin, waktu pendaftaran, dan wilayah. Dalam kebanyakan kasus, metadata pengguna disimpan di database karena tidak dapat ditampilkan dalam log. Perusahaan A ingin melakukan analisis asosiasi terhadap log game pengguna dan metadata pengguna untuk memperoleh rencana operasional yang optimal.
Mesin kueri dan analisis SLS memungkinkan Anda mengasosiasikan Logstore dengan penyimpanan eksternal untuk melakukan kueri dan analisis. Penyimpanan eksternal mencakup database MySQL dan bucket Object Storage Service (OSS). Untuk menganalisis metrik yang terkait dengan properti pengguna, gunakan sintaks SQL JOIN untuk mengasosiasikan log game pengguna dengan metadata pengguna. Anda juga dapat menulis hasil analisis ke penyimpanan eksternal untuk pemrosesan lebih lanjut.
Prosedur
Buat tabel properti pengguna di database MySQL.
Buat tabel data bernama join_meta untuk menyimpan ID pengguna, username, jenis kelamin, usia, saldo akun, waktu pendaftaran, dan wilayah pendaftaran.
CREATE TABLE `join_meta` ( `uid` int(11) NOT NULL DEFAULT '0', `user_nick` text, `gender` tinyint(1) DEFAULT NULL, `age` int(11) DEFAULT NULL, `register_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `balance` float DEFAULT NULL, `region` text, PRIMARY KEY (`uid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8Buat daftar putih untuk database MySQL.
RDS for MySQL database
Tambahkan blok CIDR 100.104.0.0/16, 11.194.0.0/16, dan 11.201.0.0/16 ke daftar putih. Untuk informasi selengkapnya, lihat Konfigurasi daftar putih alamat IP.
Self-managed MySQL database on an ECS instance
Tambahkan aturan grup keamanan untuk mengizinkan akses dari blok CIDR 100.104.0.0/16, 11.194.0.0/16, dan 11.201.0.0/16. Untuk informasi selengkapnya, lihat Tambahkan aturan grup keamanan.
AnalyticDB for MySQL database
Tambahkan blok CIDR 100.104.0.0/16, 11.194.0.0/16, dan 11.201.0.0/16 ke daftar putih. Untuk informasi selengkapnya, lihat Konfigurasi daftar putih.
Buat external store.
Login ke server tempat CLI diinstal. Jalankan perintah
touchuntuk membuat file konfigurasi /home/shell/config.json. Tambahkan skrip berikut ke file config.json. Ganti nilai parameterregion,vpc-id,host,port,username,password,db, dantablesesuai kebutuhan.Deskripsi parameter
Contoh
{ "externalStoreName":"sls_join_meta_store", "storeType":"rds-vpc", "parameter":{ "region":"cn-qingdao", "vpc-id":"vpc-m5eq4irc1pucp*******", "host":"rm-bp1******rm76.mysql.rds.aliyuncs.com", "port":"3306", "username":"user", "password":"****", "db":"scmc", "table":"join_meta" } }externalStoreNameNama ExternalStore. Nama harus menggunakan huruf kecil.
storeTypeJenis sumber data. Atur parameter ini ke
rds-vpc.regionWilayah tempat instansiasi basis data berada. Rinciannya sebagai berikut:
Jika Anda menggunakan database ApsaraDB RDS for MySQL, atur parameter region ke wilayah instans RDS.
Jika Anda menggunakan database AnalyticDB for MySQL, atur parameter region ke wilayah instans AnalyticDB for MySQL.
Jika Anda menggunakan database MySQL yang dikelola sendiri pada Instance ECS, atur parameter region ke wilayah Instance ECS.
PentingInstans RDS, instans AnalyticDB for MySQL, atau Instance ECS harus berada di wilayah yang sama dengan proyek SLS.
vpc-idID VPC tempat instansiasi basis data berada. Rinciannya sebagai berikut:
Jika instans RDS PostgreSQL Anda berada di virtual private cloud (VPC), atur vpc-id ke ID VPC tersebut.
Untuk database ADB PostgreSQL di virtual private cloud (VPC), atur vpc-id ke ID VPC tersebut.
Jika database Alibaba Cloud Hologres berada di virtual private cloud (VPC), atur vpc-id ke ID VPC tersebut.
hostAlamat database. Rinciannya sebagai berikut:
Dalam VPC, jika alamat IP instansiasi basis data berubah setelah Anda membuat tabel eksternal, akses ke tabel eksternal tersebut akan terpengaruh. Misalnya, hal ini dapat terjadi jika instansiasi basis data dimigrasikan. Masalah ini tetap terjadi meskipun Anda menggunakan titik akhir internal dalam konfigurasi. Saat tabel eksternal dibuat, backend menyelesaikan nama domain menjadi alamat IP dan menyimpan alamat IP tersebut ke konfigurasi backend. Alamat IP yang sesuai dengan nama domain tidak diperbarui secara otomatis. Dalam kasus ini, Anda harus memperbarui atau membuat ulang tabel eksternal.
Jika Anda menggunakan database ApsaraDB RDS for MySQL, atur parameter host ke alamat internal instans RDS. Alamat internal dapat berupa titik akhir internal atau alamat IP pribadi.
Jika Anda menggunakan database AnalyticDB for MySQL, atur parameter host ke alamat internal instans AnalyticDB for MySQL. Alamat internal dapat berupa titik akhir internal atau alamat IP pribadi.
Jika Anda menggunakan database MySQL yang dikelola sendiri pada Instance ECS, atur parameter host ke alamat IP pribadi Instance ECS.
Jika database dapat diakses melalui Internet, atur parameter ini ke nama domain publik atau alamat IP publik.
portNomor port. Rinciannya sebagai berikut:
Jika Anda menggunakan database ApsaraDB RDS for MySQL, atur parameter port ke nomor port instans RDS.
Jika Anda menggunakan database AnalyticDB for MySQL, atur parameter port ke nomor port instans AnalyticDB for MySQL.
Jika Anda menggunakan database MySQL yang dikelola sendiri pada Instance ECS, atur parameter port ke port layanan MySQL pada Instance ECS.
usernameUsername akun database.
passwordPassword akun database.
dbNama database.
tableNama tabel database. Format yang didukung sebagai berikut:
`table_name`, seperti `test`.
`schema_name.table_name`, seperti `public.test`.
Gunakan sintaks SQL JOIN untuk melakukan kueri dan analisis asosiasi.
Login ke Konsol Simple Log Service.
Pada bagian Projects, klik proyek yang diinginkan.
Pada tab , klik logstore yang diinginkan.
Jalankan pernyataan kueri.
Tentukan bidang userid dalam log dan bidang uid dalam tabel database pada pernyataan kueri.
Analisis distribusi pengguna aktif berdasarkan jenis kelamin.
* | select case gender when 1 then 'Male' else 'Female' end as gender, count(1) as pv from log l join sls_join_meta_store u on l.userid = u.uid group by gender order by pv desc
Analisis keterlibatan pengguna di berbagai wilayah.
* | select region , count(1) as pv from log l join sls_join_meta_store u on l.userid = u.uid group by region order by pv desc
Analisis tren konsumsi pengguna berdasarkan jenis kelamin.
* | select case gender when 1 then 'Male' else 'Female' end as gender, sum(money) as money from log l join sls_join_meta_store u on l.userid = u.uid group by gender order by money desc
Simpan hasil kueri dan analisis ke database MySQL.
Buat tabel data bernama report di database MySQL untuk menyimpan jumlah tampilan halaman (PV) per menit.
CREATE TABLE `report` ( `minute` bigint(20) DEFAULT NULL, `pv` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8Buat external store untuk tabel report. Untuk informasi selengkapnya, lihat Langkah 3.
Pada halaman kueri dan analisis Logstore, jalankan pernyataan kueri berikut untuk menyimpan hasil ke tabel report. sls_report_store menunjukkan nama external store.
* | insert into sls_report_store select __time__- __time__ % 300 as min, count(1) as pv group by minSetelah hasil disimpan, lihat hasilnya di database MySQL.
