Apa itu data deret waktu?
- Data deret waktu adalah kumpulan data yang setiap titik datanya memiliki stempel waktu
- Contoh: harga saham, data suhu dan ketersediaan yang dikembalikan oleh perangkat dan sensor, data trafik situs web
- Pekerjaan deret waktu umumnya mencakup kueri pemfilteran waktu dan kueri agregasi untuk peringkasan data
Pekerjaan deret waktu dengan PostgreSQL
- PostgreSQL dapat menangani semua pekerjaan data berkat skalabilitas dan alat ekosistemnya
- Tembo menetapkan tujuan agar pengguna dapat dengan mudah memanfaatkan ekosistem PostgreSQL
- Permintaan terbesar dari pelanggan adalah stack yang dapat menyimpan dan memproses data deret waktu
Komponen pg_timeseries
- Kebutuhan untuk menyimpan dan mengueri data deret waktu secara efisien:
- Mengelola data deret waktu dengan mudah
- Menangani throughput tinggi
- Merespons kueri rentang dengan cepat
- Menyimpan data dalam jumlah besar secara efisien
- Menjalankan fungsi analitik yang kompleks
- Fitur dasar PostgreSQL:
- Partisi native, beragam indeks, materialized view, fungsi window/analitik
- Ekstensi tambahan:
- pg_partman: manajemen partisi
- pg_cron: penjadwalan pekerjaan
- columnar: kompresi
- pg_ivm: materialized view inkremental
- pg_tier: offload jangka panjang untuk partisi lama
pg_timeseries: cara paling sederhana untuk mengelola data deret waktu di PostgreSQL
- pg_timeseries menggabungkan kemampuan dari beberapa ekstensi untuk menyediakan antarmuka terpadu
- Untuk memulai, diperlukan tabel yang dipartisi berdasarkan kolom terkait waktu
CREATE TABLE measurements ( metric_name text, metric_value numeric, metric_time timestamptz NOT NULL ) PARTITION BY RANGE (metric_time); SELECT enable_ts_table('measurements'); - Menyertakan berbagai view untuk menyediakan informasi penting:
SELECT table_id, table_size_bytes FROM ts_table_info; SELECT * FROM ts_part_info; - Dapat mengatur kebijakan kompresi dan penghapusan untuk partisi:
SELECT set_ts_compression_policy('measurements', '90 days'); SELECT set_ts_retention_policy('measurements', '365 days'); - Menyediakan fungsi tambahan:
SELECT locf(avg(metric_value)) OVER (ORDER BY metric_time) avg_val, last(metric_name, metric_value) highest, metric_time FROM date_bin_table(NULL::measurements, '1 hour', '[2024-05-09,2024-06-07]');
Kami baru di tahap awal
- Dibutuhkan banyak komponen untuk membangun ekstensi deret waktu untuk PostgreSQL
- Ada rencana untuk membangunnya secara terbuka bersama komunitas
- Roadmap saat ini:
- Offload partisi lama ke cold storage seperti S3
- Fungsi aproksimasi untuk analisis yang efisien
- Materialized view inkremental
- Rollup dan rolloff untuk partisi lama
- Fungsi helper analitik tambahan
- Roadmap lengkap tersedia di README GitHub, dan prioritas fitur akan ditentukan berdasarkan permintaan pengguna
Opini GN⁺
- Pentingnya data deret waktu: Pentingnya data deret waktu terus meningkat di berbagai bidang seperti IoT, keuangan, dan analitik web. pg_timeseries menyediakan alat untuk mengelola data tersebut secara efisien.
- Skalabilitas PostgreSQL: Dengan memanfaatkan kemampuan ekstensi PostgreSQL, berbagai pekerjaan data dapat ditangani. pg_timeseries mengintegrasikan kemampuan ini untuk meningkatkan kemudahan penggunaan.
- Kolaborasi dengan komunitas: Dikembangkan sebagai open source sehingga umpan balik komunitas dapat tercermin. Ini sangat membantu dalam peningkatan fitur dan perbaikan bug.
- Produk pesaing: Dibandingkan dengan database deret waktu lain seperti TimescaleDB, ada keunggulan karena dapat digunakan tanpa batasan lisensi. Namun, performa dan fiturnya tetap perlu ditinjau secara komparatif.
- Pertimbangan adopsi: Saat mengadopsi pg_timeseries, perlu mempertimbangkan kompatibilitas dengan database yang ada, performa, dan biaya pemeliharaan. Selain itu, karena karakteristik data deret waktu dapat menyebabkan volume data melonjak cepat, diperlukan pengelolaan penyimpanan yang tepat.
1 komentar
Opini Hacker News
Ringkasan kumpulan komentar Hacker News
Incremental Materialized Views
Perbandingan dengan TimescaleDB
Tabel Append-Only
Evolusi database deret waktu
Kebutuhan akan penyimpanan kolumnar
Tautan yang berguna
Entri log load balancer
Inovasi open source
Lisensi PostgreSQL
Desain situs dan UI aplikasi