Dataverse Alternate Keys a výkon — intake snapshot
Původní český požadavek:
Prozkoumej mi Dataverse Alternate Keys z pohledu výkonu: řádek vzniká v Dataverse dřív, než známe ID z externího systému; async integrace po vytvoření zavolá externí systém, vrátí ID a to se pak uloží do stringového Alternate Key sloupce. Zajímá mě dopad na create/update/upsert, jestli je to dobrý návrh pro výkon a idempotenci, a odkazy na Microsoft dokumentaci.
Prozkoumej mi Dataverse Alternate Keys z pohledu výkonu: řádek vzniká v Dataverse dřív, než známe ID z externího systému; async integrace po vytvoření zavolá externí systém, vrátí ID a to se pak uloží do stringového Alternate Key sloupce. Zajímá mě dopad na create/update/upsert, jestli je to dobrý návrh pro výkon a idempotenci, a odkazy na Microsoft dokumentaci.
Toto je veřejný intake snapshot k výzkumu. Finální doporučení je zde: Dataverse Alternate Keys: doporučení pro pozdě doplněné externí ID.
Ověřená startovní fakta z Microsoft dokumentace
- Alternate Keys jsou v Dataverse určené pro identifikaci řádků jinak než primárním GUID a běžně dávají smysl pro integrace s externími systémy.
- Alternate Keys používají databázové indexy: Microsoft uvádí, že jimi vynucuje unikátnost a optimalizuje lookup výkon.
- Vytvoření indexu pro existující tabulku může trvat dlouho; stav se sleduje přes
EntityKeyIndexStatusa index se vytváří asynchronně. - Limity klíče: SQL index constraint v dokumentaci uvádí max. 900 bytes per key a 16 columns per key; tabulka může mít až 10 alternate key definitions.
- Podporované typy sloupců pro klíč zahrnují např. string, integer, decimal, datetime, lookup a choice/picklist; sloupce nesmí mít field-level security.
- Některé znaky ve string hodnotě klíče rozbíjí GET/PATCH adresování přes alternate key:
/,<,>,*,%,&,:,\\,?,+. - Upsert má podle Microsoftu performance penalty proti Create; pokud víme, že řádek neexistuje, Microsoft doporučuje použít
Create.
Konkrétní výzkumné otázky
- Jaká je reálná cena Alternate Key na create/update cestě, protože je pod tím databázový index?
- Co přesně Microsoft říká k výkonu pro
Create,Update,Upserta adresování řádku přes alternate key? - Co se stane, když je alternate-key string při create prázdný/null a doplní se až pozdějším update?
- Je stringový external ID jako Alternate Key vhodný pro high-throughput integraci?
- Kdy je lepší mít external ID jen jako normální sloupec a idempotenci řešit jiným stabilním klíčem?
- Co má tým měřit v pre-produkci: latence create, latence pozdějšího update, konflikty unikátnosti, retry/replay chování a budoucí upsert výkon?
Vytvořené tasky
t_3c10a4b4— research: Dataverse Alternate Keys mechanics + performance implicationst_47dc86cd— research: integration patterns when external ID arrives after Dataverse createt_c2b4b7a2— analysis: recommendation for Dataverse Alternate Keys with delayed external IDt_114800f0— writer: public intake snapshott_5690191f— reviewer: intake snapshot + final recommendation review/fixup
Oficiální Microsoft dokumentace
- Work with alternate keys
- Use an alternate key to reference a record
- Use Upsert to create or update a record
- Retrieve a table row using the Web API — retrieve using an alternate key
Poznámka k rozsahu
Finální doporučení je publikované samostatně zde: Dataverse Alternate Keys: doporučení pro pozdě doplněné externí ID.