Cloud SQL

Aplikasi App Maker biasanya menyimpan data di Cloud SQL, layanan Google Cloud Platform (GCP) yang memberikan database SQL yang terkelola sepenuhnya di cloud. Pelajari lebih lanjut manfaat Cloud SQL.

Sebagai developer applikasi, Anda dapat memilih dari dua jenis instance Cloud SQL:

  • Default—administrator G Suite dapat menyiapkan instance Cloud SQL yang dibagikan di semua aplikasi App Maker dalam organisasi. Saat instance default disiapkan, database baru dibuat secara otomatis untuk aplikasi saat Anda menambahkan setidaknya satu model data Cloud SQL. Pilih opsi ini jika aplikasi membutuhkan database yang mudah digunakan dan tidak memerlukan penyiapan. Organisasi biasanya menggunakan instance default saat developer membuat prototipe dan menguji aplikasi, kemudian mengalihkan aplikasi ke instance kustom saat aplikasi siap di-deploy sebagai aplikasi produksi.

  • Kustom—Setelah admin menyiapkan instance Cloud SQL default, Anda juga dapat menyiapkan instance Cloud SQL Anda sendiri. Pilih opsi ini saat:

    • aplikasi melayani pengguna dalam jumlah besar atau menyimpan data dalam jumlah besar.
    • database harus dibagikan dengan aplikasi lain.
    • Anda perlu mengelola database atau mempertahankan kontrol instance Cloud SQL.

Keamanan Cloud SQL

Entah aplikasi Anda menggunakan instance Cloud SQL Default atau Kustom, kredensial akan selalu dienkripsi saat transit dan nonaktif:

  • Cloud SQL Default–Kredensial disimpan di server App Maker. Kredensial tersebut tidak akan pernah dapat diakses oleh pengguna akhir atau developer aplikasi.

  • Cloud SQL Kustom–Setelah developer mengirimkan kredensial Cloud SQL ke App Maker, kredensial tersebut tidak akan dapat dilihat lagi oleh developer aplikasi. App Maker menyimpan kredensial di browser saat developer menangani aplikasi di editor. Kredensial akan dihapus saat developer memuat ulang atau menutup tab browser.

    Saat developer melakukan depoloyment aplikasi dengan model Cloud SQL Kustom, kredensial akan disimpan di server Google dengan aplikasi yang diterapkan. Krendensial tersebut tidak akan dapat diakses oleh pengguna akhir.

Sebelum memulai

Sebelum menggunakan Cloud SQL dengan App Maker, tinjau pertimbangan keamanan dan biaya berikut:

  • Data yang disimpan di GCP berada di luar organisasi G Suite Anda—Beberapa organisasi, terutama lembaga pemerintah, memiliki persyaratan ketat untuk menyimpan data sensitif. Baik GCP maupun G Suite memenuhi standar privasi dan keamanan yang ketat, tetapi penggunaan Anda atas setiap layanan ini dapat tunduk pada persyaratan yang berbeda. Pelajari lebih lanjut cara kami mematuhi standar privasi dan keamanan:

  • Cloud SQL adalah bagian dari GCP—Anda dapat memulai uji coba gratis jika ingin mencoba instance kustom. Namun, organisasi Anda akan dikenakan biaya untuk penggunaan berkelanjutan. Pelajari penetapan harga lebih lanjut. Harga bulanan standar untuk sebagian besar aplikasi App Maker dapat diabaikan.

Menggunakan instance Cloud SQL kustom baru untuk aplikasi Anda

Jika tidak ingin menggunakan instance Cloud SQL default, Anda dapat menggunakan instance Cloud SQL kustom. Untuk menggunakan instance Cloud SQL kustom, admin G Suite masih harus menyiapkan instance default terlebih dahulu. Aplikasi dapat menggunakan database kustom yang ada, atau Anda dapat membuat yang baru. Jika Anda membuat instance kustom baru, perlu beberapa saat untuk menyiapkan dan mengintegrasikannya dengan App Maker.

