Lewati ke konten utama
Data Science

Pengantar DuckDB: Apa Itu dan Mengapa Anda Harus Menggunakannya?

Jelajahi DuckDB, database analitik yang cepat dan mudah digunakan untuk Python dan R. Pelajari fitur utama, kasus penggunaan, dan bagaimana ia mengoptimalkan tugas analisis data.
Kurtis Pykes 's photo
Kurtis Pykes
Diperbarui · 7 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Buat Akun Gratis Anda

Berlatih dan lacak kemajuan Anda.

Lanjutkan Dengan Google
Dengan melanjutkan, Anda menerima Ketentuan Penggunaan kami, Kebijakan Privasi kami dan bahwa data Anda disimpan di Amerika Serikat.

Dalam ranah ilmu data dan analitik, mengekstrak insight dari data biasanya melibatkan serangkaian langkah, yang umumnya dilakukan di Python menggunakan pustaka seperti pandas. Meskipun kuat, pandas dapat menghadapi masalah kinerja pada kumpulan data besar dan operasi yang menyita banyak sumber daya.

Untuk menyeimbangkan fungsionalitas yang andal dan efisiensi, DuckDB muncul sebagai alternatif yang sangat baik. Sebagai database analitik yang berkecepatan tinggi dan ramah pengguna, DuckDB mengubah cara pemrosesan data di Python dan R.

Artikel ini akan membahas:

  • Fitur dan kapabilitas unik DuckDB
  • Keunggulan DuckDB dibandingkan alat manipulasi data tradisional
  • Kasus penggunaan praktis yang menunjukkan potensi DuckDB
  • Panduan untuk bekerja dengan DuckDB di Python dan R

Pada akhir artikel ini, Anda akan memahami mengapa DuckDB layak dipertimbangkan untuk tugas analisis data Anda, terlepas dari ukuran data dan kompleksitas operasinya.

Apa itu DuckDB?

DuckDB adalah Sistem Manajemen Basis Data (DBMS) Relasional OLAP (OnLine Analytical Processing) yang gratis, open-source, tertanam, dan in-process. Itu banyak istilah dan akronim, jadi mari kita uraikan:

  • Dengan in-process, maksudnya fitur DBMS berjalan dari dalam aplikasi yang Anda gunakan untuk mengaksesnya, bukan proses eksternal yang dihubungkan oleh aplikasi Anda
  • OLAP berarti database ini dirancang untuk analisis data. Ada juga database OnLine Transaction Processing (OLTP), yang dirancang untuk menangani data transaksional berskala besar.

Perbedaan utama antara OLAP dan OLTP adalah cara data disimpan. Database OLTP umumnya menyimpan data per rekaman dengan memastikan semua data yang terkait dengan satu rekaman disimpan berdekatan dalam memori. Database tersebut juga dioptimalkan untuk membaca dan menulis baris secara efisien.

Sebaliknya, database OLAP umumnya berorientasi kolom, yang berarti data diorganisasi berdasarkan kolom. Semua data yang terkait dengan satu kolom disimpan saling berdekatan dalam memori, dan database dioptimalkan untuk membaca dan melakukan komputasi pada kolom secara efisien.

Karena DuckDB adalah database OLAP, data apa pun yang disimpan diorganisasi berdasarkan kolom. Selain itu, DuckDB dioptimalkan untuk menjalankan kueri kompleks pada data (misalnya, join, agregasi, pengelompokan, dan sebagainya) – lihat jalur keterampilan SQL Fundamentals untuk mempelajari lebih lanjut.

Jika Anda familier dengan SQLite, cara termudah membayangkan DuckDB adalah sebagai replikanya yang berfokus pada analitik. Inilah alasan mengapa DuckDB begitu populer — ia memanfaatkan kesederhanaan SQLite dan fungsionalitas Snowflake di komputer lokal Anda. DuckDB mengisi kebutuhan solusi database tertanam untuk pemrosesan analitik.

Fitur Utama DuckDB

Mari kita lihat beberapa fitur utama DuckDB.

Kueri analitik yang cepat

DuckDB sangat cepat; ini mungkin mengejutkan bagi siapa pun yang familier dengan database yang menangani beban kerja OLAP, seperti PostgreSQL. Secara tradisional, database OLAP cenderung memiliki waktu respons lambat karena biasanya memproses lebih banyak data.

Namun, DuckDB berjalan di mesin kueri kolumnar-tervektorisasi, yang membantu memanfaatkan cache CPU secara efisien dan mempercepat waktu respons untuk beban kerja kueri analitik.

Mendukung SQL dan integrasi dengan bahasa pemrograman lain

DuckDB memungkinkan pengguna menjalankan kueri SQL yang kompleks dan menyediakan API untuk Java, C, C++, dan lainnya. Ia juga terintegrasi erat dengan Python dan R, memungkinkan analisis data interaktif yang efisien; dengan demikian, Anda dapat berinteraksi dengan DuckDB dari bahasa pemrograman pilihan Anda. Ada juga akses ke kata kunci SQL tambahan yang memudahkan penulisan kueri SQL, seperti EXCLUDE, REPLACE, dan ALL.

Catatan: DuckDB tidak memiliki dependensi eksternal, jadi Anda tidak perlu khawatir tentang masalah dependensi.

Gratis & open-source

