1

We have requirements where we need to store Key-Value pair type data for quick retrieval in BizTalk Map.

Is there any best practice by which we can store it. The data stored should be easy to maintain and should have a cache mechanism for easy retrieval as the number of a key-value pair to be stored can be high in a number ranging from 1- 100 or more.

We do not need to store confidential information so I am not preferring SSO. but still is it a preferable method?

We need to use it in BizTalk map and data retrieval might happen for each row of data so there is performance pressure as well.

Saveen
  • 4,120
  • 14
  • 38
  • 41
  • 100 isn't exactly a lot. How many individual lookups do you expect and how many different tables of values will there be. – Johns-305 Dec 06 '18 at 19:30
  • P.S. You might want to edit your question to remove "Best way" as that tends to be asking for an opinion, which is off topic, unless you specifically give measurable criteria of what determines what the "Best way" is. Questions asking for the "Best way" tend to attract down votes and close votes – Dijkgraaf Dec 06 '18 at 20:49
  • Grammatical correction – Saveen Dec 07 '18 at 06:00
  • 100 isn't a Lot but my source is a flat file which can go up to 20MB and contain 60-70k records. And there is 4 - 5 times value retrieval which totals to 5*60000 times data fetch and that adds to performance decrease for large files. – Saroj Kumar Dec 07 '18 at 18:09
  • I gave the criteria for best way i. e., fast retrieval, caching of values, multiple times value retrieval, key value pair storage – Saroj Kumar Dec 07 '18 at 18:24

2 Answers2

0

For this I would use the Get Common Value and Get Application Value functoids XRef functiods. It both gives you the ability to have key value pairs (with an additional element so you can scope it per application), and they also do Caching.

I wrote a blog post about it BizTalk Pattern: Translating Reference Data in a Map using Xref

Dijkgraaf
  • 11,049
  • 17
  • 42
  • 54
0

You do have the xRef Functoids, but those are somewhat difficult to maintain and use beyond their original design requirement.

What I have done for a similar situation is to pre-Fetch the lookup tables as SQL Table Types into an Orchestration, then use a Multi-Input Map passing the business message and lookup tables. That way, all lookups are internal to the transform.

Retrieving the entire lookup table once is in many case less taxing than doing many lookups.

Johns-305
  • 10,908
  • 12
  • 21