Ringkasan AlloyDB Omni

AlloyDB Omni adalah paket software database yang dapat didownload yang memungkinkan Anda men-deploy versi sederhana AlloyDB untuk PostgreSQL di lingkungan komputasi Anda sendiri. AlloyDB Omni dan layanan AlloyDB untuk PostgreSQL yang terkelola sepenuhnya di Google Cloud memiliki komponen inti yang sama. AlloyDB untuk PostgreSQL menggunakan lapisan penyimpanan native cloud yang mengoptimalkan performa WAL, sedangkan AlloyDB Omni menggunakan antarmuka sistem file standar yang sama dengan yang digunakan oleh PostgreSQL.

Portabilitas AlloyDB Omni memungkinkan Anda menjalankannya di banyak lingkungan, termasuk yang berikut:

  • Pusat data
  • Laptop
  • Instance VM berbasis cloud

Kasus penggunaan AlloyDB Omni

AlloyDB Omni sangat cocok untuk skenario berikut:

  • Anda memerlukan versi PostgreSQL yang skalabel dan berperforma tinggi, tetapi Anda tidak dapat menjalankan database di cloud karena persyaratan peraturan atau kedaulatan data.
  • Anda memerlukan database yang terus berjalan meskipun terputus dari internet.
  • Untuk meminimalkan latensi, Anda ingin menempatkan database sebisa mungkin dekat dengan pengguna secara geografis.
  • Anda ingin bermigrasi dari database lama, tetapi tanpa berkomitmen untuk melakukan migrasi cloud penuh.

AlloyDB Omni tidak menyertakan fitur AlloyDB untuk PostgreSQL yang mengandalkan operasi di Google Cloud. Jika ingin mengupgrade project ke fitur ketersediaan, keamanan, dan penskalaan yang dikelola sepenuhnya dari AlloyDB untuk PostgreSQL, Anda dapat memigrasikan data AlloyDB Omni ke cluster AlloyDB untuk PostgreSQL seperti yang dapat Anda lakukan dengan impor data awal lainnya.

Fitur utama

  • Server database yang kompatibel dengan PostgreSQL.
  • Dukungan untuk AlloyDB AI, yang membantu Anda membangun aplikasi AI generatif tingkat perusahaan menggunakan data operasional Anda.
  • Integrasi dengan Google Cloud ekosistem AI termasuk Vertex AI Model Garden dan alat AI generatif open source.
  • Dukungan untuk fitur autopilot dari AlloyDB untuk PostgreSQL di Google Cloud yang memungkinkan AlloyDB Omni mengelola dan menyesuaikan sendiri.

    Misalnya, AlloyDB Omni mendukung pengelolaan memori otomatis dan autovacuum adaptif untuk data yang sudah tidak berlaku.

  • Penasihat indeks yang menganalisis kueri yang sering dijalankan dan merekomendasikan indeks baru untuk performa kueri yang lebih baik.

  • Columnar engine AlloyDB Omni, yang menyimpan data yang sering dikueri dalam format kolom dalam memori untuk performa yang lebih cepat pada business intelligence, pelaporan, dan pemrosesan transaksional serta analitis hybrid (HTAP).

Dalam pengujian performa kami, beban kerja transaksional di AlloyDB Omni lebih dari 2X lebih cepat, dan kueri analisis hingga 100X lebih cepat, daripada PostgreSQL standar.

Cara kerja AlloyDB Omni

Anda dapat menginstal AlloyDB Omni sebagai server mandiri atau sebagai bagian dari lingkungan Kubernetes.

AlloyDB Omni berjalan dalam container Docker yang Anda instal ke lingkungan Anda sendiri. Sebaiknya jalankan AlloyDB Omni di sistem Linux dengan penyimpanan SSD dan setidaknya memori 8 GB per CPU.

Operator AlloyDB Omni Kubernetes adalah ekstensi untuk Kubernetes API yang memungkinkan Anda menjalankan AlloyDB Omni di sebagian besar lingkungan Kubernetes yang sesuai dengan CNCF. Untuk informasi selengkapnya, lihat Menginstal AlloyDB Omni di Kubernetes.

Aplikasi Anda terhubung ke dan berkomunikasi dengan penginstalan AlloyDB Omni, seperti aplikasi yang terhubung ke dan berkomunikasi dengan server database PostgreSQL standar. Kontrol akses pengguna juga bergantung pada standar PostgreSQL.

