Trino, sebelumnya dikenal sebagai PrestoSQL, adalah mesin kueri SQL terdistribusi sumber terbuka untuk analitik interaktif. Mulai dari versi E-MapReduce (EMR) 3.44.0 dan 5.10.0, EMR menggunakan nama resmi komunitas, yaitu Trino. Versi-versi sebelumnya menampilkan nama Presto di Konsol, tetapi mesin yang mendasarinya sebenarnya sudah merupakan Trino.
Fitur dasar
Trino dikembangkan dalam Java dan dirancang untuk analitik interaktif berkinerja tinggi. Trino mendukung:
Kepatuhan penuh terhadap ANSI SQL.
-
Berbagai sumber data melalui konektor, termasuk:
Hive
Cassandra
Kafka
MongoDB
MySQL
PostgreSQL
SQL Server
Redis
Redshift
Local files
-
Struktur data lanjutan, termasuk:
Array dan map
Data JSON
Data GIS
Data warna
-
Ekstensibilitas melalui berbagai mekanisme, termasuk:
Konektor data ekstensi
Tipe data kustom
Fungsi SQL kustom
Pemrosesan pipeline yang mengalirkan hasil kueri ke klien secara real time.
-
Pemantauan melalui beberapa antarmuka:
Antarmuka web yang memvisualisasikan progres eksekusi kueri.
Protokol JMX.
Komponen sistem
Gambar berikut menunjukkan komponen sistem Trino.
Kluster Trino menggunakan arsitektur koordinator/pekerja. Koordinator menerima kueri SQL dari klien, mengurai dan merencanakannya, lalu mendistribusikan tugas-tugas yang dihasilkan ke node pekerja. Koordinator menangani:
Penerimaan kueri pengguna, penguraian, pembuatan rencana eksekusi, dan distribusi tugas ke node pekerja.
Pemantauan status node pekerja. Setiap node pekerja mempertahankan koneksi heartbeat dengan koordinator untuk melaporkan statusnya.
Pemeliharaan data metastore.
Node pekerja mengeksekusi tugas-tugas terdistribusi tersebut. Mereka menggunakan konektor untuk membaca data dari sistem penyimpanan eksternal, memproses data, lalu mengembalikan hasilnya ke koordinator.
Kasus penggunaan
Trino dibangun untuk beban kerja Pemrosesan Analitik Online (OLAP)—analisis data, agregasi skala besar, dan pelaporan. Trino cocok untuk:
Extract, transform, and load (ETL)
Kueri ad hoc
Analisis data terstruktur atau semi-terstruktur skala besar
Agregasi dan analisis laporan data multidimensi skala besar
Trino bukan database relasional tujuan umum dan tidak menggantikan sistem seperti MySQL atau PostgreSQL. Dukungan transaksinya terbatas, sehingga tidak cocok untuk Pemrosesan Transaksi Online (OLTP) atau beban kerja transaksional lainnya.
Keunggulan
Trino pada E-MapReduce (EMR) menawarkan keunggulan berikut dibandingkan Trino sumber terbuka:
Kluster siap pakai. Buat kluster Trino dengan ratusan node dalam hitungan menit tanpa perlu konfigurasi.
Skalabilitas elastis yang sederhana.
Integrasi mulus dengan tumpukan perangkat lunak EMR dan dukungan terhadap data yang disimpan di Object Storage Service (OSS).
Operasi sepenuhnya terkelola tanpa perlu O&M.
Istilah
Model data
Trino mengorganisasi data dalam hierarki tiga lapis: katalog, skema, dan tabel.
-
Katalog
Katalog dipetakan ke sumber data eksternal melalui konektor dan berisi satu atau beberapa skema. Satu kueri dapat mencakup beberapa katalog sekaligus.
-
Skema
Skema setara dengan instansiasi basis data dan berisi beberapa tabel.
-
Tabel
Tabel berfungsi sama seperti pada database relasional standar.
Konektor
Konektor menyesuaikan Trino dengan sumber data tertentu, mirip dengan driver database. Setiap katalog diikat ke satu jenis konektor, yang dikonfigurasi dalam file properti katalog tersebut.
Trino menyediakan Service Provider Interface (SPI) standar yang dapat Anda implementasikan untuk membuat konektor kustom untuk sumber data apa pun. Trino juga menyertakan beberapa konektor bawaan yang dikelompokkan berdasarkan jenis sumber datanya:
Data lakes dan lakehouses: Hive dan sumber lain yang kompatibel dengan Hadoop
Database relasional: MySQL, PostgreSQL, SQL Server
Sistem lainnya: Cassandra, Kafka, MongoDB, Redis, Redshift, dan local files
Informasi lebih lanjut
Untuk melihat dokumentasi Trino sumber terbuka, ganti nomor versi pada URL http://trino.io/docs/3XX/ dengan versi komponen Trino Anda, lalu buka tautan tersebut di browser.
Sebagai contoh, jika versi Trino Anda adalah 331, gunakan https://trino.io/docs/331/. Untuk informasi lebih lanjut, lihat Dokumentasi Trino 331.