Ini adalah postingan blog yang sudah saya rencanakan untuk ditulis pada musim semi ketika saya melihat bahwa hype seputar DuckDB mulai meningkat. Sejak itu diskusi seputar DuckDB semakin intensif di komunitas pengembang dan rekayasa data. Saat ini saya melihat dua tren dalam komunitas data dengan tingkat keterlibatan tinggi: DuckDB dan “Rust mengambil alih rekayasa data”. Tapi apa sebenarnya hype seputar DuckDB? Mari kita gores permukaannya sedikit.

Banyaknya percepatan yang terjadi saat ini di bidang data dapat dibarengi dengan peningkatan pesat gudang data cloud selama beberapa tahun terakhir. Gudang data cloud telah menjadi landasan tumpukan data: perusahaan dan organisasi dari semua ukuran menggunakan gudang data untuk mendukung kasus penggunaan analitik. Kenaikan pesat Snowflake — yang berpuncak pada IPO blockbuster pada September 2020 yang menjadi IPO perangkat lunak terbesar dalam sejarah — telah menjadi contoh utama tren ini.

Saat melihat “3 Vs Big Data” (Kecepatan, Volume, Variasi), banyak komunitas data yang saya ajak bicara akhir-akhir ini mengatakan bahwa dimensi yang paling dibutuhkan selama beberapa tahun terakhir adalah kecepatan.

Seperti yang dicatat oleh Mehdi Ouazza (Staf Insinyur Data di Trade Republic) — kenyataannya adalah bahwa setiap orang tidak memiliki data “Besar” — tetapi persyaratan untuk konsumsi latensi rendah dari layanan mikro pada aset data yang diproses dari database OLTP Anda adalah kasus penggunaan yang umum.

Seperti yang dikatakan Mehdi, jika kita melihat beberapa tren produk (RocksDB, DuckDB, Clickhouse), semuanya menyediakan antarmuka yang lebih mudah untuk konsumsi latensi rendah. Bahkan beberapa raksasa gudang data cloud telah berinvestasi dalam aplikasi ini, seperti Snowflake Unistore.

Namun, paradigma gudang data cloud saat ini masih sangat condong pada kasus penggunaan server-klien dan mengabaikan segmen pengguna yang terus berkembang. Seperti yang dicatat oleh Tomasz Tunguz (investor di Redpoint Ventures):

“Sebagian besar beban kerja tidak terlalu besar. Daripada memerlukan database yang diperluas skalanya, sebagian besar analisis menjadi lebih cepat dengan database yang dioptimalkan di komputer Anda yang dapat memanfaatkan cloud saat diperlukan.”

DuckDB mengubah ini.

Seperti yang terlihat melalui data penelusuran Google Trends di atas — selama beberapa bulan terakhir telah terjadi diskusi yang berkembang dan sensasi yang nyata seputar DuckDB di komunitas data.

Momentum yang semakin meningkat

Momentum pertumbuhan di balik DuckDB menjadi jelas hanya dengan melihat postingan di media sosial. Misalnya. “Robert Sahlin” (Pimpinan Teknik Data di MatHem), “mencatat hal berikut” di LinkedIn pada bulan Juli:

“Saya telah mendengar banyak hal baik tentang DuckDB akhir-akhir ini dan menemukan podcast dengan Jordan Tigani (pendiri MotherDuck dan selebriti BigQuery) dan Hannes Mühleisen (pendiri pencipta DuckDB Labs) sangat bagus. Oleh karena itu saya harus mencobanya. Program pertama saya adalah membuat tabel DuckDB dengan membaca langsung dari tabel BigQuery menggunakan API Baca Penyimpanan BigQuery karena mendukung tabel panah (dan tanpa komputasi). Ternyata sangat mudah, berbagi sebagai intinya. Tidak sabar untuk bereksperimen lagi dengan DuckDB dan dengan volume data yang lebih besar, hal ini tentu memiliki potensi yang sangat besar.”