Dari logging hingga pembersihan ke mesin kolom, Anda dapat mengonfigurasi perilaku database AlloyDB Omni menggunakan flag database.

Keuntungan menjalankan AlloyDB Omni sebagai penampung

Google mendistribusikan AlloyDB Omni sebagai container yang dapat Anda jalankan dengan runtime container seperti Docker dan Podman. Secara operasional, penampung memberikan keuntungan berikut:

  • Pengelolaan dependensi yang transparan: Semua dependensi yang diperlukan dipaketkan dalam penampung dan diuji oleh Google untuk memastikan bahwa dependensi tersebut sepenuhnya kompatibel dengan AlloyDB Omni.
  • Portabilitas: Anda dapat mengandalkan AlloyDB Omni untuk beroperasi secara konsisten di seluruh lingkungan.
  • Isolasi keamanan: Anda memilih apa yang dapat diakses oleh penampung AlloyDB Omni di mesin host.
  • Pengelolaan resource: Anda dapat menentukan jumlah resource komputasi yang ingin digunakan penampung AlloyDB Omni.
  • Patching dan upgrade yang lancar: Untuk melakukan patching pada penampung, Anda hanya perlu mengganti image yang ada dengan image baru.

Pencadangan data dan pemulihan dari bencana (disaster recovery)

AlloyDB Omni memiliki sistem pencadangan dan pemulihan berkelanjutan yang memungkinkan Anda membuat cluster database baru berdasarkan titik waktu apa pun dalam periode retensi yang dapat disesuaikan. Hal ini memungkinkan Anda memulihkan data dengan cepat dari kecelakaan kehilangan data.

Selain itu, AlloyDB Omni dapat membuat dan menyimpan cadangan lengkap data cluster database Anda, baik secara on-demand maupun sesuai jadwal rutin. Kapan saja, Anda dapat memulihkan dari cadangan ke cluster database AlloyDB Omni yang berisi semua data dari cluster database asli pada saat pembuatan cadangan.

Untuk informasi selengkapnya, lihat Mencadangkan dan memulihkan AlloyDB Omni.

Sebagai metode pemulihan dari bencana lebih lanjut, Anda dapat mencapai replikasi lintas pusat data dengan membuat cluster database sekunder di pusat data terpisah. AlloyDB Omni mengalirkan data secara asinkron dari cluster database utama yang ditetapkan ke setiap cluster sekundernya. Kapan pun diperlukan, Anda dapat mempromosikan cluster database sekunder menjadi cluster database AlloyDB Omni utama.

Untuk informasi selengkapnya, lihat Tentang replikasi lintas pusat data

Komponen VM AlloyDB Omni

AlloyDB Omni di VM terdiri dari dua kumpulan komponen arsitektur: komponen PostgreSQL dengan peningkatan AlloyDB untuk PostgreSQL dan komponen AlloyDB untuk PostgreSQL. Diagram berikut menguraikan kedua kumpulan komponen, lapisan infrastruktur tempat komponen tersebut berada di VM atau server, dan fitur terkait yang dapat Anda harapkan untuk setiap komponen.

Diagram arsitektur komponen AlloyDB Omni yang
memisahkan komponen khusus AlloyDB untuk PostgreSQL dari komponen
PostgreSQL.

Gambar 1. Arsitektur AlloyDB Omni

Mesin database

Dokumen ini menjelaskan arsitektur database di AlloyDB Omni dalam penampung. Dokumen ini mengasumsikan bahwa Anda sudah memahami PostgreSQL.

Mesin database melakukan tugas berikut:

  1. Menerjemahkan kueri dari klien menjadi rencana yang dapat dieksekusi
  2. Menemukan data yang diperlukan untuk memenuhi kueri
  3. Melakukan pemfilteran, pengurutan, dan agregasi yang diperlukan
  4. Menampilkan hasilnya ke klien
Diagram yang menunjukkan cara aplikasi klien berinteraksi dengan lapisan database.
Gambar 1. Menampilkan lapisan database yang bekerja sama untuk merespons kueri dari aplikasi klien.

Saat aplikasi klien mengirim kueri ke AlloyDB Omni, tindakan berikut akan terjadi:

  1. Lapisan pemrosesan kueri mengubah kueri menjadi rencana eksekusi yang mengarah ke lapisan eksekusi kueri.
  2. Lapisan eksekusi kueri menjalankan operasi yang diperlukan untuk menghitung respons terhadap kueri.
  3. Selama eksekusi, data dapat dimuat dari cache buffer atau dimuat langsung dari penyimpanan. Jika data dimuat dari penyimpanan, data dari penyimpanan akan disimpan dalam cache untuk penggunaan di masa mendatang.

