Instans ApsaraDB RDS for PostgreSQL mendukung ekstensi TimescaleDB, yang menyediakan fitur-fitur seperti sharding otomatis, penulisan efisien, pengambilan data, dan agregasi hampir real-time untuk data deret waktu.
ApsaraDB RDS for PostgreSQL menyediakan versi open-source dari TimescaleDB. Karena pembatasan lisensi, beberapa fitur lanjutan mungkin tidak tersedia. Untuk informasi lebih lanjut, lihat TimescaleDB.
Prasyarat
Versi mesin utama dari instans adalah PostgreSQL 10 atau yang lebih baru.
Versi mesin minor dari instans adalah 20230330 atau yang lebih baru. Untuk instans ApsaraDB RDS for PostgreSQL 17, versi mesin minor harus 20241030 atau yang lebih baru. Untuk melihat dan meningkatkan versi mesin minor, lihat Tingkatkan versi mesin minor.
PentingEkstensi ini didukung sebelum versi mesin minor 20230330. Namun, kebijakan dukungan untuk ekstensi ApsaraDB RDS for PostgreSQL berubah pada 17 April 2023. Beberapa ekstensi hanya dapat dibuat pada instans yang menjalankan versi mesin minor 20230330 atau yang lebih baru. Untuk informasi lebih lanjut, lihat [Pemberitahuan] Mulai 17 April 2023, pembuatan beberapa ekstensi ApsaraDB RDS for PostgreSQL dibatasi pada versi mesin minor sebelumnya.
Jika instans Anda menjalankan PostgreSQL 14 dan Anda menggunakan ekstensi TimescaleDB (versi 2.5.0 atau lebih lama) sebelum meningkatkan ke versi mesin minor 20230330, ekstensi tersebut akan terus bekerja tanpa peningkatan versi mesin minor. Setelah Anda meningkatkan versi mesin minor ke 20230330 atau yang lebih baru, Anda harus secara manual menjalankan perintah
ALTER EXTENSION timescaledb UPDATE;untuk meningkatkan ekstensi.Jika instans Anda menjalankan PostgreSQL 15, 13, 12, 11, atau 10 dan Anda menggunakan ekstensi TimescaleDB sebelum meningkatkan ke versi mesin minor 20230330, ekstensi tersebut tidak terpengaruh.
Jika Anda membuat ekstensi ini untuk pertama kali atau membuat ulang, Anda harus meningkatkan versi mesin minor instans Anda ke 20230330 atau yang lebih baru.
Beberapa pengguna yang sudah ada mungkin telah membuat ekstensi TimescaleDB. Jika kesalahan berikut dilaporkan setelah peningkatan versi mesin minor:
ERROR: could not access file "$libdir/timescaledb-1.3.0": No such file or directoryAnda dapat mengeksekusi pernyataan SQL berikut di database untuk memperbarui ekstensi:
alter extension timescaledb update;Langkah 1: Tambahkan ekstensi TimescaleDB
Instal ekstensi di konsol
Buka halaman Instans. Di bilah navigasi atas, pilih wilayah. Lalu, klik ID instans target.
Di panel navigasi di sebelah kiri, klik Extension Management.
Di halaman Extension Marketplace, gulir ke bawah untuk menemukan ekstensi timescaledb dan klik Install.