Catatan: Anda tidak dapat menghubungkan aplikasi ke database pada instance Cloud SQL kustom kecuali admin G Suite Anda menyiapkan instance Cloud SQL default.

Sebaiknya gunakan instance Cloud SQL Generasi Kedua jika Anda menyiapkan yang baru. App Maker juga mendukung instance Generasi Pertama. Karakteristik harga dan performa bervariasi bergantung pada jenis instance, jadi tinjau kemampuan sebelum Anda membuat instance.

Petunjuk berikut mengharuskan Anda memiliki:

  • Akses ke GCP Console.
  • Izin untuk membuat instance dan pengguna Cloud SQL.

Generasi Kedua

  1. Jika belum dilakukan, buat instance Cloud SQL untuk MySQL Generasi Kedua di region us-central.
  2. Di GCP Console, buat akun pengguna MySQL untuk aplikasi yang akan digunakan untuk mengakses database.

    Catat nama pengguna dan sandi sehingga Anda dapat memasukkannya saat menghubungkan aplikasi ke database. Untuk mencegah akses tidak sah melalui akun pengguna, sebaiknya Anda menetapkan sandi yang kuat untuk semua akun pada instance.

  3. Di GCP Console, buat database baru.
  4. App Maker dijalankan pada App Engine. Siapkan koneksi dengan App Engine dengan menambahkan akun layanan untuk project Cloud Anda:
    1. Buka Halaman Project IAM & Admin (di GCP Console, klik Menu IAM & Admin).
    2. Pilih project yang berisi instance Cloud SQL Anda.
    3. Klik Tambahkan.
    4. Pada dialog Anggota baru, masukkan:
      appmaker-maestro@appspot.gserviceaccount.com
      Pilih Cloud SQLKlien Cloud SQL sebagai peran.
    5. Klik Simpan.
    6. Jika developer lain akan mengedit atau menerapkan aplikasi ini, tambahkan akun Google-nya sebagai anggota baru dan tetapkan peran Klien Cloud SQL.
  5. Salin detail instance Anda:
    1. Buka halaman instance Cloud SQL (di GCP Console, klik Menu SQL).
    2. Klik instance Anda lalu cari kolom Nama koneksi instance.
    3. Pada kotak Nama koneksi instance, klik Salin .
  6. Setel aplikasi untuk menggunakan database Cloud SQL kustom:
    1. Di App Maker, buka aplikasi lalu klik Setelan Database.
    2. Klik Beralih ke database Cloud SQL kustom.
    3. Tempel detail instance, lalu tambahkan nama database yang dibuat di Langkah 3. Gunakan format berikut:
      projectName:regionName:instanceName/databaseName
    4. Masukkan nama pengguna dan sandi untuk akun pengguna database, lalu klik Lanjutkan.

Generasi Pertama

App Maker mendukung instance Generasi Pertama. Namun, jika Anda membuat instance baru, sebaiknya Anda membuat instance Generasi Kedua.

  1. Jika belum dilakukan, buat instance Generasi Pertama.
  2. Konfigurasikan akun pengguna untuk instance ini:
    • Ubah sandi untuk akun root. Untuk mencegah akses tidak sah melalui koneksi App Engine (dibuat pada langkah-langkah berikut), sebaiknya Anda menetapkan sandi kuat untuk akun tersebut.
    • Buat akun pengguna yang dapat digunakan aplikasi untuk mengakses database. Saat membuat pengguna database:
      • Tentukan localhost sebagai Nama Host.
      • Tetapkan sandi yang kuat untuk akun guna mencegah akses tidak sah.

      Catat nama pengguna dan sandi sehingga Anda dapat memasukkannya saat menghubungkan aplikasi ke database.

  3. Di GCP Console, buat database baru.
  4. App Maker dijalankan pada App Engine. Siapkan koneksi dengan App Engine dengan menambahkan ID aplikasi App Maker ke instance Cloud SQL Anda:
    1. Buka halaman instance Cloud SQL (di GCP Console, klik Menu SQL).
    2. Klik nama instance untuk membuka halaman Ringkasan, lalu klik tab Otorisasi.
    3. Klik Tambahkan ID project lalu masukkan:
      appmaker-maestro
    4. Klik Selesai untuk keluar dari mode edit.
    5. Klik Simpan untuk memperbarui instance.
  5. Tambahkan instance Cloud SQL kustom ke aplikasi Anda.
    1. Buka aplikasi lalu klik Setelan Database
    2. Klik Beralih ke database Cloud SQL kustom.
    3. Masukkan alamat dalam format berikut:
      projectName:instanceName/databaseName
    4. Masukkan nama pengguna dan sandi untuk akun pengguna database, lalu klik Lanjutkan.