Resource yang digunakan saat memproses kueri klien mencakup CPU, memori, I/O, jaringan, dan primitif sinkronisasi seperti kunci database. Penyesuaian performa bertujuan untuk mengoptimalkan penggunaan resource selama setiap langkah dalam eksekusi kueri.

Tujuan mesin database berperforma tinggi adalah merespons kueri menggunakan resource yang paling sedikit diperlukan. Sasaran ini dimulai dengan model data dan desain kueri yang baik.

  • Bagaimana kueri dapat dijawab dengan melihat jumlah data yang paling sedikit?
  • Indeks apa yang diperlukan untuk mengurangi ruang penelusuran dan I/O?
  • Pengurutan data memerlukan CPU dan, sering kali, akses disk untuk set data besar, jadi bagaimana cara menghindari pengurutan data?

Penyimpanan data

AlloyDB Omni menyimpan data dalam halaman berukuran tetap yang disimpan di sistem file yang mendasarinya. Saat kueri perlu mengakses data, AlloyDB Omni akan memeriksa kumpulan buffer terlebih dahulu. Jika halaman yang menyimpan data yang diperlukan tidak ditemukan di kumpulan buffer, AlloyDB Omni akan membaca halaman yang diperlukan dari sistem file. Mengakses data dari kumpulan buffer secara signifikan lebih cepat daripada membaca dari sistem file, sehingga memaksimalkan ukuran kumpulan buffer untuk jumlah data yang akan diakses oleh aplikasi adalah faktor yang penting.

Pengelolaan resource

AlloyDB Omni menggunakan pengelolaan memori dinamis untuk memungkinkan kumpulan buffer tumbuh dan menyusut secara dinamis dalam batas yang dikonfigurasi, bergantung pada permintaan memori sistem. Oleh karena itu, tidak perlu menyesuaikan ukuran buffer pool. Saat mendiagnosis masalah performa, metrik pertama yang perlu dipertimbangkan adalah rasio hit buffer pool dan rasio baca untuk melihat apakah aplikasi Anda mendapatkan manfaat dari buffer pool. Jika tidak, hal ini menunjukkan bahwa set data aplikasi tidak sesuai dengan kumpulan buffer, dan Anda dapat mempertimbangkan untuk mengubah ukurannya menjadi mesin yang lebih besar dengan lebih banyak memori.

Proses pengambilan, pemfilteran, agregasi, pengurutan, dan proyeksi data memerlukan resource CPU di server database. Untuk mengurangi jumlah resource CPU yang diperlukan untuk proses ini, minimalkan jumlah data yang perlu dimanipulasi. Pantau penggunaan CPU di server database untuk memastikan penggunaan status stabil sekitar 70%. Jumlah ini akan memberikan headroom yang memadai di server untuk lonjakan penggunaan atau perubahan pola akses dari waktu ke waktu. Berjalan dengan penggunaan mendekati 100% akan menyebabkan overhead karena penjadwalan proses dan pengalihan konteks, serta dapat menyebabkan bottleneck di bagian lain sistem. Pemakaian CPU yang tinggi adalah metrik utama lainnya yang dapat digunakan saat membuat keputusan tentang spesifikasi mesin.

Operasi Input/Output Per Detik (IOPS) adalah faktor penting dalam performa aplikasi database -- jumlah operasi input atau output per detik yang dapat dikirimkan oleh perangkat penyimpanan yang mendasarinya ke database. Untuk menghindari batas IOPS penyimpanan database, minimalkan operasi baca dan tulis ke penyimpanan dengan memaksimalkan jumlah data yang dapat muat dalam kumpulan buffer.

Mesin kolom

Mesin kolom mempercepat pemrosesan kueri SQL untuk pemindaian, penggabungan, dan agregat dengan menyediakan komponen berikut:

  • Penyimpanan kolom dalam memori: Berisi data tabel dan tampilan yang diwujudkan untuk kolom yang dipilih dalam format yang berorientasi pada kolom. Secara default, penyimpanan kolom menggunakan memori yang tersedia sebesar 1 GB. Untuk mengubah jumlah memori yang dapat digunakan oleh penyimpanan kolom, tetapkan parameter google_columnar_engine.memory_size_in_mb di postgresql.conf yang digunakan oleh instance AlloyDB Omni Anda.

    Untuk mengetahui informasi selengkapnya tentang cara mengubah parameter, lihat Mengubah parameter konfigurasi.

  • Perencana dan mesin eksekusi kueri kolom: Mendukung penggunaan penyimpanan kolom dalam kueri.

