Pertanyaan data besar dalam beberapa saat: Gudang data moden Google BigQuery dari kemasukan ke tutorial master

awan 2026-05-30 阅读 11
1

Pada era hari ini ketika data tahap TB dan PB bermula pada setiap giliran, hampir setiap pasukan Internet akan menghadapi masalah teknikal yang besar:

Laporan data diperiksa terlalu perlahan.

Pangkalan data komersial tradisional (seperti MySQL, PostgreSQL) menghadapi ratusan juta analisis log atau aliran e-dagang, walaupun anda membina indeks dengan sempurna, kompleks

GROUP BY

Apabila pertanyaan agregasi selesai, CPU pelayan dapat melonjak menjadi 100% dalam sekelip mata, dan kemudian lingkaran krisan selama beberapa minit atau bahkan beberapa jam, dan akhirnya kemalangan OOM (memori limpahan) secara langsung. Untuk menyelesaikan masalah ini, banyak pasukan terpaksa mengeluarkan harga tinggi untuk membina Hadoop atau bahkan membina kluster ClickHouse. Akibatnya, bukan sahaja ambang operasi dan penyelenggaraan sangat tinggi, tetapi bil perkakasan pelayan bulanan juga secara langsung menyakitkan bos.

Dalam ekologi Google Cloud(GCP, Google Cloud), ada langkah besar untuk mengurangkan dimensi dan memerangi analisis besar-besaran, yang disebut

Google BigQuery

Logik asasnya amat tulen:

Senibina Serverless (tanpa pelayan) yang dihoskan sepenuhnya Storan lajur diedarkan berskala besar

。 Anda tidak perlu menguruskan konfigurasi pelayan yang mendasari, anda tidak perlu membuat indeks, anda boleh membuang beratus-ratus atau ribuan fail GB secara langsung di atasnya, dan ia dapat menggunakan pernyataan SQL standard untuk mengeluarkan hasil agregat akhir untuk anda dalam beberapa saat.

Hari ini kita tidak menghafal formula kriptografi yang membosankan, dan menolak omong kosong. Secara langsung dari pertempuran yang paling sukar, pegangan akan membawa anda untuk mengkonfigurasi keseluruhan proses, dan membawa anda dari awal untuk mahir dalam permainan lanjutan peringkat perusahaan BigQuery.

Tahap pertama: pembongkaran mendalam, mengapa BigQuery dapat "pertanyaan tahap kedua"?

Sebelum menulis SQL, anda mesti membina model dunia fizikal BigQuery yang mendasari dalam fikiran anda, jika tidak, sukar bagi anda untuk memahami mengapa ia dapat berjalan begitu cepat tanpa mengindeks.

Lapisan bawah BigQuery adalah

Pengiraan dan penyimpanan dipisahkan sepenuhnya

Senibina yang mengganggu:

Terminal kontena (penyimpanan diedarkan Colossus): kedudukan kedudukan data anda. BigQuery menggunakan format Capacitor. Pangkalan data tradisional (penyimpanan baris): Untuk memeriksa usia semua pengguna, keseluruhan baris data yang mengandungi nama, alamat, kata laluan, dan lain-lain mesti dibaca dari cakera keras, menyebabkan sejumlah besar I/O terbuang. BigQuery (penyimpanan lajur): Data disimpan dalam kumpulan. Apabila anda memeriksa usia, ia hanya membaca data dalam lajur "umur" dengan tepat, dan lajur lain tidak menyentuh. Lebih daripada 90% cakera keras I/O dipotong secara langsung.

Superengine (Dremel Computing Cluster): Apabila anda menaip SQL pertanyaan kompleks di konsol dan klik untuk melaksanakannya, Google akan segera menghantar ratusan yang disebut Slot di latar belakang (meter

Unit pengiraan) nod pengiraan maya. Mereka seperti tentera, memotong data besar anda menjadi serpihan kecil yang tidak terkira banyaknya untuk imbasan serentak, dan akhirnya mengumpulkan hasilnya dan memuntahkannya kepada anda dalam beberapa saat.

Kesimpulan utama: Anda membayar ** Data Scanned ** (sekitar 5 dolar setiap 1 TB yang diimbas), atau membeli sumber pengkomputeran tetap. Oleh itu, bagaimana menulis SQL yang "menjimatkan wang dan cekap" adalah kawasan aliran antara pemula dan arkitek kilang besar.

Tahap kedua: latihan praktikal satu-pengalaman pertama import data dan pertanyaan tahap kedua

Pastikan anda sudah mempunyai akaun GCP. Kita mesti mengimport lebih daripada lima juta baris log tingkah laku pengguna dalam format CSV asal ke BigQuery.

1. Buat set data (Dataset)

Di BigQuery, struktur data sangat jelas: Projek-> Dataset (setara dengan pangkalan data)-> Jadual Data (Jadual).

Log masuk ke konsol GCP, cari dan pergi ke halaman BigQuery.

