MySQL için Amazon İlişkisel Veritabanı Hizmeti (Amazon RDS) ile sıfır ETL entegrasyonu Amazon Kırmızıya Kaydırma oldu açıkladı AWS re:Invent 2023 for Amazon RDS for MySQL sürüm 8.0.28 veya üzeri'nde önizlemede. Bu yazıda, bu özelliği kullanarak neredeyse gerçek zamanlı operasyonel analitiği kullanmaya nasıl başlayacağınız konusunda adım adım rehberlik sağlıyoruz. Bu yazı ile başlayan sıfır ETL serisinin devamı niteliğindedir. Amazon Redshift ile Amazon Aurora sıfır ETL entegrasyonunu kullanarak neredeyse gerçek zamanlı operasyonel analizler için başlangıç kılavuzu.
Zorluklar
Günümüzde farklı sektörlerdeki müşteriler, kişiselleştirme stratejileri, sahtekarlık tespiti, envanter izleme ve daha pek çok şey gibi neredeyse gerçek zamanlı analitik kullanım örneklerini uygulayarak verileri rekabet avantajlarına göre kullanmayı ve geliri ve müşteri katılımını artırmayı amaçlıyor. Bu kullanım senaryolarına yönelik operasyonel verileri analiz etmeye yönelik iki genel yaklaşım vardır:
- Operasyonel veritabanındaki verileri yerinde analiz edin (okuma kopyaları, birleştirilmiş sorgu ve analiz hızlandırıcılar gibi)
- Verileri, veri ambarı gibi kullanım durumuna özel sorguları çalıştırmak için optimize edilmiş bir veri deposuna taşıyın
Sıfır ETL entegrasyonu, ikinci yaklaşımı basitleştirmeye odaklanmıştır.
Çıkarma, dönüştürme ve yükleme (ETL) süreci, verileri operasyonel bir veritabanından analitik veri ambarına taşımak için yaygın bir model olmuştur. ELT, çıkarılan verilerin ilk önce olduğu gibi hedefe yüklendiği ve daha sonra dönüştürüldüğü yerdir. ETL ve ELT işlem hatlarının oluşturulması pahalı ve yönetimi karmaşık olabilir. Birden fazla temas noktasıyla, ETL ve ELT işlem hatlarındaki aralıklı hatalar uzun gecikmelere neden olabilir, veri ambarı uygulamalarında eski veya eksik veriler bırakılabilir ve bu da iş fırsatlarının kaçırılmasına yol açabilir.
Alternatif olarak, verileri yerinde analiz eden çözümler, tek bir veritabanındaki sorguları hızlandırmak için harika çalışabilir ancak bu tür çözümler, birleşik analitiği çalıştırması gereken müşteriler için birden fazla operasyonel veritabanından veri toplayamaz.
Sıfır ETL
Verilerin tek bir veritabanında depolandığı ve kullanıcının birleştirilmiş analiz ile performans arasında bir denge kurmak zorunda olduğu geleneksel sistemlerin aksine, veri mühendisleri artık birden fazla RDS for MySQL veritabanındaki verileri tek bir Redshift veri ambarına kopyalayarak tüm platformlarda bütünsel içgörüler elde edebilir. birçok uygulama veya bölüm. İşlemsel veritabanlarındaki güncellemeler otomatik ve sürekli olarak Amazon Redshift'e aktarılır, böylece veri mühendisleri neredeyse gerçek zamanlı olarak en güncel bilgilere sahip olur. Yönetilmesi gereken bir altyapı yoktur ve entegrasyonun ölçeği veri hacmine göre otomatik olarak artırılıp azaltılabilir.
AWS olarak, sıfır ETL vizyonu hayata. Şu anda sıfır ETL entegrasyonları için aşağıdaki kaynaklar desteklenmektedir:
Amazon Redshift için sıfır ETL entegrasyonu oluşturduğunuzda, temeldeki kaynak veritabanı için ödeme yapmaya ve Redshift veritabanı kullanımını hedeflemeye devam edersiniz. Bakınız Sıfır ETL entegrasyon maliyetleri (Önizleme) daha fazla detay için.
Amazon Redshift ile sıfır ETL entegrasyonu sayesinde entegrasyon, verileri kaynak veritabanından hedef veri ambarına kopyalar. Veriler Amazon Redshift'te saniyeler içinde kullanılabilir hale gelir ve Amazon Redshift'in analitik özelliklerinin yanı sıra veri paylaşımı, iş yükü optimizasyonu otonomileri, eş zamanlı ölçeklendirme, makine öğrenimi ve çok daha fazlası gibi yetenekleri kullanmanıza olanak tanır. Amazon RDS'de işlem işleminize devam edebilirsiniz veya Amazon Aurora'sı Amazon Redshift'i aynı anda raporlama ve kontrol panelleri gibi analitik iş yükleri için kullanırken.
Aşağıdaki şema bu mimariyi göstermektedir.
Çözüme genel bakış
Hadi düşünelim BİLETKullanıcıların spor etkinlikleri, gösteriler ve konserler için çevrimiçi bilet alıp sattığı kurgusal bir web sitesi. Bu web sitesindeki işlem verileri Amazon RDS for MySQL 8.0.28 (veya daha yüksek sürüm) veritabanına yüklenir. Şirketin iş analistleri, zaman içindeki bilet hareketlerini, satıcıların başarı oranlarını ve en çok satan etkinlikleri, mekanları ve sezonları belirlemek için ölçümler oluşturmak istiyor. Sıfır ETL entegrasyonu kullanarak bu ölçümleri neredeyse gerçek zamanlı olarak almak istiyorlar.
Entegrasyon, Amazon RDS for MySQL (kaynak) ve Amazon Redshift (hedef) arasında kurulur. Kaynaktan gelen işlem verileri, analitik sorguları işleyen hedefte neredeyse gerçek zamanlı olarak yenilenir.
Amazon Redshift için sunucusuz seçeneği veya şifrelenmiş bir RA3 kümesini kullanabilirsiniz. Bu yazı için, temel hazırlığı yapılmış bir RDS veritabanı ve Redshift tarafından sağlanmış bir veri ambarı kullanıyoruz.
Aşağıdaki diyagram üst düzey mimariyi göstermektedir.
Sıfır ETL entegrasyonunu ayarlamak için gereken adımlar aşağıda verilmiştir. Bu adımlar sıfır ETL sihirbazı tarafından otomatik olarak gerçekleştirilebilir ancak sihirbazın Amazon RDS veya Amazon Redshift ayarını değiştirmesi durumunda yeniden başlatmanız gerekecektir. Henüz yapılandırılmamışsanız, bu adımları manuel olarak gerçekleştirebilir ve yeniden başlatma işlemlerini size uygun zamanda gerçekleştirebilirsiniz. Başlangıç kılavuzlarının tamamı için bkz. Amazon Redshift ile Amazon RDS sıfır ETL entegrasyonlarıyla çalışma (önizleme) ve Sıfır ETL entegrasyonlarıyla çalışma.
- MySQL için RDS kaynağını özel bir veritabanı parametre grubuyla yapılandırın.
- Büyük/küçük harfe duyarlı tanımlayıcıları etkinleştirmek için Redshift kümesini yapılandırın.
- Gerekli izinleri yapılandırın.
- Sıfır ETL entegrasyonunu oluşturun.
- Amazon Redshift'teki entegrasyondan bir veritabanı oluşturun.
MySQL için RDS kaynağını özelleştirilmiş bir veritabanı parametre grubuyla yapılandırma
MySQL için RDS veritabanı oluşturmak için aşağıdaki adımları tamamlayın:
- Amazon RDS konsolunda adında bir Veritabanı parametre grubu oluşturun.
zero-etl-custom-pg
.
Sıfır ETL entegrasyonu, MySQL veritabanı tarafından oluşturulan ikili günlükleri (binlog'lar) kullanarak çalışır. Amazon RDS for MySQL'de binlog'ları etkinleştirmek için belirli bir parametre kümesinin etkinleştirilmesi gerekir.
- Aşağıdaki binlog kümesi parametre ayarlarını yapın:
binlog_format = ROW
binlog_row_image = FULL
binlog_checksum = NONE
Ayrıca, aşağıdakilerin yapıldığından emin olun: binlog_row_value_options
parametre şu şekilde ayarlanmamış PARTIAL_JSON
. Varsayılan olarak bu parametre ayarlanmamıştır.
- Klinik veritabanları gezinme bölmesinde, ardından Veritabanı oluştur.
- İçin Motor Versiyonu, seçmek MySQL 8.0.28 (veya daha yüksek).
- İçin Şablonlarseçin üretim.
- İçin Kullanılabilirlik ve dayanıklılıkya da birini seçin Multi-AZ Veritabanı bulut sunucusu or Tek veritabanı örneği (Multi-AZ DB kümeleri bu yazının yazıldığı an itibariyle desteklenmemektedir).
- İçin Veritabanı bulut sunucusu tanımlayıcısı, girmek
zero-etl-source-rms
.
- Altında Örnek yapılandırmaseçin Bellek için optimize edilmiş sınıflar ve örneği seçin
db.r6g.large
TICKIT kullanım durumu için yeterli olmalıdır.
- Altında Ek yapılandırma, Için DB kümesi parametre grubu, daha önce oluşturduğunuz parametre grubunu seçin (
zero-etl-custom-pg
).
- Klinik Veritabanı oluştur.
Birkaç dakika içinde sıfır ETL entegrasyonunun kaynağı olarak MySQL için RDS veritabanını başlatmalıdır.
Redshift hedefini yapılandırma
Kaynak veritabanı kümenizi oluşturduktan sonra Amazon Redshift'te bir hedef veri ambarı oluşturup yapılandırmanız gerekir. Veri ambarı aşağıdaki gereksinimleri karşılamalıdır:
- RA3 düğüm türünü kullanma (
ra3.16xlarge
,ra3.4xlarge
ya dara3.xlplus
) Veya Amazon Redshift Sunucusuz - Şifrelenmiş (sağlanmış bir küme kullanılıyorsa)
Kullanım örneğimiz için aşağıdaki adımları tamamlayarak bir Redshift kümesi oluşturun:
- Amazon Redshift konsolunda şunu seçin: yapılandırmaları ve sonra seç İş yükü yönetimi.
- Parametre grubu bölümünde şunu seçin: oluşturmak.
- adında yeni bir parametre grubu oluşturun
zero-etl-rms
. - Klinik Parametreleri düzenle ve değerini değiştirin
enable_case_sensitive_identifier
içinTrue
. - Klinik İndirim.
Ayrıca kullanabilirsiniz AWS Komut Satırı Arayüzü (AWS CLI) komutu güncelleme-çalışma grubu Redshift Sunucusuz için:
- Klinik Tedarik edilen kümeler panosu.
Konsol penceresinin üst kısmında bir Yeni Amazon Redshift özelliklerini önizlemede deneyin afiş.
- Klinik Önizleme kümesi oluştur.
- İçin Parçayı önizleyin, seçti
preview_2023
. - İçin düğüm türü, desteklenen düğüm türlerinden birini seçin (bu yazı için şunu kullanıyoruz:
ra3.xlplus
).
- Altında Ek yapılandırmalargenişletin Veritabanı yapılandırmaları.
- İçin Parametre grupları, seçmek
zero-etl-rms
. - İçin Şifrelemeseçin AWS Key Management Service'i kullanın.
- Klinik Küme oluştur.
Küme haline gelmeli Mevcut Bir kaç dakika içinde.
- Ad alanına gidin
zero-etl-target-rs-ns
ve seçiniz Kaynak politikası sekmesi. - Klinik Yetkili sorumlular ekle.
- AWS kullanıcısının veya rolünün Amazon Kaynak Adını (ARN) ya da entegrasyon oluşturmasına izin verilen AWS hesap kimliğini (IAM sorumluları) girin.
Bir hesap kimliği, kök kullanıcılı bir ARN olarak saklanır.
- içinde Yetkili entegrasyon kaynakları bölümü, seçim Yetkili entegrasyon kaynağı ekleyin Sıfır ETL entegrasyonunun veri kaynağı olan MySQL veritabanı örneği için RDS'nin ARN'sini eklemek için.
Bu değeri Amazon RDS konsoluna gidip şuraya giderek bulabilirsiniz: yapılandırma sekmesinin sekmesi zero-etl-source-rms
Veritabanı örneği.
Kaynak politikanız aşağıdaki ekran görüntüsüne benzemelidir.
Gerekli izinleri yapılandırın
Sıfır ETL entegrasyonu oluşturmak için kullanıcınızın veya rolünüzün iliştirilmiş bir kimlik tabanlı politika uygun olanla AWS Kimlik ve Erişim Yönetimi (IAM) izinleri. Bir AWS hesabı sahibi şunları yapabilir: gerekli izinleri yapılandırın Sıfır ETL entegrasyonları oluşturabilecek kullanıcılar veya roller için. Örnek politika, ilişkili sorumlunun aşağıdaki eylemleri gerçekleştirmesine olanak tanır:
- MySQL veritabanı bulut sunucusu için kaynak RDS'ye yönelik sıfır ETL entegrasyonları oluşturun.
- Tüm sıfır ETL entegrasyonlarını görüntüleyin ve silin.
- Hedef veri ambarına gelen entegrasyonlar oluşturun. Aynı hesap Redshift veri ambarına sahipse ve bu hesap söz konusu veri ambarı için yetkili sorumlu ise bu izin gerekli değildir. Ayrıca Amazon Redshift'in, tedarik edilen ve sunucusuz kümeler için farklı bir ARN formatına sahip olduğunu unutmayın:
- Sağlanan -
arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid
- Serverless -
arn:aws:redshift-serverless:{region}:{account-id}:namespace/namespace-uuid
- Sağlanan -
İzinleri yapılandırmak için aşağıdaki adımları tamamlayın:
- IAM konsolunda, Politikaları Gezinti bölmesinde.
- Klinik Politika oluştur.
- adlı yeni bir ilke oluşturun.
rds-integrations
aşağıdaki JSON'u kullanarak (değiştirin)region
veaccount-id
gerçek değerlerinizle):
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"rds:CreateIntegration"
],
"Resource": [
"arn:aws:rds:{region}:{account-id}:db:source-instancename",
"arn:aws:rds:{region}:{account-id}:integration:*"
]
},
{
"Effect": "Allow",
"Action": [
"rds:DescribeIntegration"
],
"Resource": ["*"]
},
{
"Effect": "Allow",
"Action": [
"rds:DeleteIntegration"
],
"Resource": [
"arn:aws:rds:{region}:{account-id}:integration:*"
]
},
{
"Effect": "Allow",
"Action": [
"redshift:CreateInboundIntegration"
],
"Resource": [
"arn:aws:redshift:{region}:{account-id}:cluster:namespace-uuid"
]
}]
}
- Oluşturduğunuz politikayı IAM kullanıcı veya rol izinlerinize ekleyin.
Sıfır ETL entegrasyonunu oluşturun
Sıfır ETL entegrasyonunu oluşturmak için aşağıdaki adımları tamamlayın:
- Amazon RDS konsolunda, Sıfır ETL entegrasyonları Gezinti bölmesinde.
- Klinik Sıfır ETL entegrasyonu oluşturun.
- İçin Entegrasyon tanımlayıcısı, bir ad girin, örneğin
zero-etl-demo
.
- İçin Kaynak veritabanı, seçmek RDS veritabanlarına göz atın ve kaynak kümesini seçin
zero-etl-source-rms
. - Klinik Sonraki.
- Altında Hedef, Için Amazon Redshift veri ambarı, seçmek Redshift veri ambarlarına göz atın ve Redshift veri ambarını seçin (
zero-etl-target-rs
). - Klinik Sonraki.
- Varsa etiketler ve şifreleme ekleyin.
- Klinik Sonraki.
- Entegrasyon adını, kaynağını, hedefini ve diğer ayarları doğrulayın.
- Klinik Sıfır ETL entegrasyonu oluşturun.
Ayrıntıları görüntülemek ve ilerlemesini izlemek için entegrasyonu seçebilirsiniz. Durumun değişmesi yaklaşık 30 dakika sürdü Oluşturma için Aktif.
Kaynaktaki veri kümenizin boyutuna bağlı olarak süre değişecektir.
Amazon Redshift'teki entegrasyondan bir veritabanı oluşturun
Veritabanınızı sıfır ETL entegrasyonundan oluşturmak için aşağıdaki adımları tamamlayın:
- Amazon Redshift konsolunda şunu seçin: Kümeleri Gezinti bölmesinde.
- Açın
zero-etl-target-rs
küme. - Klinik Verileri sorgula sorgu düzenleyicisi v2'yi açmak için.
- Redshift veri ambarına aşağıdakileri seçerek bağlanın: İndirim.
- Elde edin
integration_id
itibarensvv_integration
sistem tablosu:
select integration_id from svv_integration; -- copy this result, use in the next sql
- Kullan
integration_id
entegrasyondan yeni bir veritabanı oluşturmak için önceki adımdan:
CREATE DATABASE zetl_source FROM INTEGRATION '<result from above>';
Entegrasyon artık tamamlandı ve kaynağın anlık görüntüsünün tamamı hedefte olduğu gibi yansıtılacak. Devam eden değişiklikler neredeyse gerçek zamanlı olarak senkronize edilecektir.
Gerçek zamanlıya yakın işlem verilerini analiz edin
Artık TICKIT'in operasyonel verileri üzerinde analitik çalıştırabiliriz.
Kaynak TICKIT verilerini doldurun
Kaynak verileri doldurmak için aşağıdaki adımları tamamlayın:
- CSV giriş veri dosyalarını yerel bir dizine kopyalayın. Aşağıda örnek bir komut verilmiştir:
aws s3 cp 's3://redshift-blogs/zero-etl-integration/data/tickit' . --recursive
- RDS for MySQL kümenize bağlanın ve TICKIT veri modeli için bir veritabanı veya şema oluşturun, bu şemadaki tabloların bir birincil anahtara sahip olduğunu doğrulayın ve yükleme işlemini başlatın:
mysql -h <rds_db_instance_endpoint> -u admin -p password --local-infile=1
- Aşağıdakileri kullanın CREATE TABLE komutları.
- LOAD DATA komutunu kullanarak verileri yerel dosyalardan yükleyin.
Aşağıdaki bir örnektir. Giriş CSV dosyasının birkaç dosyaya bölündüğünü unutmayın. Tüm verileri yüklemek istiyorsanız bu komutun her dosya için çalıştırılması gerekir. Demo amacıyla kısmi veri yüklemesi de çalışmalıdır.
Hedefteki kaynak TICKIT verilerini analiz edin
Amazon Redshift konsolunda entegrasyon kurulumunun parçası olarak oluşturduğunuz veritabanını kullanarak sorgu düzenleyicisi v2'yi açın. Tohum veya CDC etkinliğini doğrulamak için aşağıdaki kodu kullanın:
Artık dönüşümler için iş mantığınızı doğrudan veri ambarına kopyalanan verilere uygulayabilirsiniz. Analitik sorgularınız için sorgu performansını artırmak amacıyla çoğaltılmış tabloları ve diğer yerel tabloları birleştiren bir Redshift materyalleştirilmiş görünümü oluşturmak gibi performans optimizasyon tekniklerini de kullanabilirsiniz.
İzleme
Amazon Redshift ile sıfır ETL entegrasyonlarınız hakkında bilgi almak için Amazon Redshift'te aşağıdaki sistem görünümlerini ve tablolarını sorgulayabilirsiniz:
Yayınlanan entegrasyonla ilgili metrikleri görüntülemek için Amazon Bulut İzlemeAmazon Redshift konsolunu açın. Seçmek Sıfır ETL entegrasyonları Gezinti bölmesinde simgesine dokunun ve etkinlik ölçümlerini görüntülemek için entegrasyonu seçin.
Amazon Redshift konsolundaki mevcut metrikler, entegrasyon metrikleri ve tablo istatistikleridir; tablo istatistikleri, Amazon RDS for MySQL'den Amazon Redshift'e çoğaltılan her tablonun ayrıntılarını sağlar.
Entegrasyon ölçümleri, tablo çoğaltma başarısını ve başarısızlık sayılarını ve gecikme ayrıntılarını içerir.
Manuel yeniden senkronizasyonlar
Bir tablo senkronizasyon durumu başarısız olarak veya yeniden senkronizasyon gerekli olarak gösterilirse, sıfır ETL entegrasyonu otomatik olarak bir yeniden senkronizasyon başlatır. Ancak otomatik yeniden eşitlemenin başarısız olması durumunda tablo düzeyinde ayrıntı düzeyinde yeniden eşitleme başlatabilirsiniz:
ALTER DATABASE zetl_source INTEGRATION REFRESH TABLES tbl1, tbl2;
Bir tablo birçok nedenden dolayı başarısız duruma geçebilir:
- Birincil anahtar tablodan kaldırıldı. Bu gibi durumlarda birincil anahtarı yeniden eklemeniz ve daha önce bahsettiğimiz ALTER komutunu uygulamanız gerekir.
- Çoğaltma sırasında geçersiz bir değerle karşılaşıldı veya desteklenmeyen veri türüne sahip yeni bir sütun tabloya eklendi. Bu gibi durumlarda desteklenmeyen veri tipinin bulunduğu sütunu kaldırıp, daha önce bahsettiğimiz ALTER komutunu uygulamanız gerekmektedir.
- Nadir durumlarda dahili bir hata tablonun arızalanmasına neden olabilir. ALTER komutu sorunu çözmelidir.
Temizlemek
Sıfır ETL entegrasyonunu sildiğinizde işlem verileriniz kaynak RDS'den veya hedef Redshift veritabanlarından silinmez ancak Amazon RDS, Amazon Redshift'e herhangi bir yeni değişiklik göndermez.
Sıfır ETL entegrasyonunu silmek için aşağıdaki adımları tamamlayın:
- Amazon RDS konsolunda, Sıfır ETL entegrasyonları Gezinti bölmesinde.
- Silmek istediğiniz sıfır ETL entegrasyonunu seçin ve seçin Sil.
- Silme işlemini onaylamak için seçin Sil.
Sonuç
Bu yazıda size MySQL için Amazon RDS'den Amazon Redshift'e sıfır ETL entegrasyonunun nasıl kurulacağını gösterdik. Bu, karmaşık veri hatlarını koruma ihtiyacını en aza indirir ve işlemsel ve operasyonel veriler üzerinde neredeyse gerçek zamanlı analizlere olanak tanır.
Amazon RDS'nin Amazon Redshift ile sıfır ETL entegrasyonu hakkında daha fazla bilgi edinmek için bkz. Amazon Redshift ile Amazon RDS sıfır ETL entegrasyonlarıyla çalışma (önizleme).
Yazarlar Hakkında
hafif tamam Amazon Web Services'te üç yıldır çalışan kıdemli bir Redshift uzman çözüm mimarıdır. Queens, New York merkezli, AWS sertifikalı bir SA Ortağı, Güvenlik Uzmanlığı ve Analitik Uzmanlığı sertifikası sahibidir.
Aditya Samant ticari ve açık kaynaklı veritabanlarıyla çalışma konusunda 2 yılı aşkın deneyime sahip, ilişkisel veritabanı sektöründe deneyimli bir kişidir. Halen Amazon Web Services'te Baş Veritabanı Uzmanı Çözüm Mimarı olarak çalışmaktadır. Görevi gereği zamanını müşterilerle birlikte çalışarak ölçeklenebilir, güvenli ve sağlam bulut yerel mimarileri tasarlayarak geçiriyor. Aditya, hizmet ekipleriyle yakın işbirliği içinde çalışıyor ve Amazon'un yönetilen veritabanlarına yönelik yeni özelliklerin tasarlanması ve sunulması konusunda işbirliği yapıyor.
- SEO Destekli İçerik ve Halkla İlişkiler Dağıtımı. Bugün Gücünüzü Artırın.
- PlatoData.Network Dikey Üretken Yapay Zeka. Kendine güç ver. Buradan Erişin.
- PlatoAiStream. Web3 Zekası. Bilgi Genişletildi. Buradan Erişin.
- PlatoESG. karbon, temiz teknoloji, Enerji, Çevre, Güneş, Atık Yönetimi. Buradan Erişin.
- PlatoSağlık. Biyoteknoloji ve Klinik Araştırmalar Zekası. Buradan Erişin.
- Kaynak: https://aws.amazon.com/blogs/big-data/unlock-insights-on-amazon-rds-for-mysql-data-with-zero-etl-integration-to-amazon-redshift/