Pengelolaan memori otomatis

Pengelola memori otomatis terus memantau dan mengoptimalkan konsumsi memori di seluruh instance AlloyDB Omni. Saat Anda menjalankan workload, modul ini akan menyesuaikan ukuran cache buffer bersama berdasarkan tekanan memori. Secara default, pengelola memori otomatis menetapkan batas atas ke 80% memori sistem dan mengalokasikan 10% memori sistem untuk cache buffer bersama. Untuk mengubah batas atas ukuran cache buffer bersama, tetapkan parameter shared_buffers di postgresql.conf yang digunakan oleh instance AlloyDB Omni Anda.

Untuk informasi selengkapnya, lihat Pengelolaan memori otomatis.

Autovacuum adaptif

Autovacuum adaptif menganalisis operasi berdasarkan beban kerja database, dan secara otomatis menyesuaikan frekuensi pembersihan. Penyesuaian otomatis ini membantu database berjalan pada performa puncak, meskipun beban kerja berubah, tanpa gangguan dari proses pembersihan.

Autovacuum adaptif menggunakan faktor berikut untuk menentukan frekuensi dan intensitas operasi pembersihan:

  • Ukuran database
  • Jumlah tuple mati dalam database
  • Usia data dalam database
  • Jumlah transaksi per detik versus perkiraan kecepatan pembersihan

Autovacuum adaptif memberikan manfaat berikut:

  • Pengelolaan resource vakum dinamis: Alih-alih menggunakan batas biaya tetap, AlloDB Omni menggunakan statistik resource real-time untuk menyesuaikan pekerja vakum. Saat sistem sibuk, proses penyedot debu dan penggunaan resource terkait akan dibatasi. Jika memori yang tersedia cukup, memori tambahan akan dialokasikan untuk maintenance_work_mem guna mengurangi waktu pembersihan menyeluruh.
  • Throttling XID Dinamis: Memantau secara otomatis dan berkelanjutan progres pembersihan dan kecepatan penggunaan ID transaksi. Jika risiko ringkasan ID transaksi terdeteksi, AlloyDB Omni akan memperlambat transaksi untuk membatasi penggunaan ID. Selain itu, AlloyDB Omni mengalokasikan lebih banyak resource ke pekerja vacuum untuk memproses tabel yang memblokir kemajuan dan pembebasan ruang ID transaksi. Selama proses ini, keseluruhan transaksi per detik akan dikurangi hingga ID transaksi berada di zona aman (dapat diamati sebagai sesi yang menunggu AdaptiveVacuumNewXidDelay). Saat usia ID transaksi meningkat, pekerja vacuum akan ditingkatkan secara dinamis.
  • Pembersihan yang efisien untuk tabel yang lebih besar: Logika PostgreSQL default yang digunakan untuk memutuskan kapan harus membersihkan tabel didasarkan pada statistik khusus tabel yang disimpan di pg_stat_all_tables, yang berisi rasio tuple mati. Logika ini berfungsi untuk tabel kecil, tetapi mungkin tidak berfungsi secara efisien untuk tabel yang lebih besar dan sering diperbarui. AlloyDB Omni menyediakan mekanisme pemindaian yang diperbarui yang membantu memicu autovacuum lebih sering. Mekanisme pemindaian ini memindai potongan tabel besar dan menghapus tuple mati secara lebih efisien daripada logika PostgreSQL default.
  • Mencatat pesan peringatan ke dalam log: Di AlloyDB Omni, pemblokir vacuum, seperti transaksi yang berjalan lama atau transaksi yang disiapkan atau slot replikasi yang kehilangan targetnya, akan terdeteksi dan peringatan akan dicatat dalam log PostgreSQL sehingga Anda dapat mengatasi masalah secara tepat waktu.

Pekerja AI/ML

Di AlloyDB Omni, pekerja latar belakang AI/ML menyediakan semua kemampuan yang diperlukan untuk memanggil model Vertex AI langsung dari database. Pekerja AI/ML berjalan sebagai proses yang disebut omni ml worker.

Untuk informasi selengkapnya, lihat Mem-build aplikasi AI generatif menggunakan AlloyDB AI.