Di menu Explorer di sebelah kiri, klik tiga titik di sebelah kanan projek anda dan pilih "Buat data".

ID set data: Dinamakan ecommerce_analytics.

Lokasi data: Disarankan untuk memilih asia-east1 (Taiwan), yang dekat dengan negara dan cepat. Klik untuk mencipta.

2. Import data berstruktur dengan satu klik

Klik pada set data ecommerce_analytics yang baru dibina dan pilih "Buat jadual".

Sumber (Sumber): Pilih dari "Penyimpanan Google Cloud (Penyimpanan Objek GCS)" atau "Muat naik" fail tempatan secara langsung.

Format fail: Pilih CSV.

Nama jadual sasaran: Masukkan user_logs.

Senibina (Schema): Tandakan "Pengesanan Auto". BigQuery akan mengimbas baris pertama fail anda secara automatik dengan sangat pintar, dan secara automatik membezakan lajur mana yang merupakan rentetan dan lajur mana yang merupakan angka atau cap waktu.

Klik Buat Jadual. Beberapa saat kemudian, lebih daripada lima juta baris data telah terbaring dengan stabil dalam penyimpanan lajur yang diedarkan di awan Google.

3. Pengesahan aliran tarik kedua

Dalam editor pertanyaan, ketik SQL agregat paling standard berikut untuk melihat siapa 10 kategori produk teratas dengan jumlah pembelian tertinggi dalam 30 hari terakhir:

SQL

SELECT

Product_category,

COUNT(order_id) AS total_sales,

SUM(price) AS total_revenue

FROM

'Ecommerce _ analytics.us er_logs'

WHERE

Event_time> = TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)

KUMPULAN MENGIKUT

Product_category

ORDER BY

Total_revenue DESC

LIMIT 10;

Klik Jalankan. Menatap pemasa di sudut kanan atas skrin:

0.8 saat!

BigQuery melepasi semua lima juta baris data dalam masa kurang dari satu saat dan mengeluarkan jawapan yang tepat. Kekuatan enjin data besar peringkat kilang besar dapat dilihat sepenuhnya pada masa ini.

Tahap ketiga: penyesuaian prestasi peringkat tinggi peringkat perusahaan-insurans berganda "penjimatan wang dan pecutan"

Sebentar tadi kami mengalami kepantasan BigQuery, tetapi jika anda menghadapi persekitaran pengeluaran PB peringkat perusahaan yang sebenar, jika anda tidak mempedulikannya, anda tidak hanya akan melambatkan, tetapi jam pasir pada bil akhir bulan akan membuat anda sakit..

Sebagai ketua arkitek data, anda mesti segera memakai dua set garis pertahanan fizikal berikut semasa membuat jadual:

1. Garis pertahanan pertama: Partition-memotong imbasan tidak sah

Sekiranya anda telah mengumpulkan log 5 tahun yang lalu, dan anda hanya memeriksa data "semalam" setiap hari. Sekiranya tidak ada partisi, BigQuery akan mengimbas semua ruang cakera keras selama 5 tahun yang lalu secara lalai, dan kosnya akan penuh.

Konfigurasi spesifikasi tegar: Semasa membuat jadual atau merancang saluran paip, tentukan "partition" mengikut lajur waktu (seperti event_date).

Perbandingan kesan: Setelah membuka partisi, apabila anda mengehadkan WHERE event_date = '2026-05-30 'dalam keadaan WHERE, BigQuery akan seperti membalik buku di bahagian bawah, secara langsung dan tepat menuju laci yang diasingkan secara fizikal pada 30 Mei. Laci beribu-ribu tarikh bahkan tidak kelihatan. Jumlah imbasan turun dari 100GB menjadi 1GB dalam sekelip mata, dan bil langsung dikurangkan sebanyak 99%.

2. Garis pertahanan kedua: Kluster-Biarkan data "berkumpul dengan cara yang sama"

Pembahagian masa tidak mencukupi. Bagaimana jika saya ingin menyaring pengguna "Negara tertentu" atau "Sumber" dengan kerap?

Konfigurasi spesifikasi tegar: Berdasarkan pembahagian masa, tentukan "Cluster" untuk lajur negara dan sumber.

Orang dalam yang mendasari: BigQuery secara automatik akan mengatur data dari negara yang sama dan saluran yang sama dalam penyimpanan fizikal di latar belakang. Digunakan dengan partition, kelajuan analisis corong pelbagai dimensi anda dapat melambung tinggi lagi.

Tahap keempat: data besar komersial

Spesifikasi pembangunan dan sejarah darah dan air mata setiap hari

Alat ini sangat menyegarkan untuk digunakan, tetapi di laman web sebenar, banyak operasi dan penyelenggaraan dan pengembangan pemula sering melangkah ke dua lubang berdarah berikut kerana mereka tidak memahami peraturan BigQuery yang tidak diucapkan:

1. Penggunaan dilarang sama sekali

SELECT *

(Punca semua kejahatan, sampai jumpa di sini)

Dalam MySQL tradisional, kita biasa mengetuk

SELECT * Jadual FROM LIMIT 10

Mari lihat apa yang kelihatan seperti di luar.

Bencana maut: Dalam penyimpanan lajur BigQuery, LIMIT 10 tidak dapat membantu anda menjimatkan wang sama sekali! Kerana BigQuery dibaca oleh lajur, ketika anda menulis SELECT *, ia akan secara paksa mengeluarkan semua lajur dan data penuh dari cakera keras, walaupun anda hanya memerlukan 10 baris pada akhirnya. Sekiranya jadual ini mempunyai 100 GB, perintah biasa ini secara langsung akan menghasilkan potongan imbasan 100 GB.

Penyelesaian standard Dachang: Sekiranya anda hanya ingin melihat struktur dan sampel data jadual, jangan klik untuk bertanya! Klik terus pada nama jadual untuk beralih ke tab "Pratonton". Fungsi pratonton untuk melihat data adalah percuma dan sifar imbasan. Sekiranya anda perlu menulis SQL, anda mesti menulis dengan jelas lajur mana yang anda perlukan (seperti SELECT user_id, halaman).

2. Rangkul "meratakan mahakuasa" (tinggalkan tiga paradigma tradisional yang kaku)

Ramai pelajar yang telah berpindah dari pangkalan data hubungan tradisional terbiasa membongkar jadual dengan sangat terperinci: satu jadual untuk pengguna, satu jadual untuk pesanan, satu jadual untuk produk, dan akhirnya menggunakan lima atau enam ketika menulis analisis SQL

JOIN

Memaksa mereka bersama-sama.

Arkitek menyesuaikan kisah dalam: Di gudang data diedarkan moden, JOIN adalah operasi mahal yang menggunakan kuasa pengkomputeran kluster (kerana ia akan mencetuskan rombakan data antara sebilangan besar nod Shuffle). Struktur kegemaran BigQuery adalah Jadual Lebar (De-normalized Table).

Postur yang betul: Gunakan jenis RECORD (medan bersarang) dan REPEATED (medan berulang) yang unik untuk BigQuery. Anda boleh memasukkan semua pesanan dan semua lintasan sejarah pengguna secara langsung sebagai susunan bersarang (Array) ke dalam baris ini. Semasa membuat pertanyaan, gunakan fungsi UNNEST untuk membongkar seperti kilat, dan hapuskan sepenuhnya prestasi JOIN.

Tahap kelima: pemprosesan aliran masa nyata evolusi lanjutan dan skrin besar laporan BI

Sekiranya perniagaan syarikat anda perlu melihat "pasaran masa nyata" (seperti perubahan masa nyata GMV sesaat semasa promosi besar),BigQuery juga dapat bermain dengan mudah:

Streaming Inserts: Aplikasi belakang atau mesin pemprosesan aliran anda (seperti Apache Beam, Cloud Dataflow), anda boleh menggunakan BigQuery

Storage Write API menyuntikkan puluhan ribu log tingkah laku pengguna yang dihasilkan setiap saat ke dalam jadual user_logs dalam masa nyata seperti air mengalir.

Akses sifar ke skrin besar BI: klik terus "Data Penjelajahan" di bahagian atas BigQuery untuk membuka Google Looker Studio atau Tableau pihak ketiga dengan satu klik.

Oleh kerana BigQuery terbina dalam

BI Engine (enjin pecutan memori)

, Ia akan menyimpan petunjuk frekuensi tinggi dalam memori. Apabila bos dan pengendali perniagaan sering menyeret dan menyaring laporan dimensi apa pun di skrin depan yang besar, semua carta yang mendasari disegarkan.

Selesai dalam puluhan milisaat

, Benar-benar mencapai "data dapat dilihat ketika mendarat, pemerhatian global dalam beberapa saat".

Ringkasan

Dengan menggunakan Google BigQuery untuk membina gudang data moden peringkat perusahaan, inti pati industri sebenarnya terletak pada enam belas perkataan:

Mempercepat penyimpanan, kunci partisi, pratonton pelacur putih, universal meter lebar

Anda benar-benar menyingkirkan lautan penderitaan I/O yang asli untuk membina kluster perkakasan untuk analisis data besar dan menatap cakera mesin fizikal setiap hari. Hosting semua kuasa pengkomputeran, penyimpanan dan skalabiliti ke arus kuasa pengkomputeran Serverless teratas Google di dunia. Tidak kira seberapa banyak data tahap letusan gunung berapi yang dihasilkan oleh perniagaan depan, anda boleh duduk di depan komputer, memperoleh kemenangan, dan membiarkan data besar-besaran memancarkan nilai komersial sebenar untuk anda dalam sekelip mata.

cloud
← 返回新闻中心