Menggunakan database Cloud SQL yang ada untuk aplikasi Anda

Jika telah memiliki data di Cloud SQL, Anda dapat membuat model di aplikasi yang menggunakan data tersebut:

  1. Tambahkan detail instance ke aplikasi Anda:
    1. Buka halaman instance Cloud SQL (di GCP Console, klik Menu SQL).
    2. Klik instance Anda lalu cari kolom Nama koneksi instance.
    3. Pada kotak Nama koneksi instance, klik Salin .
    4. Di App Maker, buka aplikasi lalu klik Setelan Database.
    5. Klik Beralih ke database Cloud SQL kustom.
    6. Tempel detail instance, lalu tambahkan nama database yang ada. Gunakan format berikut: projectName:regionName:instanceName/databaseName
    7. Masukkan nama pengguna dan sandi untuk akun pengguna database, lalu klik Lanjutkan.
  2. Di UI App Maker, klik Tambahkan di samping Data.
  3. Pilih Google Cloud SQL (sudah ada).
  4. Masukkan alamat dalam format berikut:

    • Generasi pertamaprojectName:instanceName/databaseName
    • Generasi keduaprojectName:regionName:instanceName/databaseName
  5. Masukkan nama pengguna dan sandi untuk akun pengguna database.

  6. Pilih tabel dari daftar lalu klik Impor. Anda dapat mengimpor tabel mana pun yang bukan merupakan tabel gabungan.

App Maker membuat relasi secara otomatis setelah Anda mengimpor kedua tabel yang berada dalam relasi. App Maker mengenali relasi dalam database Cloud SQL menggunakan tabel gabungan atau batasan kunci asing pada tabel yang diimpor. Misalnya, jika tabel A memiliki kunci asing ke tabel B, App Maker membuat relasi many-to-one secara otomatis dari A ke B.

Jika skema dalam database Cloud SQL berubah, Anda dapat memperbarui model Anda:

  1. Klik Setelan Database.
  2. Di bagian Kompatibilitas model dan relasi, klik tombol Periksa. Anda memiliki opsi untuk memperbarui semua model Cloud SQL agar sesuai dengan database atau untuk memperbarui database agar sesuai dengan model.

Jika Anda memperbarui model, App Maker akan menyimpan perubahan pada model seperti nama kolom, properti validasi, dan peristiwa yang diubah. Namun, jika kolom dihapus dari Cloud SQL, kolom yang sesuai juga akan dihapus dari model.

Memperbarui setelan Cloud SQL untuk aplikasi Anda

Anda dapat membuka Setelan Database untuk:

  • Beralih ke instance SQL default.
  • Memperbarui alamat instance.
  • Memeriksa kompatibilitas model dan relasi.

Beralih antara database Cloud SQL default dan kustom

Untuk organisasi yang telah menyiapkan instance Cloud SQL default, model baru menggunakan instance ini. Database Cloud SQL default sangat cocok diterapkan jika aplikasi Anda membutuhkan database yang mudah digunakan dan tidak memerlukan penyiapan.

