Κοινή χρήση μέσω


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

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

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

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

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

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

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

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

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

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

Χρήση StartsWith ή Φίλτρου

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

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

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

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

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

Προτάσεις

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

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