Βελτιστοποιημένα μοτίβα δεδομένων ερωτημάτων

Το απλούστερο και ταχύτερο μοτίβο ερωτήματος δεδομένων είναι:

  1. Ένας μεμονωμένος πίνακας ή προβολή
  2. Προφιλτραρισμένη στον διακομιστή σε αυτό που χρειάζεστε
  3. Οι στήλες έχουν καταχωρηθεί σωστά στο ευρετήριο για τα αναμενόμενα ερωτήματα

Όταν σχεδιάζετε την εφαρμογή σας, πρέπει να σκεφτείτε πώς μπορείτε να υποβάλετε ερωτήματα στα δεδομένα γρήγορα. Ο καλύτερος τρόπος για να υποβάλετε ερωτήματα για δεδομένα είναι να χρησιμοποιήσετε έναν μοναδικό πίνακα ή προβολή που περιέχει όλες τις πληροφορίες που χρειάζεστε και να τα φιλτράρετε στον διακομιστή προτού τα εμφανίσετε στην εφαρμογή σας. Πρέπει επίσης να βεβαιωθείτε ότι οι στήλες που χρησιμοποιείτε για να φιλτράρετε ή ταξινομήσετε τα δεδομένα έχουν καταχωρηθεί σωστά στο ευρετήριο. Αυτό καθιστά την εφαρμογή σας ταχύτερη και πιο ομαλή.

Για παράδειγμα, ας υποθέσουμε ότι έχετε μια συλλογή που εμφανίζει μια λίστα πελατών και των πωλητών τους. Εάν αποθηκεύετε τις πληροφορίες πελάτη και πωλητή σε ξεχωριστούς πίνακες, πρέπει να χρησιμοποιήσετε αναζητήσεις για να λάβετε το όνομα πωλητή για κάθε πελάτη. Αυτό επιβραδύνει την εφαρμογή σας, επειδή χρειάζεται να εκτελέσει πολλά ερωτήματα στον άλλο πίνακα. Ένας καλύτερος τρόπος είναι να δημιουργήσετε μια προβολή που συνδυάζει τις πληροφορίες πελάτη και πωλητή σε έναν πίνακα και να χρησιμοποιήσετε αυτή την προβολή ως προέλευση δεδομένων για τη συλλογή σας. Στη συνέχεια, η εφαρμογή σας χρειάζεται να εκτελέσει μόνο ένα ερώτημα για να λάβει όλα τα δεδομένα που χρειάζεται.

Υπάρχει μια ανταλλαγή μεταξύ της ταχύτητας των ερωτημάτων και της κανονικοποίησης των δεδομένων. Η κανονικοποίηση δεδομένων σημαίνει ότι αποθηκεύετε τα δεδομένα μόνο μία φορά και αποφεύγετε τις διπλότυπες αναφορές. Αυτό σας βοηθά να διατηρείτε τα δεδομένα συνεπή και ακριβή. Ωστόσο, ορισμένες φορές χρειάζεται να αναπαραγάγετε ορισμένα δεδομένα για να κάνετε τα ερωτήματα ταχύτερα και ευκολότερα. Πρέπει να εξισορροπήσετε αυτούς τους δύο στόχους στη σχεδίαση εφαρμογών και τη δομή πίνακα. Διαφορετικά, η εφαρμογή σας θα είναι αργή και αργή καθώς χρειάζεται να κάνει πολλές εργασίες για να φιλτράρει και να ενώσει τα δεδομένα από διαφορετικούς πίνακες.

Χρήση προβολών από την πλευρά του διακομιστή

Οι προβολές είναι ίσως το πιο σύνηθες εργαλείο για την εξισορρόπηση αυτών των στόχων. Παρουσιάζουν μια ενιαία δομή πίνακα για ερωτήματα, προφιλτραρίζουν δεδομένα για αυτό που χρειάζεστε στο ερώτημα και ενεργοποιούν αναζητήσεις και συνδέσμους σε άλλους πίνακες. Επειδή τα φίλτρα, οι αναζητήσεις και οι σύνδεσμοι για την προβολή υπολογίζονται στον διακομιστή, τόσο το ωφέλιμο φορτίο όσο και η υπολογιστική πλευρά του προγράμματος-πελάτη ελαχιστοποιούνται.

Μια συλλογή μπορεί να εμφανίσει πολλές εγγραφές από μια προέλευση δεδομένων. Ωστόσο, μερικές φορές χρειάζεται να εμφανίσετε πρόσθετες πληροφορίες από μια άλλη προέλευση δεδομένων που σχετίζεται με την αρχική. Για παράδειγμα, έχετε μια συλλογή που εμφανίζει μια λίστα πελατών και θέλετε να εμφανίσετε το όνομα του πωλητή που έχει αντιστοιχιστεί σε κάθε πελάτη. Το όνομα του πωλητή αποθηκεύεται σε διαφορετική προέλευση δεδομένων από τις πληροφορίες του πελάτη. Για να εμφανίσετε το όνομα του πωλητή, πρέπει να χρησιμοποιήσετε μια συνάρτηση αναζήτησης που εντοπίζει την αντίστοιχη εγγραφή στην άλλη προέλευση δεδομένων. Αυτό αναπτύσσει τον αρχικό πίνακα με τις τιμές αναζήτησης.

