Czyste importy danych: moc kluczy alternatywnych w Dataverse
By Mirko Peters ·
Witamy ponownie w podcaście i na towarzyszącym mu blogu! Jeśli kiedykolwiek patrzyłeś na środowisko Power Platform, które dusi się od tysięcy zduplikowanych rekordów, brakujących odwołań do rekordów nadrzędnych i irytujących błędów wyszukiwania tuż po rutynowej migracji danych, z pewnością nie jesteś sam. Zbyt wiele wdrożeń w dużych organizacjach zaczyna się od podejścia rodem z arkusza kalkulacyj
Automatically translated with AI from the original post. Read the English original
Witamy ponownie w podcaście i na towarzyszącym mu blogu! Jeśli kiedykolwiek patrzyłeś na środowisko Power Platform, które dusi się od tysięcy zduplikowanych rekordów, brakujących odwołań do rekordów nadrzędnych i irytujących błędów wyszukiwania tuż po rutynowej migracji danych, z pewnością nie jesteś sam. Zbyt wiele wdrożeń w dużych organizacjach zaczyna się od podejścia rodem z arkusza kalkulacyjnego — traktowania Microsoft Dataverse jak wyposażonej tabeli bazy danych, w której wszystko jest dozwolone — by po chwili patrzeć, jak cała architektura się rozpada, gdy dane produkcyjne zaczynają rosnąć.
W tym wpisie rozwijamy wszystko, o czym rozmawialiśmy, i pokazujemy drogę od kruchego prototypu typu „u mnie w formularzu działa” do solidnej architektury klasy enterprise, która sprawnie działa nawet przy 100 tys. rekordów i więcej. Zagłębmy się w to, jak wykorzystać unikalne klucze alternatywne, inteligentne strategie upsert oraz logikę biznesową na pierwszym miejscu, by utrzymać środowisko Dataverse w nienagannym stanie.
Dlaczego proste rozwiązania się załamują
Przy tworzeniu nowej aplikacji biznesowej pokusa, by działać szybko i „łamać rzeczy”, jest zawsze silna. Niestety łamanie rzeczy często oznacza łamanie integralności danych. Podejście rodem z arkusza kalkulacyjnego prowadzi wprost do doraźnych pól, niezarządzanych formuł w aplikacjach canvas i rozproszonych przepływów Power Automate, które tworzą ukryte powiązania w całym systemie. Gdy logika biznesowa znajduje się poza głównym modelem danych, nieuchronnie napotykasz niespójne wyzwalacze i zagmatwane przypadki brzegowe, w których działania użytkowników całkowicie omijają reguły walidacji.
Co więcej, bez właściwego śledzenia pochodzenia danych pulpity z czasem przestaną odzwierciedlać rzeczywistość. Wskaźniki tracą wiarygodność, ponieważ nikt nie wie, który system źródłowy lub zautomatyzowany przepływ ostatnio zmodyfikował kluczową wartość. Najgorsze jest jednak to, że importy danych oparte wyłącznie na identyfikatorach GUID generowanych przez system, a nie na znaczących identyfikatorach biznesowych, to bomby z opóźnionym zapłonem. Bez naturalnych kluczy każde załadowanie danych grozi powstaniem duplikatów, osieroconych rekordów i zepsutych odwołań, które wymagają żmudnego ręcznego czyszczenia.
Architektura w skrócie
Budowa skalowalnych rozwiązań wymaga zdyscyplinowanych ram. Traktuj swoją architekturę jak potok składający się z pięciu odrębnych warstw:
- Model: Znormalizuj główne encje i zaplanuj jasne tabele relacji 1:N, N:N oraz hierarchii, zanim napiszesz choćby jedną linijkę kodu.
- Logika: Preferuj wykonywanie po stronie serwera — na przykład reguły biznesowe, synchroniczne wtyczki i przepływy działające w czasie rzeczywistym — w przypadku niezmiennych reguł, które nigdy nie mogą zostać pominięte. Przepływy w chmurze zostaw do orkiestracji i powiadomień.
- Automatyzacja: Wykorzystuj pola obliczeniowe i pola zagregowane tam, gdzie relacje są silne, dbając o to, by nigdy niepotrzebnie nie duplikować prawdziwego źródła danych.
- Integracja: Zawsze używaj kluczy alternatywnych (znaczących identyfikatorów biznesowych), aby bezpiecznie wykonywać upsert i wymuszać ścisłą unikalność na granicach systemów zewnętrznych.
- Obserwowalność: Rejestruj trafienia reguł, decyzje przepływów i odświeżenia pól zagregowanych. Twórz dedykowane pulpity użycia i poziomu SLA, aby proaktywnie monitorować kondycję systemu.
Wzorce projektowe relacji (gotowe do wykorzystania)
Prawidłowe zaprojektowanie modelu danych oznacza wybór właściwych wzorców relacji od pierwszego dnia. Oto sprawdzone w boju wzorce, które warto wdrożyć:
- Hierarchia: Region (1) do Sklepu (N) do Transakcji (N). Agregacje płyną w górę bez wysiłku, na przykład obliczenie Region.Sum(Store.Sum(Transaction.Amount)).
- Własność i zabezpieczenia: Jednostka biznesowa (1) do Konta (N). Połącz to z modelami własności zespołowej, aby zapewnić szczegółowe udostępnianie i zakres ról zabezpieczeń.
- Odwołanie: Produkt (1) do PozycjiCennika (N) oraz Waluta (1) do wszystkich pól walutowych.
- Event sourcing: Zamówienie (1) do PozycjiZamówienia (N), uzupełnione tabelą OrderStatusHistory, która zapewnia solidny ślad audytu.
- Wiele do wielu: Kontakt do Kampanii poprzez niestandardową tabelę powiązań, zawsze gdy potrzebujesz przechowywać atrybuty na samej relacji, na przykład konkretną Rolę lub datę interakcji.
Zabezpieczenia: Zawsze unikaj cyklicznych zależności w obliczeniach pól zagregowanych. Utrzymuj wyszukiwania jednoznaczne, tak aby zawsze reprezentowały jedno jasne znaczenie biznesowe, i wymuszaj wymagane relacje wtedy, gdy reguły biznesowe nakazują, że rekord podrzędny nie może istnieć bez swojego rekordu nadrzędnego.
Logika biznesowa na pierwszym miejscu (tam, gdzie jej miejsce)
Miejsce, w którym umieścisz logikę biznesową, decyduje o tym, jak łatwo będzie utrzymywać aplikację. Jeśli musisz blokować nieprawidłowe dane przed zapisaniem w systemie, polegaj na synchronicznej logice po stronie serwera, na przykład na niestandardowych wtyczkach lub przepływach w czasie rzeczywistym. Jeśli proces może bezpiecznie wykonać się po zdarzeniu zapisu, przenieś go do asynchronicznej logiki po stronie serwera. Usługi Power Automate zarezerwuj wyłącznie do komunikacji między aplikacjami, powiadomień dla użytkowników i złożonych integracji zewnętrznych.
Unikaj częstego antywzorca, jakim jest powielanie tej samej reguły walidacji w czterech różnych aplikacjach canvas i trzech przepływach w chmurze. Zamiast tego prowadź scentralizowany katalog reguł, który dokumentuje każdą tabelę, warunek wyzwalacza, akcję i właściciela biznesowego.
Pola obliczeniowe i zbiorcze, którym można ufać
Pola obliczeniowe i zbiorcze są potężnym narzędziem do utrzymania czystego modelu danych, ale wymagają ostrożnego podejścia. Zawsze opieraj formuły na stabilnych relacjach, a nie na opcjonalnych powiązaniach, które mogą pozostać puste. Do podsumowywania rekordów podrzędnych preferuj natywne pola zbiorcze zamiast niestandardowych przepływów, a jeśli pracujesz z dużymi wolumenami danych, zaplanuj zadania ponownego obliczania poza godzinami szczytu.
Aby użytkownicy i administratorzy mogli ufać tym wartościom, zawsze dodawaj pola „Last Recalculated On” i „Rollup Status” do swoich rekordów głównych. Ten prosty dodatek eliminuje niejasności i daje zespołowi wsparcia natychmiastowy wgląd w aktualność danych.
Klucze alternatywne: czyste importy
To fundament solidnej integracji danych. Przy importowaniu danych z systemów legacy, systemów ERP lub zewnętrznych interfejsów API potrzebujesz niezawodnych identyfikatorów biznesowych, takich jak VendorCode, EmployeeID, SKU, ExternalCaseId czy Email, a nie wewnętrznych identyfikatorów GUID, które zmieniają się między środowiskami.
Tworząc unikatowe klucze alternatywne w tych kolumnach i wcześniej weryfikując jakość danych, odblokujesz prawdziwą moc interfejsu API Dataverse: operację Upsert. Upsert sprawdza klucz alternatywny; jeśli rekord istnieje, zostaje zaktualizowany, a jeśli nie, zostaje utworzony nowy. Dzięki temu całkowicie eliminujesz duplikaty rekordów podczas importów. W scenariuszach złożonych, na przykład przy dopasowywaniu pracownika w różnych spółkach zależnych, możesz zdefiniować klucze złożone z wielu kolumn, na przykład CompanyCode i EmployeeNumber. Zawsze utrzymuj te klucze niezmienne, a jeśli potrzeby biznesowe wymuszą zmianę, wprowadź zastępczy stabilny klucz powiązany z zakresami dat ValidFrom i ValidTo.
Lista kontrolna wydajności (szybkie usprawnienia)
Wraz ze wzrostem adopcji użytkowników wydajność staje się Twoją główną miarą sukcesu. Aby środowisko działało szybko, zastosuj te szybkie usprawnienia:
- Indeksuj kolumny wyszukiwania, które są często używane w filtrach, i utrzymuj widoki aplikacji opartych na modelu w przejrzystej formie, uwzględniając wyłącznie kolumny, które użytkownicy rzeczywiście muszą widzieć.
- Zastąp formuły obejmujące całą galerię w aplikacjach canvas zapytaniami delegowalnymi, zawsze preferując filtrowanie i sortowanie po stronie serwera.
- Ogranicz długie łańcuchy synchronicznych wtyczek. Dokładnie rejestruj czasy wykonania i dziel ciężką logikę na zadania asynchroniczne.
- Grupuj operacje na danych, używając ExecuteMultiple lub akcji przetwarzania wsadowego w przepływach w chmurze.
- Przenoś ciężkie transformacje danych do Dataflows Gen2 lub Microsoft Fabric, gdy masz do czynienia z ogromną skalą analityczną.
Zarządzanie i odporność
Aplikacja korporacyjna jest tylko tak dobra, jak jej model zarządzania. Utrzymuj ścisły potok wdrożeń przebiegający od środowiska programistycznego przez testowe do produkcyjnego, z użyciem rozwiązań zarządzanych. Kontroluj wersje artefaktów rozwiązań za pomocą Power Platform CLI (PAC CLI) i wymagaj recenzji koleżeńskich dla wszystkich niestandardowych wtyczek i przepływów w chmurze.
Utwórz scentralizowaną tabelę telemetrii, która będzie rejestrować trafienia reguł, dzienniki wyjątków, opóźnienia zbiorczych obliczeń oraz błędy przepływów. Uzupełnij ją zautomatyzowanymi zabezpieczeniami, takimi jak alerty o konfliktach kluczy alternatywnych i zadania wykrywania osieroconych rekordów, aby dane pozostawały w dobrej kondycji przez długi czas.
Plan wdrożenia w 12 krokach (pilotaż w 1–2 dni)
Jeśli jesteś gotowy, by wdrożyć te zasady w praktyce, postępuj zgodnie z tym szybkim 12-etapowym planem wdrożenia dla swojego następnego projektu pilotażowego:
- Naszkicuj diagram relacji encji (ERD), obejmujący encje, klucze, relacje oraz modele własności.
- Zidentyfikuj podstawowe identyfikatory biznesowe i utwórz niezbędne klucze alternatywne.
- Zbuduj podstawowe tabele i ustanów wymagane relacje, wprowadzając początkowe dane referencyjne.
- Dodaj pola obliczeniowe i zbiorcze dla najważniejszych wskaźników KPI.
- Wdróż walidacje po stronie serwera dla krytycznych reguł biznesowych, które nie mogą zostać naruszone.
- Utwórz widoki oparte na modelu z delegowalnymi filtrami i zindeksuj najczęściej używane predykaty.
- Używaj Power Automate wyłącznie do orkiestracji i zadań powiadomień.
- Zaimportuj kontrolowany fragment danych, używając operacji upsert opartych na kluczach alternatywnych.
- Skonfiguruj tabelę logowania telemetrii i zbuduj prostą stronę monitorowania kondycji.
- Przeprowadź test skalowalności, obciążając środowisko 5–10-krotnie większym wolumenem, niż oczekujesz, i odpowiednio dostrój indeksy oraz częstotliwość agregacji.
- Spakuj swoją pracę do zarządzanego rozwiązania i przenieś je do środowiska testowego.
- Przygotuj obszerny podręcznik operacyjny obejmujący procedury importu, zasady rotacji kluczy oraz kroki odzyskiwania po awarii.
Typowe pułapki (i sposoby ich naprawy)
Nawet przy najlepszych planach zespoły czasem napotykają problemy. Oto sposób na naprawę najczęstszych z nich:
- Duplikaty po imporcie: zwykle wynikają z brakujących lub słabych kluczy alternatywnych. Aby to naprawić, zdefiniuj odpowiednie klucze, ponownie uruchom zadania upsert i scal istniejące duplikaty.
- Błędne lub nieaktualne agregacje: często są wywoływane przez opcjonalne relacje, logikę cykliczną lub ograniczane przeliczenia. Uprość graf relacji, zaplanuj regularne przeliczanie i dodaj wskaźnik KPI świeżości danych.
- Niespójne reguły: pojawiają się, gdy identyczna logika przypadkowo jest rozproszona w wielu przepływach w chmurze. Scentralizuj tę logikę w jednej regule po stronie serwera i przeprojektuj przepływy tak, aby działały wyłącznie jako orkiestratory.
- Wolno ładujące się galerie: są spowodowane formułami w aplikacjach canvas, których nie można delegować. Przełącz się na predykaty delegowalne, zmniejsz liczbę wyświetlanych kolumn i w razie potrzeby wstępnie oblicz wartości.
Budowanie złożonych aplikacji biznesowych w Dataverse nie musi być walką pod górę z brudnymi danymi i zerwanymi relacjami. Dzięki solidnemu modelowi danych, kluczom alternatywnym zapewniającym czyste importy oraz scentralizowanej logice biznesowej możesz tworzyć skalowalne rozwiązania, które wytrzymają próbę czasu.
Aby usłyszeć jeszcze więcej eksperckich wskazówek, omówień architektury i szczegółowych analiz budowania solidnych rozwiązań w Microsoft Cloud, koniecznie posłuchaj powiązanego odcinka podcastu: Customize Dataverse for Complex Business Apps. Do zobaczenia w kolejnym odcinku!