Ekstensi TimescaleDB meningkatkan instans ApsaraDB RDS for PostgreSQL dengan fitur untuk data time-series, termasuk partisi otomatis, penulisan dan kueri yang efisien, serta agregasi hampir real-time.
ApsaraDB RDS for PostgreSQL menyediakan versi open-source TimescaleDB berlisensi Apache. Karena batasan lisensi, beberapa fitur lanjutan mungkin tidak tersedia. Untuk informasi lebih lanjut, lihat TimescaleDB.
Prasyarat
-
Versi utama instans Anda harus PostgreSQL 10 atau lebih baru.
-
Versi mesin minor instans Anda harus 20230330 atau lebih baru. Untuk instans yang menjalankan PostgreSQL 17, versi mesin minor harus 20241030 atau lebih baru. Untuk melihat dan melakukan peningkatan versi mesin minor, lihat Perbarui versi mesin minor.
PentingKebijakan dukungan ekstensi ApsaraDB RDS for PostgreSQL diperbarui pada 17 April 2023. Akibatnya, Anda hanya dapat membuat ekstensi ini pada versi mesin minor 20230330 atau lebih baru. Untuk informasi lebih lanjut, lihat [Pemberitahuan] Mulai 17 April 2023, pembuatan beberapa ekstensi dibatasi pada versi mesin minor ApsaraDB RDS for PostgreSQL yang lebih lama.
-
Jika instans Anda menjalankan PostgreSQL 14 dan telah menggunakan ekstensi TimescaleDB (versi 2.5.0 atau lebih lama) pada versi mesin minor sebelum 20230330, Anda dapat terus menggunakan ekstensi tersebut. Namun, setelah meningkatkan versi mesin minor ke 20230330 atau lebih baru, Anda harus menjalankan perintah
ALTER EXTENSION timescaledb UPDATE;untuk terus menggunakannya. -
Jika instans Anda menjalankan PostgreSQL 15, 13, 12, 11, atau 10 dan telah menggunakan ekstensi TimescaleDB pada versi mesin minor sebelum 20230330, penggunaan Anda tidak terpengaruh.
-
Jika Anda menginstal ekstensi ini untuk pertama kali atau menginstal ulang, Anda harus meningkatkan versi mesin minor ke 20230330 atau lebih baru.
-
Jika Anda membuat ekstensi TimescaleDB sebelum memperbarui versi mesin minor, Anda mungkin mengalami error berikut setelah pembaruan:
ERROR: could not access file "$libdir/timescaledb-1.3.0": No such file or directory
Untuk mengatasinya, hubungkan ke database terkait dan jalankan perintah berikut untuk memperbarui ekstensi:
alter extension timescaledb update;
Langkah 1: Instal ekstensi TimescaleDB
Konsol
-
Buka halaman Instances, pilih Wilayah di bilah navigasi atas, lalu klik ID instans target.
-
Di panel navigasi kiri, klik Plug-ins.
-
Di halaman Extension Marketplace, temukan ekstensi timescaledb dan klik Install.
-
Di kotak dialog, pilih database target dan Akun istimewa, lalu klik Install.
Ekstensi berhasil diinstal ketika status instans berubah dari Maintaining Instance menjadi Running.
SQL
-
Ubah parameter instans untuk menambahkan
timescaledbke Running Parameter Value dari parametershared_preload_libraries. Misalnya, ubah Running Parameter Value menjadi'pg_stat_statements,auto_explain,timescaledb'. -
Hubungkan ke database target dan jalankan perintah berikut untuk menginstal ekstensi:
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;CatatanUntuk memverifikasi instalasi, jalankan
SELECT * FROM pg_extension;dan pastikantimescaledbmuncul dalam hasilnya.
Langkah 2: Buat hypertable
-
Hubungkan ke database target dan buat tabel PostgreSQL standar. Contoh berikut membuat tabel bernama
conditions:CREATE TABLE conditions ( time TIMESTAMPTZ NOT NULL, location TEXT NOT NULL, temperature DOUBLE PRECISION NULL, humidity DOUBLE PRECISION NULL ); -
Konversi tabel tersebut menjadi hypertable. Contoh berikut mempartisi data dalam tabel
conditionsberdasarkan kolomtime:SELECT create_hypertable('conditions', 'time');
Untuk sintaks perintah lengkap, lihat Create a hypertable.
Langkah 3: Masukkan data secara efisien
-
Gunakan pernyataan SQL
INSERTstandar untuk menulis data ke hypertable. Contoh berikut memasukkan satu baris:INSERT INTO conditions(time, location, temperature, humidity) VALUES (NOW(), 'office', 70.0, 50.0); -
Untuk performa penulisan yang lebih baik, masukkan beberapa baris dalam satu pernyataan. Contoh berikut memasukkan tiga baris:
INSERT INTO conditions VALUES (NOW(), 'office', 70.0, 50.0), (NOW(), 'basement', 66.5, 60.0), (NOW(), 'garage', 77.0, 65.2);
Langkah 4: Kueri data
-
Gunakan kueri SQL standar dan fungsi khusus TimescaleDB untuk mengkueri data Anda. Contoh berikut mengagregasi data dari tiga jam terakhir ke dalam bucket 15 menit:
-- Aggregate data into 15-minute buckets from the last 3 hours, -- and order the results by time and temperature. 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;Contoh hasil:
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 | 60 -
-
Kueri median
-- Calculate the median temperature. SELECT percentile_cont(0.5) WITHIN GROUP (ORDER BY temperature) FROM conditions;Contoh hasil:
percentile_cont ----------------- 70 -
Rata-rata bergerak
-- Calculate a moving average of the temperature. 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;Contoh hasil:
time | smooth_temp -------------------------------+------------- 2024-12-20 16:11:14.691822+08 | 77
-
FAQ
-
Q: Bagaimana cara mengatasi error lisensi berikut?
ERROR: functionality not supported under the current license "ApacheOnly", license HINT: Upgrade to a Timescale-licensed binary to access this free community featureA: ApsaraDB RDS for PostgreSQL menggunakan build open-source TimescaleDB yang diatur oleh Lisensi Apache. Beberapa fitur TimescaleDB hanya tersedia di bawah Perjanjian Lisensi Timescale (TSL), yang melarang penggunaannya dalam penawaran database-as-a-service atau software-as-a-service. Untuk informasi lebih lanjut, lihat bagian 2.2 dari TimescaleDB License Agreement.
-
Q: Apa yang harus saya lakukan jika mendapatkan error
hypertables do not support concurrent index creation.?A: TimescaleDB tidak mendukung penggunaan
CREATE INDEX CONCURRENTLYpada hypertable. Sebagai alternatif, gunakanCREATE INDEX ... WITH (timescaledb.transaction_per_chunk, ...). Metode ini membuat indeks satu chunk dalam satu waktu untuk mengurangi durasi penguncian. Untuk informasi lebih lanjut, lihat dokumentasi Timescale.