Saya telah meneliti basis data Redshift Amazon sebagai kemungkinan pengganti di masa depan untuk gudang data kami. Pengalaman saya selalu menggunakan pemodelan dimensi dan metode Ralph Kimball, jadi agak aneh melihat Redshift tidak mendukung fitur seperti tipe data serial untuk kolom penambahan otomatis.
Namun, ada posting blog terbaru dari AWS Big Data blog tentang cara mengoptimalkan Redshift untuk skema bintang: https://blogs.aws.amazon.com/bigdata/post/Tx1WZP38ERPGK5K/Optimizing-for-Star-Schemas -dan-Interleaved-Sorting-on-Amazon-Redshift
Pertanyaan saya adalah tentang apa praktik terbaik untuk memuat skema bintang di Redshift? Saya tidak dapat menemukan jawaban ini di dokumentasi Redshift mana pun.
Saya condong ke arah mengimpor file saya dari S3 ke dalam tabel panggung dan kemudian menggunakan SQL untuk melakukan transformasi seperti pencarian dan menghasilkan kunci pengganti sebelum memasukkan ke tabel tujuan.
Apakah ini yang sedang dilakukan orang lain? Apakah ada alat ETL yang bernilai uang untuk membuatnya lebih mudah?
sumber
Untuk ETL ada Lem AWS. Ini adalah layanan ETL serverless yang dikelola yang memuat ke Redshift (antara lain).
https://aws.amazon.com/glue/
sumber
Saat ini saya sedang berurusan dengan tugas yang sama. Ini untuk membangun proses ETL dan merancang model dimensi. Saya telah meneliti banyak cara terbaik untuk menghadapinya dan menemukan sumber teknik luar biasa yang sangat membantu yang harus kita terapkan ketika bekerja dengan MPP.
Untuk menjawab pertanyaan itu
pastikan untuk melihat sumber ini . Saya yakin Anda akan menemukannya sangat membantu. Ini adalah dokumen ~ 35 halaman dengan teknik yang kuat untuk meningkatkan penggunaan toko kolom MPP. Ini mendukung komentar yang Anda suka
komentar oleh Jon Scott
Semoga Anda menemukan itu berguna seperti yang saya lakukan
sumber
Saya pikir memuat dari S3 adalah pola umum.
Kami perlu menegakkan batasan keunikan sehingga kami memilih untuk menulis ke Postgres dan kemudian mereplikasi data baru ke pergeseran merah setiap 10 menit.
Kami menggunakan https://github.com/uswitch/blueshift untuk memuat ke Redshift.
sumber
Karena Redshift adalah basis data kolom, penyimpanan dan kinerja kueri akan berbeda dari model RDBMS. Mengoptimalkan untuk basis data kolom juga berbeda. Karena biasanya ada lebih sedikit disk I / O dan lebih sedikit data yang dimuat dari disk maka permintaan lebih cepat.
Dalam hal posting blog AWS yang Anda rujuk, saya kira Anda telah melihat rekomendasi itu dan mempertimbangkan opsi mana yang paling cocok untuk data Anda untuk distribusi, kunci, kursor, manajemen beban kerja, dll. Dan setidaknya memiliki ide bagus tentang pendekatan tersebut Anda akan menggunakan. Saya merasa lebih mudah untuk bekerja dengan representasi visual, Anda mungkin mempertimbangkan diagram DB cepat dan kotor yang menunjukkan bagaimana tabel Anda yang ada akan bermigrasi ke Redshift. Menutupi yang utama untuk merasakan berapa banyak data yang pergi ke mana. Dan saya pasti akan menggunakan driver ODBC / JDBC dari Amazon, memuat data dalam jumlah besar dapat merepotkan dalam hal apa pun, apalagi pindah ke tipe DB yang berbeda.
Sejauh ETL / ELT, ada Lem AWS seperti yang disebutkan poster lainnya. Dan ya, ada sejumlah alat, beberapa di antaranya gratis. Amazon memang memiliki Panduan Praktik Terbaik DB , yang mungkin membantu Anda juga. Salah satu tip yang saya lihat di forum lain adalah memuat data Anda sealami mungkin dan melakukan transformasi di Redshift. Itu akan membawa Anda ke proses ELT. Dengan begitu banyak pilihan, mungkin melihat perbandingan kedua metode itu akan membantu. Ini a artikel blog dari Panopoly yang menjelaskan perbedaannya, mungkin bisa membantu Anda memutuskan jalan.
sumber
Amazon baru-baru ini menerbitkan beberapa praktik terbaik untuk ETL di Redshift
https://aws.amazon.com/blogs/big-data/top-8-best-practices-for-high-performance-etl-processing-using-amazon-redshift/
Dalam presentasi tentang topik ini Tony Gibbs, AWS Solution Architect merekomendasikan pola berikut untuk pemuatan gaya UPSERT:
Masukkan data dari panggung
Bila mungkin lebih suka DROP TABLE atau TRUNCATE ke DELETE untuk menghindari baris hantu
Lihat video ceramahnya dan slide .
Di tim kami, kami biasanya memuat data ke Redshift langsung dari S3 menggunakan pernyataan SQL COPY .
Dan kelola semua ETL kami menggunakan alat Apache Airflow yang sangat baik .
Kami juga menggunakan layanan integrasi seperti Stich yang menulis langsung ke Redshift, dan kemudian menggunakan CREATE TABLE LIKE dan SELECT INTO untuk memindahkan data ke skema lain.
sumber