Jika Anda merasa database default ini tidak memenuhi kebutuhan Anda, Anda dapat mengonversinya menjadi database kustom:

  1. Jika belum dilakukan, siapkan instance Cloud SQL kustom. Pilih us-central sebagai region untuk instance baru Anda.
  2. Buka aplikasi lalu klik Setelan Database.
  3. Klik tombol Periksa untuk memverifikasi kompatibilitas model dan relasi. Jika App Maker menampilkan laporan error terkait kompatibilitas tersebut, Anda mungkin tidak dapat melanjutkan tanpa menghapus data dari database Anda.
  4. Saat Anda siap untuk melanjutkan, klik tombol Beralih ke database Cloud SQL kustom.
  5. Masukkan alamat dalam format berikut:

    • Generasi pertamaprojectName:instanceName/databaseName
    • Generasi keduaprojectName:regionName:instanceName/databaseName
  6. Masukkan nama pengguna dan sandi untuk akun pengguna database, lalu klik Lanjutkan.

Setelah beralih ke database kustom, Anda memiliki opsi untuk beralih kembali ke database default.

Mengoperasikan record Cloud SQL

Setiap record dalam model Cloud SQL mewakili baris dalam tabel. Jika Anda membuat record App Maker, instance Cloud SQL Anda akan menambahkan baris ke tabel yang sesuai.

App Maker umumnya menggunakan kolom kunci utama tabel sebagai kunci untuk record-nya, dan nilai kunci utama tidak dapat diubah setelah pembuatan record. Ada beberapa kasus terkait ketidakcocokan kunci:

  • Record yang dibuat di server menggunakan newRecord() memiliki kunci null hingga record tersebut disimpan, meskipun kolom kunci utama ditetapkan.

  • Draf record pada klien memiliki kunci sintetis yang tidak cocok dengan kolom kunci utama hingga record tersebut disimpan.

  • Record yang dibuat pada klien dalam sumber data mode simpan manual memiliki kunci sintetis yang tidak cocok dengan kolom kunci utama bahkan setelah record tersebut disimpan.

Anda memiliki beberapa opsi untuk menangani kunci utama di App Maker:

Kunci utama Cloud SQL
Kunci utama organik Saat tabel Cloud SQL menggunakan kunci utama organik, kolom dalam model aplikasi yang sesuai dengan kunci tersebut wajib diisi, dan nilai harus ditentukan sebelum menyimpan record. Untuk mengetahui informasi selengkapnya tentang cara menangani kolom wajib diisi, buka
Kunci utama surrogate Jika tabel Cloud SQL menggunakan kunci surrogate, Anda dapat menetapkan kunci utama sebelum kunci record. Atau, jika database dapat memberikan kunci utama, Anda dapat membiarkan kunci record sebagai null dan mengizinkan App Maker mengupdatenya secara otomatis. Metode ini tidak berfungsi untuk record yang dibuat pada klien dengan sumber data mode simpan manual.
Kunci utama penambahan otomatis

Untuk kunci utama bilangan bulat, Cloud SQL dapat menetapkan nomor urut secara otomatis sebagai nilai kunci utama saat record dibuat. Dalam hal ini, nilai kolom kunci utama tidak harus diberikan oleh pengguna atau aplikasi.

Untuk menyetel opsi ini di App Maker:

  1. Di bagian Data pada panel navigasi, klik model data.
  2. Di tab Kolom, klik kolom numerik yang ingin ditambahkan secara otomatis.
  3. Klik Lanjutan lalu pilih Penambahan Otomatis.
Kunci utama ID unik

App Maker dapat menetapkan ID unik untuk kolom kunci utama saat record dibuat. ID unik berisi 12 karakter dan dibuat secara acak; ID tersebut tidak diberikan oleh pengguna atau aplikasi.

Gunakan kunci utama ID unik saat Anda tidak ingin kunci memberikan informasi tentang urutan atau jumlah total record dalam tabel, seperti saat pengguna memiliki akses ke beberapa record saja.

Untuk membuat kunci utama ID unik dalam model App Maker yang sudah memiliki kunci utama numerik:

  1. Di bagian Data pada panel navigasi, klik model data atau buat model baru.
  2. Di tab Kolom, klik kolom ID.
  3. Klik Lanjutan lalu hapus centang pada kotak Penambahan otomatis.
  4. Klik Tambahkan kolomString.
  5. Klik Tetapkan sebagai kunci utama.
  6. Masukkan nama kolom, seperti "IDunik".
  7. Klik Lanjutan lalu pilih ID unik otomatis.
  8. (Opsional) Hapus kolom ID.

