BigQuery'den AlloyDB'ye sıfır ETL veri federasyonu

1. Genel Bakış

1. Bölüm'de, Knowledge Catalog ve DataScan'i kullanarak karmaşık ve yapılandırılmamış PDF'leri BigQuery'de temiz, akıllı ve yapılandırılmış tablolara dönüştürmeyi başardık. Artık güçlü bir veri ambarımız var.

Hızlı bir hatırlatma yapmak gerekirse 1. bölümdeki laboratuvarda kurgusal bir Frozen Yogurt franchise'ının kullanım alanını ele almış ve metin, tablo ve resimlerden oluşan 400 yapılandırılmamış PDF dosyasını BigQuery Knowledge Catalog ve Dataplex'i kullanarak aralarında otomatik olarak çıkarılan ilişkilerle temiz bir şekilde yapılandırılmış BigQuery tablolarına dönüştürmüştük.

Ne oluşturacaksınız?

Bu oturumda, AlloyDB for PostgreSQL'i kurup sihirli bir şey yapacağız: BigQuery verilerimizi doğrudan AlloyDB'ye birleştireceğiz. Bu sayede işlemsel uygulamamız, depo verilerimizi kopyalamadan veya çoğaltmadan gerçek zamanlı olarak sorgulayabilir.

Geliştirici olarak bu aşamada şu soruyu sormanız gerekir:

"Veriler zaten BigQuery'de ise neden AlloyDB'yi kullanayım? Uygulama neden doğrudan BigQuery'ye karşı bir SELECT ifadesi çalıştırmıyor?"

Nedenleri şöyle sıralayabiliriz:

Lakehouse Federation ile AlloyDB'nin sorgu motorunu kullanarak uygulamanızın işlemsel ve analitik iş yüklerini aynı arayüzden destekleyebilirsiniz. Bu verileri AlloyDB'de somutlaştırabilir veya içe aktararak uygulamalarınızda kullanmak üzere daha hızlı erişebilir, böylece AlloyDB AI ve sütun yapılı motoru kullanabilirsiniz.

AlloyDB'yi işlemsel veritabanı olarak kullanabilir ve BigQuery veya BigLake'te büyük miktarda veriye sahip olabilirsiniz. Uygulamalarınız, bu farklı Google Cloud hizmetlerindeki verilere erişmek için genellikle bu iki sistemle bağımsız olarak entegre olur. AlloyDB için Lakehouse Federation, AlloyDB'de SQL arayüzü kullanarak BigQuery ve AlloyDB verilerine erişmek için AlloyDB'nin yabancı veri sarmalayıcı olarak uygulanan birleştirilmiş sorgu desteğini kullanmanıza olanak tanır.

AlloyDB'den BigQuery verilerini sorgulamak için kırılgan bir ETL ardışık düzeni oluşturmak yerine birleştirilmiş sorgular kullanacağız. AlloyDB, gerektiğinde BigQuery'ye sorunsuz bir şekilde ulaşan birleşik bir uç nokta görevi görür.

Oluşturmaya başlayalım.

1a3f48f6d70b16ad.png

Neler öğreneceksiniz?

  • Tek bir tıklamayla AlloyDB kümesi, örneği ve ağ iletişimi nasıl ayarlanır?
  • Federasyona hazırlanmak için uzantıyı ayarlama
  • BigQuery'den AlloyDB'ye federasyon oluşturma
  • Deneyin

Şartlar

  • Chrome veya Firefox gibi bir tarayıcı
  • Faturalandırmanın etkin olduğu bir Google Cloud projesi.
  • SQL hakkında temel düzeyde bilgi sahibi olmanız gerekir.

2. Başlamadan önce

Proje oluşturma

  1. Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
  2. Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Bir projede faturalandırmanın etkin olup olmadığını kontrol etmeyi öğrenin.
  1. Google Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız. Google Cloud Console'un üst kısmında Cloud Shell'i Etkinleştir'i tıklayın.

Cloud Shell'i etkinleştir düğmesinin resmi

  1. Cloud Shell'e bağlandıktan sonra aşağıdaki komutu kullanarak kimliğinizin doğrulandığını ve projenin proje kimliğinize ayarlandığını kontrol edin:
gcloud auth list
  1. gcloud komutunun projeniz hakkında bilgi sahibi olduğunu onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın.
gcloud config list project
  1. Kimlik doğrulamak istiyorsanız
