- Memperkenalkan 7 DB yang layak diperhatikan untuk menyelesaikan berbagai masalah
- Ini bukan daftar "DB terbaik", melainkan kumpulan alat yang menawarkan sudut pandang baru dan berguna
- Pada 2025, disarankan meluangkan waktu seminggu untuk masing-masing DB ini (7 DBs in 7 Weeks)
1. PostgreSQL: database default
- PostgreSQL adalah teknologi stabil yang digunakan sebagai pilihan default
- Ungkapan "Just use Postgres" adalah meme yang dikenal luas sekaligus simbol keandalan
- Mematuhi ACID serta menyediakan fitur kuat termasuk replikasi fisik dan logis
- Merupakan database stabil dengan dukungan luas di antara vendor-vendor utama
- Daya tarik terbesar PostgreSQL: ekstensibilitas
- Fitur ekstensi memungkinkan penambahan kemampuan yang unik
- Contoh ekstensi utama:
AGE: mendukung struktur data graf dan bahasa kueri Cypher
TimescaleDB: mendukung pekerjaan dengan data deret waktu
Hydra Columnar: menyediakan mesin penyimpanan berbasis kolom
- Ekstensi adalah elemen kunci yang membedakan PostgreSQL dari database lain
- Kegunaan dan ekstensibilitas PostgreSQL
- Memiliki ekosistem yang beragam, dengan pengaturan default yang masuk akal dan ramah pengguna
- Bahkan layanan non-PostgreSQL pun menyediakan kompatibilitas klien dengan memakai protokol wire Postgres
- Cukup ringan hingga bisa dipasang di lingkungan WebAssembly (Wasm)
- Rekomendasi mempelajari PostgreSQL
- Layak meluangkan waktu untuk memahami kemungkinan dan batasan PostgreSQL
- Contoh: memahami kompleksitas MVCC (Multi-Version Concurrency Control)
- Disarankan membuat aplikasi CRUD sederhana dan menulis ekstensi PostgreSQL
2. SQLite: database local-first
- SQLite adalah database "local-first" yang dapat berjalan secara mandiri
- Keluar dari model client-server dan berjalan di lingkungan yang sama dengan aplikasi
- Contoh: WhatsApp dan Signal menggunakan SQLite di dalam perangkat untuk menyimpan data percakapan
- Kasus penggunaan SQLite yang semakin maju
- Dapat dipakai secara kreatif melampaui database dasar yang patuh ACID
- Alat dan ekstensi baru:
Litestream: menyediakan backup streaming untuk SQLite
LiteFS: mendukung akses terdistribusi untuk membangun topologi yang lebih fleksibel
CR-SQLite: menggunakan CRDT (Conflict-free Replicated Data Types) untuk menghilangkan kebutuhan penyelesaian konflik saat menggabungkan change set
- Popularitas SQLite yang kembali disorot
- Kembali mendapat perhatian berkat Ruby on Rails 8.0
- 37signals: mengembangkan modul Rails berbasis SQLite (seperti Solid Queue)
- Dukungan Rails untuk pengelolaan banyak database SQLite (
database.yml)
- Bluesky: menggunakan database SQLite terpisah untuk setiap pengguna sebagai Personal Data Servers
- Rekomendasi mempelajari pemanfaatan SQLite
- Bereksperimen dengan arsitektur yang berpusat pada lokal menggunakan SQLite
- Mencoba apakah model client-server berbasis PostgreSQL yang ada dapat digantikan dengan SQLite
3. DuckDB: database yang bisa mengkueri segalanya
- DuckDB adalah database embedded yang berfokus pada OLAP
- Seperti SQLite, ia bekerja bersama aplikasi, tetapi berfokus pada beban kerja OLAP alih-alih OLTP
- Sistem yang dirancang untuk analisis data dan kueri
- Karakteristik "Query-Anything" DuckDB
- Dapat langsung mengkueri berbagai sumber data dengan SQL:
- Format file umum seperti CSV, TSV, JSON
- Mendukung format file lanjutan seperti Parquet
- Fitur ini memberi fleksibilitas, misalnya untuk menganalisis stream data Bluesky
- Ekstensibilitas dan ekosistem
- DuckDB juga memiliki ekstensi, tetapi belum sekaya Postgres (proyek yang relatif lebih muda)
- Ada banyak ekstensi kontribusi komunitas, dan
gsheets (integrasi Google Sheets) patut diperhatikan
- Rekomendasi mempelajari pemanfaatan DuckDB
- Bereksperimen dengan analisis dan pemrosesan data melalui notebook Python atau Evidence
- Menggabungkannya dengan SQLite: mendelegasikan kueri analitis atas database SQLite ke DuckDB untuk meningkatkan performa
4. ClickHouse: database kolumnar
- ClickHouse adalah database yang dioptimalkan untuk beban kerja OLAP
- Kombinasi idealnya adalah PostgreSQL untuk OLTP dan ClickHouse untuk OLAP
- Menangani workload analitik berskala besar, serta mendukung kecepatan ingest data tinggi melalui scale-out dan sharding
- Karakteristik utama ClickHouse
- Mendukung tiered storage:
- Dapat memisahkan dan menyimpan "hot data" dan "cold data"
- Contoh: dokumentasi GitLab membahas secara rinci kasus pemanfaatannya
- Pemrosesan dataset besar dan analisis real-time:
- Cocok untuk dataset yang ukurannya sulit ditangani dengan DuckDB
- Memberikan performa kuat untuk situasi yang membutuhkan analisis real-time
- Kemudahan operasional
- Dokumentasi operasional seperti deployment, scaling, dan backup tersusun rapi dan detail
- Contoh: tersedia dokumen yang bahkan membahas cara mengatur CPU yang tepat
- Rekomendasi mempelajari ClickHouse
- Bereksperimen dengan dataset analitik skala besar atau memindahkan analisis yang dikerjakan di DuckDB ke ClickHouse
- Menggunakan
chDB, versi embedded dari ClickHouse, untuk membandingkannya lebih langsung dengan SQLite
5. FoundationDB: database berlapis
- FoundationDB adalah sistem unik yang berperan sebagai "fondasi database"
- Dirancang sebagai key-value store, tetapi alih-alih sekadar database sederhana, ia berfungsi sebagai "dasar" untuk membangun database
- Digunakan oleh perusahaan besar seperti Apple, Snowflake, dan Tigris Data
- Karakteristik utama dan keterbatasan
- Batasan:
- Data transaksi tidak boleh melebihi 10MB
- Transaksi tidak boleh berlangsung lebih dari 5 detik setelah pembacaan pertama
- Batasan ini memungkinkan dukungan transaksi ACID penuh bahkan pada lingkungan berskala besar
- Contoh: ada kasus pengoperasian cluster lebih dari 100TiB
- Desain dan pengujian FoundationDB
- Dirancang dengan optimasi untuk workload tertentu
- Pengujian simulasi membuktikan stabilitas dan skalabilitasnya:
- Antithesis dan database lain juga memakai metodologi pengujian yang sama
- Referensi terkait: dokumen oleh Tyler Neely dan Phil Eaton
- FoundationDB sebagai database "berlapis"
- Keterikatan antara storage engine dan model data longgar:
- Storage engine dapat dipetakan ulang di berbagai layer
- Contoh: Record Layer dan Document Layer (disediakan oleh organisasi FoundationDB)
- Contoh desain layer yang dibuat Tigris Data layak dijadikan referensi
- Rekomendasi mempelajari FoundationDB
- Mengikuti tutorial sambil mengeksplorasi kemungkinan menggantikan sistem seperti RocksDB
- Membaca Design Recipes dan makalah terkait
- Memahami batasan penggunaan dan masalah yang bisa diselesaikan melalui dokumen Anti-Features dan Features
6. TigerBeetle: database yang sangat menekankan akurasi
- TigerBeetle adalah database single-purpose yang dikhususkan untuk transaksi keuangan
- Berbeda dari database general-purpose, fokusnya pada tujuan spesifik, terutama transaksi finansial
- Tersedia sebagai open source dan dirancang dengan target keandalan serta akurasi tingkat tinggi
- Filosofi desain untuk akurasi menyeluruh
- Mengimplementasikan Power of Ten Rules dari NASA dan Protocol-Aware Recovery
- Menggunakan strict serialisability dan Direct I/O untuk menghindari masalah terkait page cache kernel
- Ketelitian ini terlihat dalam dokumen Safety dan gaya pemrograman unik "Tiger Style"
- Pendekatan inovatif yang diimplementasikan dengan bahasa Zig
- Zig adalah bahasa pemrograman sistem yang relatif baru, tetapi sangat cocok dengan tujuan TigerBeetle
- Keunggulan Zig dimanfaatkan untuk memaksimalkan kesederhanaan dan performa
- Saran pembelajaran dan pemanfaatan TigerBeetle
- Bereksperimen memodelkan akun keuangan di lingkungan deployment lokal:
- Ikuti Quick Start untuk instalasi dan penggunaan
- Rujuk dokumentasi arsitektur sistem (System Architecture docs) untuk mengeksplorasi kemungkinan penggabungan dengan database general-purpose
- Contoh: mengintegrasikannya dengan PostgreSQL atau FoundationDB untuk memperluas use case
7. CockroachDB: database global
- CockroachDB adalah database terdistribusi global
- Kompatibel dengan protokol wire PostgreSQL, serta mendukung scale-out dan konsistensi kuat
- Desainnya terinspirasi oleh Google Spanner, sehingga memungkinkan ekspansi database lintas banyak region
- Karakteristik teknis utama CockroachDB
- Teknologi sinkronisasi waktu:
- Google Spanner memakai atomic clock dan GPS clock, tetapi CockroachDB dirancang agar berjalan di hardware umum
- Koreksi latensi sinkronisasi berbasis NTP, perbandingan clock drift antar node, dan penghentian anggota bila melebihi maksimum offset
- Konfigurasi multi-region:
- Fitur Table Localities memungkinkan optimasi berdasarkan trade-off baca/tulis
- Data didistribusikan sesuai lokasi geografis pengguna untuk meningkatkan performa dan latensi
- Saran pembelajaran pemanfaatan CockroachDB
- Mengimplementasikan ulang contoh MovR:
- Bangun MovR (contoh aplikasi terdistribusi) dengan bahasa dan framework pilihan Anda
- Bereksperimen merancang aplikasi global dengan memanfaatkan strategi multi-region dan scaling CockroachDB
- Alasan memilih CockroachDB
- Tidak seperti database terdistribusi lain seperti DynamoDB, ia dapat dijalankan gratis di lingkungan lokal
- Menawarkan karakteristik pembeda berupa konsistensi kuat dan dukungan distribusi global
Wrap Up
- Database yang diperkenalkan dirancang untuk menyelesaikan masalah dan kebutuhan yang berbeda-beda
- Di 2025, pelajari database-database ini dan jelajahi cara-cara pemecahan masalah yang lebih menarik dan kreatif!
14 komentar
Cari apa saja! 馃槅馃悿
Saya cukup terkejut karena performa analisis DuckDB ternyata jauh lebih unggul dari yang saya kira.
Sudah beberapa bulan saya menangani pekerjaan pemrosesan data per tanggal menggunakan sqlite. Volume datanya sekitar 2 juta entri dan 5GB.
Kecepatan pemrosesannya memuaskan, tapi setelah data ini diolah lalu dibuat kembali menjadi file Excel untuk dibagikan kepada para pihak terkait, waktunya jadi terlalu lama.
Sepertinya saya perlu sedikit mendalami cara menggunakan OpenPyXl.
Entah ada sihir apa, tapi katanya mereka memakai kombinasi duckDB + sqlite.
Ternyata MongoDB tidak disebutkan ya.
Jika Anda berada di lingkungan yang mengkhawatirkan learning curve pengembang, saya merekomendasikan SQLite. Berbasis file, jadi mudah.
Jika dipastikan tidak ada kebutuhan akses jarak jauh, ini benar-benar solusi yang sangat memuaskan. Tidak ada lagi poin pengelolaan DB, dan pengeditan data serta backup/pemulihan juga mudah sehingga sangat baik.
Kalau bilang mau pakai SQLITE, enak buat dihujat, tapi sebelum bilang pakai SQLITE, ternyata tidak ada yang tahu juga sih... SQLITE ternyata lebih bagus dari yang dikira.
Saya sudah memakai MySQL selama puluhan tahun (??),
Saya menantikan banyak komentar dari rekan-rekan yang menggunakan PostgreSQL di production dalam pekerjaan nyata, tentang seperti apa PostgreSQL itu.
"Gajah lebih unggul daripada anjing laut"
Ini benar dalam sebagian besar situasi
wkwkwk
Pada 2001, saya beralih dari mysql yang penuh bug (saat itu v3.x) ke pgsql.
Ada banyak hal yang menurut saya lebih unggul, tetapi.. dalam praktiknya, saya rasa keberadaan Partial Index adalah fitur yang paling kuat.
Karena pekerjaan, saya hanya memakai Oracle dan Sqlserver, lalu saat mencoba menggunakan MySQL, ternyata ada sangat banyak hal yang membuat saya berpikir, "Kenapa ini tidak bisa?" Saya juga sudah tidak ingat persisnya. Akhirnya saya beralih ke Postgres.
Setelah terbiasa memakai Postgres lalu pindah ke tempat yang memakai MySQL, ada cukup banyak hal yang bikin saya merasa, kenapa ini tidak bisa? Kenapa performanya tidak keluar seperti ini? Saya juga tidak begitu ingat persis apa saja itu (bisa jadi sepele, bisa juga tidak).