Relasi

Kolom yang sesuai dengan kolom kunci asing dapat dibaca langsung menggunakan skrip server. Pada klien, nilai kolom kunci asing dan pengaitannya yang sesuai dapat dimodifikasi sebagai relasi. Pelajari lebih lanjut cara memodifikasi relasi.

Tampilan

Anda dapat mengimpor tampilan Cloud SQL sebagai model data hanya baca. Model berdasarkan tampilan dapat memanfaatkan kueri SQL yang mencakup gabungan, agregasi, dan sub-pilihan. Misalnya, skema berikut menggunakan tampilan untuk menggabungkan data dari tabel agar mudah ditampilkan di App Maker:

CREATE TABLE Orders (FruitName varchar(128), int Amount);
CREATE VIEW FruitOrders AS SELECT FruitName, sum(Amount) AS Amount FROM
    Orders GROUP BY FruitName ORDER BY FruitName;

Model SQL Terhitung

Model terhitung SQL menggunakan kueri Cloud SQL untuk mengambil data. Seperti sumber data terhitung lainnya, sumber data SQL tidak dapat membuat, menghapus, atau mengupdate record.

Untuk membuat model terhitung SQL:

  1. Di App Maker, klik Tambahkan di samping Data.
  2. Pilih SQL Terhitung lalu klik Berikutnya.
  3. Beri nama model lalu klik Buat.
  4. Buka tab Sumber data. Tambahkan sumber data SQL (atau gunakan sumber data default), lalu masukkan satu kueri pada kolom Kueri SQL.

    Kueri SQL harus memiliki properti berikut:

    • Kueri tidak boleh memiliki klausul batas atau offset. Sebagai gantinya, App Maker menambahkan klausul batas dan offset sesuai dengan pageSize dan pageIndex sumber data.
    • Nama dan jenis kolom kueri output SQL harus cocok dengan nama dan jenis model terhitung.
    • Kueri SQL hanya dapat berisi parameter yang diawali dengan titik dua, seperti :Param. Parameter tersebut harus cocok dengan nama dan jenis properti kustom pada sumber data.

Misalnya, aplikasi SDM perlu menampilkan jumlah karyawan di atas usia tertentu di setiap departemen. Aplikasi tersebut memiliki model Cloud SQL Employee dengan kolom Age dan Dept.

Untuk menampilkan data yang difilter, aplikasi menggunakan model terhitung EmployeeCount dengan dua kolom: DeptName dan Count. Model terhitung memiliki sumber data SQL dengan properti kustom number yang disebut MinAge dan menggunakan kueri berikut:

SELECT Dept AS DeptName, COUNT(*) AS Count FROM Employee WHERE Age > :MinAge GROUP BY Dept

Daftar parameter diterjemahkan menjadi daftar parameter dalam tanda kurung di SQL. Misalnya, untuk memilih ID departemen dengan nama yang cocok dengan elemen dalam daftar parameter, Anda dapat menulis kueri seperti berikut:

SELECT id from Departments WHERE Name in :PossibleNames

Parameter PossibleNames diterjemahkan menjadi (?, ?, ?, ...), dan elemen-elemen dari nilai parameter digunakan untuk placeholder SQL.

Untuk parameter berbasis waktu, Anda perlu menetapkan zona waktu.

Pemfilteran relasi

Cloud SQL adalah satu-satunya jenis model yang dapat difilter berdasarkan kolom dalam model terkait di Data Binding dan Pembuatan Skrip Server.

Pelajari pemfilteran relasi lebih lanjut.

Zona waktu

Dalam beberapa situasi, instance Cloud SQL dan App Maker berada di zona waktu yang berbeda. Hal ini dapat menyebabkan penulisan tanggal dan waktu yang tidak diinginkan dalam database. Tinjau tabel berikut dan pastikan Anda menetapkan jenis kolom tanggal dengan benar.

