Pola data kueri yang dioptimalkan

Pola kueri data yang paling sederhana dan tercepat adalah:

  1. Satu tabel atau tampilan
  2. Difilter sebelumnya di server sesuai kebutuhan Anda
  3. Kolom diindeks dengan benar untuk kueri yang diharapkan

Saat mendesain aplikasi, Anda perlu memikirkan cara mengkueri data dengan cepat. Cara terbaik untuk mengkueri data adalah dengan menggunakan satu tabel atau tampilan yang memiliki semua informasi yang Anda butuhkan, dan memfilternya di server sebelum Anda menampilkannya di aplikasi Anda. Anda juga perlu memastikan bahwa kolom yang Anda gunakan untuk memfilter atau mengurutkan data diindeks dengan benar. Ini membuat aplikasi Anda lebih cepat dan lancar.

Misalnya, Anda memiliki galeri yang menampilkan daftar pelanggan dan tenaga penjualan mereka. Jika Anda menyimpan informasi pelanggan dan tenaga penjualan dalam tabel terpisah, Anda perlu menggunakan pencarian untuk mendapatkan nama tenaga penjual untuk setiap pelanggan. Ini memperlambat aplikasi Anda karena perlu menjalankan banyak kueri ke tabel lain. Cara yang lebih baik adalah membuat tampilan yang menggabungkan informasi pelanggan dan tenaga penjualan dalam satu tabel, dan menggunakan tampilan tersebut sebagai sumber data untuk galeri Anda. Maka aplikasi Anda hanya perlu menjalankan satu kueri untuk mendapatkan semua data yang dibutuhkan.

Ada trade-off antara kecepatan kueri dan normalisasi data. Normalisasi data berarti Anda menyimpan data hanya sekali, dan menghindari duplikasi. Ini membantu menjaga data tetap konsisten dan akurat. Namun, terkadang Anda perlu menduplikasi beberapa data untuk membuat kueri lebih cepat dan lebih mudah. Anda perlu menyeimbangkan kedua tujuan ini dalam desain aplikasi dan struktur tabel Anda. Jika tidak, aplikasi Anda akan lambat dan lamban karena perlu melakukan banyak pekerjaan untuk memfilter dan menggabungkan data dari tabel yang berbeda.

Menggunakan tampilan sisi server

Tampilan mungkin adalah alat yang paling umum untuk membantu menyeimbangkan tujuan ini. Mereka menyajikan struktur tabel tunggal untuk kueri, memfilter data untuk apa yang Anda butuhkan dalam kueri, dan mengaktifkan pencarian dan gabungan ke tabel lain. Karena filter, pencarian, dan gabungan untuk tampilan dihitung di server, payload dan komputasi sisi klien diminimalkan.

Galeri dapat menampilkan banyak rekaman dari sumber data. Namun terkadang, Anda perlu menunjukkan informasi tambahan dari sumber data lain yang terkait dengan yang asli. Misalnya, Anda memiliki galeri yang menampilkan daftar pelanggan, dan Anda ingin memperlihatkan nama tenaga penjualan yang ditetapkan untuk setiap pelanggan. Nama penjual disimpan dalam sumber data yang berbeda dari informasi pelanggan. Untuk memperlihatkan nama penjual, Anda perlu menggunakan fungsi pencarian yang menemukan rekaman yang cocok di sumber data lain. Ini memperluas tabel asli dengan nilai pencarian.

Namun, memperluas tabel bisa sangat lambat jika Anda memiliki banyak catatan dan banyak pencarian. Untuk setiap rekaman di galeri, aplikasi perlu menjalankan kueri terpisah ke sumber data lain dan mendapatkan nilai pencarian. Ini berarti bahwa aplikasi mungkin perlu menjalankan banyak kueri untuk setiap rekaman, yang dapat memakan waktu lama dan memengaruhi kinerja aplikasi. Anti-pola ini kadang-kadang dikenal sebagai "N kuadrat, (n ^ 2)" atau masalah "N + 1".

Menggunakan StartsWith atau Filter

Power Fx menyediakan beberapa cara untuk mencari data. Secara umum, gunakan ekspresi yang memanfaatkan indeks seperti StartsWith atau Filter alih-alih ekspresi yang membaca seluruh tabel seperti In. Operator In baik-baik saja untuk koleksi dalam memori atau jika tabel sumber data eksternal sangat kecil.

Pertimbangkan untuk menduplikasi data

Terkadang data lambat diakses dalam kueri karena disimpan di lokasi atau format yang berbeda. Untuk mempercepat kueri, Anda bisa menyalin data lambat dan menyimpannya secara lokal dalam tabel yang cepat dan mudah dikueri. Namun, ini berarti bahwa data lokal mungkin bukan versi terbaru dari data asli. Kemudian jalankan proses lain untuk memperbarui data lokal secara berkala. Proses ini dapat berupa Power Automate aliran, plugin, prosedur tersimpan, atau metode lain yang dapat memindahkan data dari satu tempat ke tempat lain.

Persyaratan frekuensi memperbarui data lokal tergantung pada kebutuhan bisnis Anda. Seberapa segar data yang dibutuhkan untuk aplikasi Anda? Misalnya, Anda bekerja untuk Contoso, sebuah perusahaan yang menjual sepeda. Daftar sepeda yang tersedia disimpan dalam database Produk yang dapat Anda akses melalui API di konektor kustom. Tetapi katakanlah panggilan API lambat, jadi Anda memutuskan untuk menyalin data produk dan menyimpannya secara lokal dalam tabel. Kemudian Anda membuat tampilan yang menggabungkan tabel Anda dengan data relevan lainnya untuk aplikasi Anda. Anda juga membuat alur yang Power Automate berjalan setiap hari dan memperbarui tabel Anda dengan data produk terbaru dari API. Kemudian aplikasi Anda dapat mengkueri data lokal lebih cepat, dan data tersebut paling lama hanya berumur satu hari.

Menduplikasi data adalah jenis teknik umum dalam aplikasi tingkat perusahaan untuk memastikan kinerja yang baik. Anda dapat menggunakan Dataverse plugin, prosedur tersimpan, atau pergerakan data untuk menduplikasi data ke dalam satu tabel yang dioptimalkan untuk kueri. Pertanyaan kuncinya adalah: seberapa mutakhir data ini? Jika Anda mampu melakukan penundaan, Anda dapat menggunakan teknik ini untuk mempercepat aplikasi Anda.

Saran

Untuk mencapai tujuan ini, pertimbangkan pertanyaan dan saran berikut:

  1. Seberapa penting bagi pelanggan untuk melihat nilai data di galeri atau kisi data? Apakah dapat diterima untuk terlebih dahulu memilih rekaman dan kemudian menampilkan data dalam formulir?
  2. Dapatkah tampilan melakukan prakerja yang diperlukan untuk melihat data dalam format yang benar?
  3. Apakah Anda menggunakan operator "IN" di mana "StartsWith" akan berfungsi?
  4. Seberapa terkini data Anda perlu? Apakah ada strategi duplikasi data yang bisa Anda gunakan agar kueri Anda berfungsi di atas satu tabel secara default?