All Products
Search
Document Center

ApsaraDB RDS:Database time series (TimescaleDB)

Last Updated:Jun 21, 2026

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.

    Penting

    Kebijakan 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.

Catatan

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

  1. Buka halaman Instances, pilih Wilayah di bilah navigasi atas, lalu klik ID instans target.

  2. Di panel navigasi kiri, klik Plug-ins.

  3. Di halaman Extension Marketplace, temukan ekstensi timescaledb dan klik Install.

  4. 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

  1. Ubah parameter instans untuk menambahkan timescaledb ke Running Parameter Value dari parameter shared_preload_libraries. Misalnya, ubah Running Parameter Value menjadi 'pg_stat_statements,auto_explain,timescaledb'.

  2. Hubungkan ke database target dan jalankan perintah berikut untuk menginstal ekstensi:

    CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
    Catatan

    Untuk memverifikasi instalasi, jalankan SELECT * FROM pg_extension; dan pastikan timescaledb muncul dalam hasilnya.

Langkah 2: Buat hypertable

  1. 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
    );
  2. Konversi tabel tersebut menjadi hypertable. Contoh berikut mempartisi data dalam tabel conditions berdasarkan kolom time:

    SELECT create_hypertable('conditions', 'time');
Catatan

Untuk sintaks perintah lengkap, lihat Create a hypertable.

Langkah 3: Masukkan data secara efisien

  • Gunakan pernyataan SQL INSERT standar 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 feature

    A: 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 CONCURRENTLY pada hypertable. Sebagai alternatif, gunakan CREATE 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.