Penanganan zona waktu untuk jenis kolom tanggal
Model Cloud SQL

Setel jenis kolom tanggal sesuai kebutuhan:

  1. Buka tab Kolom untuk model.
  2. Klik kolom tanggal, lalu klik Lanjutan untuk menyetel jenis tanggal:
    • DATE atau DATETIME—Digunakan untuk kolom yang tidak memiliki zona waktu. App Maker mengonversi waktu ke zona waktu server App Maker (sesuai yang ditetapkan di Setelan Aplikasi) sebelum menulisnya ke database.
    • TIMESTAMP—Digunakan untuk kolom yang memiliki zona waktu. App Maker menyimpan zona waktu pengguna dan tanggal ditulis di Cloud SQL yang bersifat relatif terhadap waktu Unix.

Untuk kedua jenis tanggal, App Maker mengonversi tanggal ke zona waktu browser saat menampilkan data.

Model SQL terhitung Saat Anda menambahkan kolom jenis Tanggal ke model SQL terhitung, kolom tersebut akan ditambahkan sebagai jenis DATETIME.
Parameter kueri sumber data SQL terhitung

Setel jenis kolom tanggal sesuai kebutuhan:

  1. Buka tab Sumber data untuk model SQL terhitung.
  2. Klik sumber data, lalu klik Tambahkan Parameter.
  3. Untuk parameter tanggal, klik menu drop-down Jenis SQL Data lalu pilih jenis:
    • DATE atau DATETIME—Digunakan untuk parameter yang tidak memiliki zona waktu. Saat kueri menggunakan kolom DATE atau DATETIME, server App Maker mengonversi nilai ke zona waktu server dari zona waktu pengguna aplikasi sebelum digunakan dalam kueri.

      Misalnya, jika pengguna yang berada dalam zona waktu PST (UTC–8) membuat kueri untuk record yang dibuat sebelum tanggal 1 Januari 2018 pukul 09.00 dan server App Maker berada dalam zona waktu CT (UTC–6), maka kueri akan menelusuri record yang dibuat sebelum tanggal 1 Januari 2018 pukul 11.00.

    • TIMESTAMP—Digunakan untuk parameter yang memiliki zona waktu. App Maker mengonversi waktu ke UTC sebelum digunakan dalam kueri. Sebaiknya Anda tidak menggunakan parameter kueri jenis TIMESTAMP karena tanggal akan ditangani dengan benar hanya jika aplikasi dan database berada dalam zona waktu yang sama.

Batas dan pembatasan

  • Jika tabel Cloud SQL Anda tidak memiliki atau memiliki beberapa kolom kunci utama, App Marker tidak dapat mengubah atau membuat relasi untuk kolom tersebut.

  • App Maker mewakili nilai BIGINT sebagai string, karena rentang nomor yang diwakili oleh BIGINT terlalu besar untuk diwakili dengan nomor JavaScript.

  • App Maker tidak dapat mengimpor beberapa jenis kolom Cloud SQL seperti BLOB, CLOB, dan jenis biner lainnya. Anda masih dapat mengimpor model dengan jenis kolom tersebut, tetapi kolom tersebut tidak akan dapat dibaca atau ditulis. Jika kolom ini ditandai sebagai non-null, semua kolom lain di seluruh model data akan menjadi hanya baca.

  • App Maker tidak dapat menyatakan kueri terhadap model Cloud SQL yang melibatkan gabungan, agregasi, atau sub-pilihan. Sebagai gantinya, impor tampilan SQL sebagai model atau gunakan sumber data SQL dalam model terhitung.

  • Aplikasi tidak mendukung penelusuran berdasarkan kata kunci. Sebagai solusinya, buat kueri kustom yang menyimulasikan penelusuran teks lengkap menggunakan operator contains. Misalnya, untuk model Employee dengan kolom Name dan Department, gunakan kueri: (Name contains? :Keywords) OR (Department contains? :Keywords) lalu ikat parameter Keywords ke properti value kolom teks.