Di kotak dialog yang muncul, pilih database target dan akun istimewa. Lalu, klik Install untuk menginstal ekstensi ke database target.
Ekstensi diinstal setelah status instans berubah dari Maintaining menjadi Running.
Instal ekstensi dengan menjalankan perintah SQL
Atur parameter instans. Tambahkan timescaledb ke Running Parameter Value dari parameter shared_preload_libraries. Sebagai contoh, ubah Running Parameter Value menjadi
'pg_stat_statements,auto_explain,timescaledb'.Hubungkan ke database target dan jalankan pernyataan SQL berikut untuk menginstal ekstensi.
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;CatatanAnda dapat menjalankan
SELECT * FROM pg_extension;untuk melihat ekstensi yang telah diinstal.
Langkah 2: Buat hypertable
Hubungkan ke database target dan buat tabel standar bernama conditions. Contoh kode berikut memberikan sebuah contoh:
CREATE TABLE conditions ( time TIMESTAMPTZ NOT NULL, location TEXT NOT NULL, temperature DOUBLE PRECISION NULL, humidity DOUBLE PRECISION NULL );Buat hypertable. Contoh kode berikut memberikan sebuah contoh:
SELECT create_hypertable('conditions', 'time');
Untuk informasi lebih lanjut tentang perintah, lihat Buat Hypertable.
Langkah 3: Tulis data secara efisien
Anda dapat menggunakan pernyataan SQL standar untuk menyisipkan data ke dalam hypertable. Contoh kode berikut memberikan sebuah contoh:
INSERT INTO conditions(time, location, temperature, humidity) VALUES (NOW(), 'office', 70.0, 50.0);Anda juga dapat menyisipkan beberapa baris data ke dalam hypertable sekaligus. Contoh kode berikut memberikan sebuah contoh:
INSERT INTO conditions VALUES (NOW(), 'office', 70.0, 50.0), (NOW(), 'basement', 66.5, 60.0), (NOW(), 'garage', 77.0, 65.2);
Langkah 4: Ambil data
Anda dapat menggunakan kueri SQL tingkat lanjut untuk mengambil data. Contoh kode berikut memberikan sebuah contoh:
-- Ambil data yang dikumpulkan dalam 3 jam terakhir pada interval 15 menit dan urutkan data berdasarkan waktu dan suhu. SELECT time_bucket('15 minutes', time) AS fifteen_min, location, COUNT(*), MAX(temperature) AS max_temp, MAX(humidity) AS max_hum FROM conditions WHERE time > NOW() - interval '3 hours' GROUP BY fifteen_min, location ORDER BY fifteen_min DESC, max_temp DESC;Hasil berikut dikembalikan:
fifteen_min | location | count | max_temp | max_hum ------------------------+----------+-------+----------+--------- 2024-12-20 16:00:00+08 | garage | 1 | 77 | 65.2 2024-12-20 16:00:00+08 | office | 2 | 70 | 50 2024-12-20 16:00:00+08 | basement | 1 | 66.5 | 60Anda juga dapat menggunakan fungsi bawaan untuk kueri analitis. Contoh kode berikut memberikan sebuah contoh:
Kueri median
-- Kueri median. SELECT percentile_cont(0.5) WITHIN GROUP (ORDER BY temperature) FROM conditions;Hasil berikut dikembalikan:
percentile_cont ----------------- 70Tanyakan rata-rata bergerak
-- Kueri rata-rata bergerak. SELECT time, AVG(temperature) OVER(ORDER BY time ROWS BETWEEN 9 PRECEDING AND CURRENT ROW) AS smooth_temp FROM conditions WHERE location = 'garage' and time > NOW() - interval '1 day' ORDER BY time DESC;Hasil berikut dikembalikan:
time | smooth_temp -------------------------------+------------- 2024-12-20 16:11:14.691822+08 | 77
FAQ
T: Bagaimana cara memecahkan masalah kesalahan berikut yang terjadi saat saya menggunakan ekstensi?
ERROR: functionality not supported under the current license "ApacheOnly", license HINT: Upgrade to a Timescale-licensed binary to access this free community featureJ: Perjanjian lisensi resmi TimescaleDB melarang penggunaan fitur di bawah Perjanjian Lisensi Timescale (TSL) untuk menyediakan database-as-a-service dan software-as-a-service. Untuk informasi lebih lanjut, lihat Bagian 2.2 dari perjanjian lisensi resmi TimescaleDB.
T: Bagaimana cara memecahkan masalah kesalahan
hypertables do not support concurrent index creation.yang terjadi saat saya menggunakan ekstensi?J: TimescaleDB tidak mendukung pembuatan indeks menggunakan metode
CREATE INDEX CONCURRENTLY. Anda dapat menggunakanCREATE INDEX ... WITH (timescaledb.transaction_per_chunk, ...)untuk membuat indeks. Metode ini meminimalkan waktu penahanan kunci. Untuk informasi lebih lanjut, lihat Dokumentasi Timescale.