gcloud auth login
  1. Projeniz ayarlanmamışsa ayarlamak için aşağıdaki komutu kullanın:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project <YOUR_PROJECT_ID>
  1. Gerekli API'leri etkinleştirin: Gerekli tüm API'leri etkinleştirmek için şu komutu çalıştırın:
gcloud services enable alloydb.googleapis.com

Dikkat Edilmesi Gerekenler ve Sorun Giderme

"Hayalet Proje" Sendromu

gcloud config set project komutunu çalıştırdınız ancak Console kullanıcı arayüzünde aslında farklı bir projeye bakıyorsunuz. Sol üstteki açılır listede proje kimliğini kontrol edin.

Faturalandırma Barikatı

Projeyi etkinleştirdiniz ancak faturalandırma hesabını unuttunuz. AlloyDB yüksek performanslı bir motordur. "Yakıt deposu" (faturalandırma) boşsa çalışmaz.

API Yayılımı Gecikmesi

"API'leri etkinleştir"i tıkladınız ancak komut satırında hâlâ Service Not Enabled yazıyor. 60 saniye bekleyin. Bulutun nöronlarını uyandırması biraz zaman alabilir.

Kota Quags

Yeni bir deneme hesabı kullanıyorsanız AlloyDB örnekleri için bölgesel kotaya ulaşabilirsiniz. us-central1 başarısız olursa us-east1'ı deneyin.

3. 1. Bölümdeki verilerin kısa özeti

Bu bölümde, yapılandırılmamış PDF'lerden ayıkladığımız yapılandırılmış verilerin BigQuery'de kullanılabilir olduğundan emin olmanız gerekir. 1. bölümü kaçırdıysanız veya faturalandırma hesabınız yoksa aşağıdaki adımları tamamlayarak başlayabilirsiniz:

Kişisel Gmail hesabınızdan Google Cloud Console'a gidin ve konsolun sağ üst köşesindeki Cloud Shell'i Etkinleştir düğmesini tıklayın:

91567e2f55467574.png

Ardından, aşağıdaki faturalandırma hesabı olmayan bölümündeki adımları uygulayın:

Veriler BigQuery'ye aktarıldığına göre sonraki adımlara geçebiliriz.

4. AlloyDB kümesi, örneği ve ağı oluşturma

AlloyDB kümesini, örneğini ve diğer bağımlılıkları ayarlamanıza yardımcı olacak web tabanlı bir hızlı başlangıç uygulaması vardır. Tek bir tıklamayla ayarlamak için bu laboratuvardaki 2-4 arasındaki adımları uygulayabilirsiniz:

https://codelabs.developers.google.com/quick-alloydb-setup

Kümeniz oluşturulduktan sonra Küme Genel Bakış sayfasına gidin ve hizmet hesabı ayrıntılarını buradan kopyalayın.

7cd9d04e06c826d8.png

5. İzinleri ayarlama

Bu Hizmet Hesabına BigQuery İzinleri Verme

  1. IAM & Admin > IAM'e (IAM ve Yönetici > IAM) gidin.
  2. Erişim izni ver'i tıklayın.
  3. AlloyDB hizmet hesabı adresini Yeni ana hesaplar alanına yapıştırın.
  4. Aşağıdaki rolleri atayın:
  • BigQuery Veri Görüntüleyici (roles/bigquery.dataViewer): Verilerin okunmasına izin verir.
  • BigQuery Kullanıcısı (roles/bigquery.user): Sorguların çalıştırılmasına izin verir.
  • (İsteğe bağlı ancak önerilir) BigQuery Read Session User (roles/bigquery.readSessionUser): Storage Read API aracılığıyla büyük veri kümelerinin okunmasını optimize eder.

6. AlloyDB'ye bağlanma ve BigQuery uzantısını etkinleştirme

Şimdi federasyon uzantısını yapılandırmak için yeni AlloyDB örneğimize bağlanıyoruz. Bu işlem için AlloyDB Studio'yu kullanacağız.

  1. Küme Genel Bakış sayfanızda (AlloyDB konsolu) AlloyDB Studio'yu tıklayın.

1dd78902dc2b4f39.png

  1. AlloyDB Hızlı Kurulum adımında yapılandırdığınız veritabanı, kullanıcı adı ve şifrenizle bağlanın.
  2. Bağlantı kurulduktan sonra sağ taraftaki Sorgu Düzenleyici sekmesinde aşağıdaki ifadeleri girin ve bunları tek tek ÇALIŞTIRIN:
CREATE EXTENSION IF NOT EXISTS  bigquery_fdw;