Dan Robert jelas bukan satu-satunya yang tertarik dengan DuckDB ketika membaca postingan media sosial (saya sarankan melakukan pencarian saja di hashtag #duckdb di LinkedIn atau Twitter). Misalnya. Abhishek Choudhary (Senior Lead Data Engineer Bayer) baru-baru ini menulis yang berikut di LinkedIn:

“Opini: Salah satu teknologi baru yang paling menarik untuk Rekayasa Data/Ilmu Data adalah DuckDB. DuckDB sangat cepat dan dengan Apache Arrow, keduanya mampu memberikan hasil yang menakjubkan. Poin penting lainnya di balik DuckDB adalah kesederhanaannya. Ia tidak mengklaim hal-hal inovatif apa pun, namun tetap berpegang pada inti akses data yang sederhana dan lebih cepat.”

Namun, komentar media sosial favorit saya tentang DuckDB kemungkinan besar adalah oleh Josh Wills, di thread Twitter yang membahas postingan blog “Bagaimana Snowflake gagal” oleh Benn Stancil yang selalu menghibur (saya sarankan berlangganan ke Substack-nya ):

Temukan di bawah ini beberapa tangkapan layar tambahan dari tweet yang menunjukkan minat yang saat ini dikatalisasi oleh DuckDB dalam komunitas data:

Membangun solusi terkelola di atas DuckDB

Ini adalah pedoman yang cukup klasik — gunakan alat sumber terbuka yang menampilkan momentum dan bangun layanan di atasnya. Misalnya. Databricks melakukan ini dengan Spark dan Confluent dengan Kafka.

Jordan Tigani, pemimpin produk BigQuery di Google (selebriti BigQuery seperti yang dicatat oleh Robert Sahlin sebelumnya), mengumumkan pada bulan Mei bahwa dia ikut mendirikan DuckDB versi cloud tanpa server yang disebut MotherDuck. Bergabung dengannya adalah rekan Google-nya Tino Tereshko.

Selain MotherDuck, kami memiliki DuckDB Labs, yang merupakan perusahaan komersial yang dibentuk oleh Hannes Mühleisen dan pembuat DuckDB lainnya pada Juli 2021 untuk memberikan dukungan, ekstensi khusus, dan bahkan versi khusus produk sebagai cara untuk memonetisasinya .

Seperti yang ditulis Lauren Balik dalam postingan blognya “6 Prediksi Berbasis Realitas untuk Data pada tahun 2023” — pemodal ventura dan profesional data berhak untuk berbondong-bondong ke DuckDB.

Minat ini terwujud kemarin dengan MotherDuck mengumumkan putaran pendanaan $47,5 juta yang dipimpin oleh mis. a16z (investor awal misalnya Databricks) dan Redpoint Ventures (investor awal misalnya Snowflake). MotherDuck dan DuckDB Labs juga mengumumkan “kemitraan strategis” pada saat yang bersamaan.

Jordan Tigani (salah satu pendiri MotherDuck) berkomentar berikut ini kepada “TechCrunch” ketika mengumumkan putaran pendanaan:

“Pengguna menginginkan jawaban yang mudah dan cepat atas pertanyaan mereka — mereka tidak ingin menunggu cloud… Faktanya adalah laptop modern lebih cepat daripada gudang data modern. Vendor data cloud berfokus pada kinerja kueri 100TB, yang tidak hanya tidak relevan bagi sebagian besar pengguna, namun juga mengganggu kemampuan vendor dalam memberikan pengalaman pengguna yang luar biasa.”

Tetapi apa maksud dari hype ini? Mari kita garuk permukaannya sedikit.

DuckDB adalah database OLAP dalam proses open source yang mudah digunakan (yang memproses data dalam memori dan tidak memerlukan server/layanan khusus) — dijelaskan oleh banyak orang dalam istilah yang disederhanakan sebagai setara dengan SQLite untuk beban kerja OLAP analitis.

Di HackerNoon, itu "sekali" digambarkan sebagai "keturunan mutan dari SQLite dan Redshift".

Seperti yang dicatat oleh tim MoterDuck, sebagai database dalam proses, DuckDB adalah mesin penyimpanan dan komputasi yang memungkinkan pengembang, ilmuwan data, insinyur data, dan analis data untuk memperkuat kode mereka dengan analisis yang sangat cepat menggunakan SQL biasa. Lebih jauh lagi, DuckDB memiliki kemampuan untuk menganalisis data di mana ia mungkin berada, misalnya. di laptop atau di cloud. Selain itu, DuckDB hadir dengan CLI sederhana untuk pembuatan prototipe cepat — tanpa memerlukan pengaturan, izin, membuat dan mengelola tabel, dll.

Berdasarkan membaca utas di mis. HackerNews, Reddit dan Twitter, sepertinya ada banyak hal yang disukai tentang DuckDB, misalnya:

  • Kinerjanya untuk beban kerja analitis pada mesin node tunggal tampaknya mengesankan dan pengaturannya tidak merepotkan (secara teknis Anda dapat mulai menjelajahi DuckDB dalam waktu 5 menit).
  • DuckDB dapat disematkan — seperti SQLite — dan dioptimalkan untuk analitik. Masalah besarnya di sini adalah bagian yang dapat disematkan (seperti perpustakaan tanpa membawa ketergantungan khas PostgreSQL), menghilangkan latensi jaringan yang biasanya Anda dapatkan saat berbicara dengan database.
  • DuckDB juga memiliki upaya penerapan yang sangat rendah — `pip install duckdb` dan Anda pun siap berlomba.
  • DuckDB lebih jauh lagi cepat — dibandingkan dengan menanyakan Postgres, “DuckDB 80X lebih cepat” dan saat melakukan benchmarking pada sistem lain kita dapat melihat “hasil yang sama mengesankannya”.

Inilah beberapa alasan DuckDB “menyaksikan pertumbuhan yang mengesankan” selama 12 bulan terakhir.

Dalam praktiknya, CPU apa pun dapat dimobilisasi untuk melakukan analisis yang kuat melalui DuckDB. Selain itu, DuckDB bersifat portabel dan modular, tanpa ketergantungan eksternal. Secara konkret, ini berarti Anda dapat menjalankan DuckDB di mesin virtual cloud, di fungsi cloud, di browser, atau di laptop Anda seperti yang disebutkan sebelumnya.

Mari kita mundur selangkah

Di bagian berikut, saya banyak meminjam postingan blog dari bulan Juni milik Kojo Osei (investor di Matrix Partners) tentang DuckDB.

Seperti yang disebutkan Kojo, kategori gudang data yang sedang berkembang berada di titik persimpangan antara kueri analitis dan penerapan tertanam. Untuk mengilustrasikan mengapa hal ini begitu menarik, dia mengkategorikan database dalam dua sumbu:

Seperti yang terlihat di atas dan dicatat oleh Kojo, database saat ini dioptimalkan untuk beban kerja analitis atau transaksional. Beban kerja analitis — juga disebut Pemrosesan Analitik Online (OLAP) — adalah kueri kompleks pada data historis. Misalnya, Anda mungkin ingin menganalisis pendaftaran pengguna yang dikelompokkan berdasarkan demografi seperti usia dan lokasi. Di sisi lain, beban kerja transaksional — juga disebut sebagai Pemrosesan Transaksional Online (OLTP) — dioptimalkan untuk membaca dan menulis secara cepat dan real-time.

Mari beralih ke jenis penerapan.

Seperti yang terlihat di atas dan dicatat oleh Kojo, teknologi database saat ini diterapkan sebagai solusi yang berdiri sendiri atau tertanam. Basis data yang berdiri sendiri biasanya diterapkan dalam paradigma klien-server. Basis data berada di server terpusat dan ditanyakan oleh aplikasi klien. Basis data tertanam dijalankan dalam proses host aplikasi apa pun yang mengakses basis data.

Sekarang ada keajaiban. Ketika kita menggabungkan kedua sumbu ini, kita dapat melihat kesenjangan inovasi! Seperti yang digarisbawahi Kojo, inovasi terkini dalam database OLAP berfokus pada database OLAP yang berdiri sendiri seperti Snowflake, ClickHouse, dan Redshift (tidak tahu mengapa dia meninggalkan BigQuery). Hal ini telah membawa kita pada situasi di mana kasus penggunaan analisis tertanam telah diabaikan dan tidak terlayani. DuckDB mengubah ini.

Kasus penggunaan untuk DuckDB

Airbyte memiliki "dalam glosariumnya" ringkasan singkat contoh kasus penggunaan untuk DuckDB:

  • Kasus penggunaan analitis ultra-cepat secara lokal. Misalnya, contoh Taksi di Glosarium Airbyte menyertakan contoh data Taksi baris 10 Tahun, 1,5 Miliar yang masih berfungsi di laptop. Lihat tolok ukur di sini.
  • Ini dapat digunakan sebagai pembungkus SQL tanpa salinan (di atas parket di S3).
  • Hadirkan data Anda kepada pengguna alih-alih mengalami bolak-balik dan latensi yang besar dengan melakukan panggilan REST. Sebagai gantinya, Anda dapat memasukkan data ke dalam klien. Anda dapat melakukan 60 frame per detik karena data adalah tempat kueri berada.
  • DuckDB di Kubernetes untuk lapisan tanpa salinan untuk membaca S3 di Data Lake! Terinspirasi oleh Tweet “ini”. Opsi termurah dan tercepat untuk memulai.

Berdasarkan dokumentasi, DuckDB harus digunakan ketika:

  • Memproses dan menyimpan kumpulan data tabel, mis. dari file CSV atau Parket
  • Melakukan analisis data interaktif, misalnya. menggabungkan & menggabungkan beberapa tabel besar
  • Memiliki perubahan besar secara bersamaan, ke beberapa tabel besar, mis. menambahkan baris, menambah/menghapus/memperbarui kolom
  • Memiliki hasil yang besar mengatur transfer ke klien

Berdasarkan dokumentasi, DuckDB tidak boleh digunakan ketika:

  • Memiliki kasus penggunaan transaksional bervolume tinggi (misalnya melacak pesanan e-commerce)
  • Menulis ke database tunggal dari beberapa proses secara bersamaan
  • Memiliki instalasi klien/server yang besar untuk pergudangan data perusahaan terpusat

Untuk mempelajari lebih lanjut tentang kasus penggunaan DuckDB, dengarkan episode The Data Engineering Podcast ini bersama Hannes Mühleisen, salah satu pembuat DuckDB (diskusi kasus penggunaan dimulai sekitar 14 menit).

Pikiran terakhir

Ada banyak sistem manajemen basis data di luar sana. Namun seperti yang “dicatat” oleh pembuat DuckDB: tidak ada sistem database yang cocok untuk semua. Semua mengambil trade-off yang berbeda agar dapat menyesuaikan diri dengan kasus penggunaan tertentu dengan lebih baik. DuckDB tidak berbeda.

Saat Anda berpikir tentang memilih mesin database untuk proyek Anda, Anda biasanya mempertimbangkan opsi yang berfokus pada melayani beberapa pengguna secara bersamaan. Terkadang yang benar-benar Anda perlukan adalah database tertanam yang sangat cepat untuk beban kerja pengguna tunggal. Masukkan DuckDB.

Lebih jauh lagi, sepertinya DuckDB juga memungkinkan seluruh komunitas penggemar SQL untuk langsung produktif menggunakan Python tanpa harus mempelajari lebih dari sekedar Panda dasar. Semakin banyak anggota komunitas data yang tidak lagi menggunakan Pandas untuk hal rumit karena mereka lebih menyukai SQL.

“Luis Velasco” (Pimpinan Solusi Data di Google) “diringkas dengan baik di LinkedIn” beberapa bulan yang lalu mengapa menurutnya DuckDB adalah masalah besar:

1. Kita hidup di era disagregasi besar pada platform data terpusat. Paradigma desentralisasi komputasi yang lebih ekstrim yang dapat saya pikirkan adalah jaringan laptop. Kombinasi teknologi seperti parket + pyaArrow dengan eksekusi vektor menjadikannya efisien untuk melakukan kueri kumpulan data besar di perangkat pribadi.

2. Dengan meningkatnya literasi data dan peningkatan keterampilan pengkodean di sebagian besar pekerja data, konsumsi wawasan tidak lagi bersifat statis – dasbor – tetapi bersifat eksploratif dan mandiri. Jadi saya membayangkan analis data mengakses data di penyimpanan cloud, menjalankan analisis tertanam secara lokal dengan duckDB.

3. SQL menjadi lebih hidup dari sebelumnya — titik.

4. Tanpa upaya penerapan — `pip install duckdb` dan Anda pun ikut serta

5. Open Source — Terdapat komunitas dinamis yang terbentuk, dengan dukungan di bagian-bagian penting seperti pandas, dbt atau apachesuperset, belum lagi startup baru seperti DuckDB Labs dan MotherDuck

Apa pendapat Anda tentang masa depan DuckDB?

PS: Saya sarankan menonton "video "Apa itu DuckDB" ini" oleh The Seattle Data Guy di mana dia berdiskusi bersama dengan "Joseph Machado" (Senior Data Engineer di LinkedIn) tentang bagaimana DuckDB memasuki dunia data dengan pesat.