Ωστόσο, η ανάπτυξη του πίνακα μπορεί να είναι πολύ αργή εάν έχετε πολλές εγγραφές και πολλές αναζητήσεις. Για κάθε εγγραφή στη συλλογή, η εφαρμογή πρέπει να εκτελέσει ένα ξεχωριστό ερώτημα στην άλλη προέλευση δεδομένων και να λάβει την τιμή αναζήτησης. Αυτό σημαίνει ότι η εφαρμογή μπορεί να χρειαστεί να εκτελέσει πολλά ερωτήματα για κάθε εγγραφή, τα οποία μπορεί να χρειαστούν πολύ χρόνο και να επηρεάσουν την απόδοση της εφαρμογής. Αυτό το αντι-μοτίβο είναι μερικές φορές γνωστό ως "N τετράγωνο, (n^2)" ή ένα πρόβλημα "N+1".

Χρήση StartsWith ή Filter

Το Power Fx παρέχει διάφορους τρόπους για την αναζήτηση δεδομένων. Σε γενικές γραμμές, χρησιμοποιήστε μια παράσταση που αξιοποιεί ένα ευρετήριο όπως Το StartsWith ή Filter αντί για ένα που διαβάζει ολόκληρο τον πίνακα όπως In. Ο τελεστής In είναι καλός για συλλογές εντός μνήμης ή εάν ο πίνακας εξωτερικής προέλευσης δεδομένων είναι πολύ μικρός.

Εξετάστε το ενδεχόμενο αναπαραγωγής δεδομένων

Ορισμένες φορές, η πρόσβαση στα δεδομένα είναι αργή σε ένα ερώτημα καθώς αποθηκεύονται σε διαφορετική θέση ή μορφή. Για να κάνετε το ερώτημα ταχύτερο, μπορείτε να αντιγράψετε τα αργά δεδομένα και να τα αποθηκεύσετε τοπικά σε έναν πίνακα που είναι γρήγορος και εύκολος στην υποβολή ερωτημάτων. Ωστόσο, αυτό σημαίνει ότι τα τοπικά δεδομένα ενδέχεται να μην είναι η πιο ενημερωμένη έκδοση των αρχικών δεδομένων. Στη συνέχεια, εκτελέστε μια άλλη διαδικασία για την περιοδική ενημέρωση των τοπικών δεδομένων. Αυτή η διαδικασία μπορεί να είναι μια ροή του Power Automate, μια προσθήκη, μια αποθηκευμένη διαδικασία ή οποιαδήποτε άλλη μέθοδος που μπορεί να μεταφέρει δεδομένα από ένα σημείο σε ένα άλλο.

Η απαίτηση συχνότητας ενημέρωσης των τοπικών δεδομένων εξαρτάται από τις ανάγκες της επιχείρησής σας. Πόσο ενημερωμένα πρέπει να είναι τα δεδομένα για την εφαρμογή σας; Για παράδειγμα, ας υποθέσουμε ότι εργάζεστε για την Contoso, μια εταιρεία που πουλά ποδήλατα. Η λίστα των διαθέσιμων ποδηλάτων αποθηκεύεται σε μια βάση δεδομένων Products στην οποία μπορείτε να αποκτήσετε πρόσβαση μέσω ενός API σε μια προσαρμοσμένη σύνδεση. Ας υποθέσουμε όμως ότι η κλήση API είναι αργή και έτσι αποφασίζετε να αντιγράψετε τα δεδομένα του προϊόντος και να τα αποθηκεύσετε τοπικά σε έναν πίνακα. Στη συνέχεια, δημιουργείτε μια προβολή που συνδυάζει τον πίνακά σας με άλλα σχετικά δεδομένα για την εφαρμογή σας. Μπορείτε επίσης να δημιουργήσετε μια ροή του Power Automate που εκτελείται καθημερινά και ενημερώνει τον πίνακά σας με τα πιο πρόσφατα δεδομένα προϊόντος από το API. Στη συνέχεια, η εφαρμογή σας μπορεί να ζητήσει τα τοπικά δεδομένα ταχύτερα και τα δεδομένα είναι μόνο μίας ημέρας το πολύ.

Η αναπαραγωγή δεδομένων είναι ένας κοινός τύπος τεχνικής σε εφαρμογές εταιρικού επιπέδου για την εξασφάλιση καλής απόδοσης. Μπορείτε να χρησιμοποιήσετε προσθήκες του Dataverse, αποθηκευμένες διαδικασίες ή μετακίνηση δεδομένων για να αναπαραγάγετε δεδομένα σε έναν μοναδικό πίνακα που έχει βελτιστοποιηθεί για υποβολή ερωτημάτων. Το βασικό ερώτημα είναι: πόσο ενημερωμένα πρέπει να είναι αυτά τα δεδομένα; Εάν μπορείτε να αντέξετε οικονομικά κάποια καθυστέρηση, μπορείτε να χρησιμοποιήσετε αυτή την τεχνική για να επιταχύνετε την εφαρμογή σας.

Προτάσεις

Για να επιτύχετε αυτόν τον στόχο, λάβετε υπόψη τις ακόλουθες ερωτήσεις και προτάσεις:

  1. Πόσο σημαντικό είναι για έναν πελάτη να δει την τιμή των δεδομένων σε μια συλλογή ή πλέγμα δεδομένων; Θα ήταν αποδεκτό να επιλέξετε πρώτα μια εγγραφή και, στη συνέχεια, να εμφανίσετε τα δεδομένα σε μια φόρμα;
  2. Μπορεί μια προβολή να κάνει τις απαραίτητες εργασίες για να δει τα δεδομένα στη σωστή μορφή;
  3. Χρησιμοποιείτε έναν τελεστή "IN" όπου θα λειτουργήσει το "StartsWith";
  4. Πόσο ενημερωμένα πρέπει να είναι τα δεδομένα σας; Υπάρχει μια στρατηγική αναπαραγωγής δεδομένων που μπορείτε να χρησιμοποιήσετε για να κάνετε το ερώτημά σας να λειτουργήσει σε έναν μοναδικό πίνακα από προεπιλογή;