CREATE SERVER bigquery_server FOREIGN DATA WRAPPER bigquery_fdw;

CREATE USER MAPPING FOR postgres SERVER bigquery_server;
  1. İşlem başarıyla tamamlandıktan sonra soldaki Gezgin bölmesine gidin ve BigQuery tablolarına doğru aşağı kaydırın:

efe4f8be930824aa.png

  1. 3 nokta simgesini ve "BigQuery tablosunu bağla"yı tıklayın.
  2. Açılan BigQuery Tablosunu Bağla pop-up penceresinde, AlloyDB veritabanınızdaki verileri sorgulamak istediğiniz project_id'nizi ve BigQuery veri kümesi adını (1. bölümde oluşturulan) seçin.

1cc345197b0fbddf.png

  1. Tüm verilerinizin AlloyDB'ye bağlanması için her tabloyu tek tek seçin. Bunun nedeni, sütun türlerinin AlloyDB'de desteklendiğinden emin olmak için doğrulamamızdır.

Aynı işlemi tıklama yöntemi yerine SQL ile yapmak istiyorsanız:

CREATE FOREIGN TABLE <<TABLE_NAME>> (
      "cas_number" VARCHAR, "ingredient_name" VARCHAR, "max_moisture_percentage" DOUBLE PRECISION, "ph_range" VARCHAR, "purity_percentage" DOUBLE PRECISION, "shelf_life_months" BIGINT, "specific_gravity_range" VARCHAR
    ) SERVER "bigquery_server" OPTIONS (
      project '<<PROJECT_ID>>',
      dataset 'froyo_data',
      table '<<BQ_TABLE_NAME>>'
    );

Sihir!!!

AlloyDB'de "Yabancı Tablolar" özelliğini kullanıma sunduk. Bunlar normal PostgreSQL tabloları gibi görünür ve davranır ancak herhangi bir veri depolamaz. Bu verileri sorguladığınızda AlloyDB, sorguyu anında BigQuery'ye iletir, sonuçları getirir ve size döndürür.

7. AlloyDB'de federasyonu test etme

Büyük boyutlu analitik BigQuery veri kümemizi doğrudan işlemsel PostgreSQL veritabanımızdan sorgulayabildiğimizi doğrulayalım.

AlloyDB Studio'da kalmaya devam ederek "Midnight Swirl"de hangi alerjenlerin olduğunu öğrenmek için bir sorgu çalıştıralım (1. bölümde sorduğumuz sorunun aynısı, ancak bu kez AlloyDB'den soruluyor):

SELECT
    p.product_name,
    i.ingredient_name,
    a.allergen_name
FROM
    consistsof c
INNER JOIN product p
    ON c.product_id = p.product_id
INNER JOIN ingredient i
    ON c.ingredient_id = i.ingredient_name
LEFT OUTER JOIN containsallergen a
    ON i.ingredient_id = a.ingredient_id
WHERE
    UPPER(p.product_name) LIKE '%MIDNIGHT%SWIRL%'
    AND a.allergen_name IS NOT NULL;

Boom. BigQuery'de gördüğünüz sonuçların aynısını görmeniz gerekir.

7d0be18295c5dfbd.png

8. Temizleme

Bu laboratuvar tamamlandıktan sonra AlloyDB kümesini ve örneğini silmeyi unutmayın.

Küme, örnekleriyle birlikte temizlenmelidir.

9. Birleşik veri katmanınız için tebrikler

Şu ana kadar başardıklarımızı düşünün:

  1. İşlem uygulamamız (AlloyDB'de çalışır) hızlı ve eşzamanlı kullanıcı oturumlarını işleyebilir.
  2. Yoğun analitik veriye veya geçmiş bağlama (ör. tedarikçi ayrıntıları ya da karmaşık içerik eşlemeleri) ihtiyaç duyduğunda BigQuery froyo_dataschema'yı sorgular.
  3. Zero ETL. Veri ardışık düzenleri bozulmaz. Senkronize olmayan veritabanı yok. Verileri bir kez (BQ'da) depolar ve ihtiyaç duyduğumuz yerde hesaplarız.

Hem analitik hem de işlemsel veri temellerimiz artık sağlam ve birbirine bağlı olduğuna göre işin eğlenceli kısmına geçebiliriz.

3. Bölüm'de, Froyo işletme faaliyetlerini yürütmek için bu mimarinin üzerinde yer alan Çoklu Aracı Uygulaması'nı oluşturacağız.