DuckDB bersifat open-source dan memiliki banyak kontributor aktif, yang berarti pengembangan dan perbaikan dapat diimplementasikan dengan cepat. Ini juga gratis, meskipun mungkin tidak akan selamanya gratis.

Kasus Penggunaan DuckDB

Dua kasus penggunaan paling umum untuk DuckDB adalah analisis data interaktif dan komputasi edge.

Mari pelajari masing-masing secara singkat.

Analisis data interaktif

Analisis data menggambarkan serangkaian langkah yang terlibat dalam memproses dan memodelkan data. Tujuan analisis data adalah menemukan informasi yang berguna untuk mendukung kesimpulan dan keputusan berbasis data.

Saat ini, perusahaan mempekerjakan data scientist dan analis yang memikul tanggung jawab ini menggunakan teknologi seperti bahasa pemrograman Python dan R untuk melakukan analisis mereka.

DuckDB menawarkan alternatif yang lebih baik bagi mereka yang lebih suka menggunakan SQL untuk pengembangan lokal dibandingkan SQLite, yang kesulitan menangani beban kerja OLAP karena kurangnya fungsionalitas untuk analitik data.

Komputasi edge

Database yang dapat ditanamkan, seperti DuckDB, memungkinkan pengguna menganalisis data di edge. Komputasi edge adalah paradigma komputasi terdistribusi yang sedang berkembang, yang merujuk pada berbagai jaringan dan perangkat yang dibawa ke atau didekatkan dengan lokasi di mana komputasi tersebut dibutuhkan.

Memproses data lebih dekat ke tempat dibutuhkannya memungkinkan peningkatan waktu respons dan penghematan bandwidth.

Memulai dengan DuckDB

Lingkungan Anda menentukan langkah-langkah yang diperlukan untuk memasang DuckDB, namun panduan pemasangan lengkap dapat ditemukan di dokumentasi DuckDB.

Sebagian besar, caranya cukup mudah. Anda hanya memerlukan beberapa baris kode karena DuckDB adalah solusi tertanam. Ia juga tidak memerlukan server apa pun, dan tidak memiliki dependensi eksternal.

Berikut contoh cara memasang DuckDB menggunakan Python:

pip install duckdb==0.8.0

Dan di R:

install.packages("duckdb")

Sekarang, mari lihat beberapa contoh kode.

Bekerja dengan DuckDB di Python

Setelah Anda memasang DuckDB, memulainya cukup sederhana. Anda cukup melakukan import duckdb ke lingkungan Anda, lalu menyambung ke database yang ada atau membuat yang baru jika diperlukan.

Sebagai contoh:

import duckdb 
connection = duckdb.connect()

Karena tidak ada berkas database yang diteruskan sebagai parameter ke metode connect(), database baru akan dibuat.

Namun, cara paling mudah untuk mulai mengeksekusi kueri SQL dengan DuckDB adalah menggunakan metode sql().

# Source: Basic API usage - https://duckdb.org/docs/api/python/overview.html
import duckdb
duckdb.sql('SELECT 42').show()

Menjalankan perintah ini akan menjalankan database in-memory yang disimpan secara global di modul Python dan mengembalikan sebuah relation, yang pada dasarnya merupakan representasi simbolik dari kueri.

Perhatikan, kueri tidak dijalankan hingga hasilnya diminta secara eksplisit, seperti berikut:

# Source: Execute SQL - https://duckdb.org/docs/guides/python/execute_sql.html
results = duckdb.sql('SELECT 42').fetchall()
print(results)

"""
[(42,)]
"""

Kita juga dapat menggunakan metode df() untuk mengonversi data menjadi Pandas DataFrame:

results_df = duckdb.sql('SELECT 42').df()
print(results) 

"""
    42
0   42
"""

Atau Anda dapat menggunakan salah satu dari banyak metode ingestion data untuk membaca data ke dalam memori:

# Source: Python API - https://duckdb.org/docs/api/python/overview.html 
import duckdb
duckdb.read_csv('example.csv') # read a CSV file into a Relation
duckdb.read_parquet('example.parquet')# read a Parquet file into a Relation
duckdb.read_json('example.json') # read a JSON file into a Relation

duckdb.sql('SELECT * FROM "example.csv"')     # directly query a CSV file

Disclaimer: Jika Anda menggunakan metode sql() tanpa terlebih dahulu tersambung ke database yang ada, data apa pun yang Anda simpan dalam berkas akan hilang setelah program dimatikan. Anda dapat mencegah hal ini dengan membuat koneksi menggunakan metode connect() yang kita bahas di awal bagian ini.

Kesimpulan dan Sumber Lanjutan

DuckDB adalah database OLAP yang digunakan oleh para profesional data, seperti data scientist dan analis, untuk menganalisis data secara cepat dan efisien. Ia memanfaatkan mesin eksekusi kueri SQL yang mampu menjalankan kueri kompleks pada kumpulan data besar.

DuckDB juga memiliki integrasi dengan banyak bahasa pemrograman lain, sehingga Anda dapat mengaksesnya dari bahasa favorit Anda.

Untuk melanjutkan pembelajaran Anda, lihat SQL Basics Cheat Sheet dan bagaimana DuckDB menjadikan SQL sebagai warga kelas satu di DataLab.


Kurtis Pykes 's photo
Author
Kurtis Pykes
LinkedIn
Topik
Data Science
Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat Selengkapnya