From 8d253ae7c46aca370f0fa4ab3bd3c90a71b7dd1d Mon Sep 17 00:00:00 2001 From: Eric Pugh Date: Thu, 15 Aug 2024 17:21:33 -0400 Subject: [PATCH 1/3] add in the panana canal diagram --- README.md | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f369c6c..88f2608 100644 --- a/README.md +++ b/README.md @@ -105,8 +105,32 @@ In post processing, you can use the Client ID field to connect queries and event If your user identification is stable, then feel free to use the [Query Request --> Client ID](https://o19s.github.io/ubi/docs/html/query.request.schema.html#client_id) and [Event --> Client ID](https://o19s.github.io/ubi/docs/html/event.schema.html#client_id). Otherwise, see the above FAQ entry for how to handle it. The item ID is tracked for an event in the [Event --> Object](https://o19s.github.io/ubi/docs/html/event.schema.html#event_attributes_object) datastructure. +#### How can I correlate sensitive data? + +We often have sensitive data that is returned as part of the search process that changes quickly, and we would not want to expose to the front end. + +For example, in ecommerce, we might want to track the margin that is earned on a product, but not pass that data back to the browser, just to collect it later int he events. + +To do that, we introduce a cache into our architecture for this sensitive data: + +```mermaid +sequenceDiagram + actor Alice + Alice ->> Browser: "I want a mobile phone" + Browser ->> API: "{user_search_query:mobile phone}" + API ->> SearchEngine: "q=mobile phone" + SearchEngine ->> UBI_db: Store queryId and SKUs of phones returned to user + SearchEngine->>API: Return QueryId and list of mobile phones by SKU with price and profit margin + API ->> Cache: Store Margins per Phone under QueryId and SKU + API->> Browser: QueryID and list of mobile phones by SKU with price + Alice->> Browser: "Click iPhone 15 Pro" + Browser->> API: Click Event with SKU and QueryId + API->> Cache: Look up Margin based on QueryId and SKU + API->> UBI_db: Store queryId and SKU and Margin +``` - +Another common reason is to have rich events, but reduce the volume of data passed over the wire to the client. + ### 🏫 Learn More From 87c2edc25af5bb4fcbf529eeb4477b89919c7f8c Mon Sep 17 00:00:00 2001 From: Eric Pugh Date: Thu, 15 Aug 2024 17:22:25 -0400 Subject: [PATCH 2/3] add name --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 88f2608..d7141ae 100644 --- a/README.md +++ b/README.md @@ -130,6 +130,8 @@ sequenceDiagram ``` Another common reason is to have rich events, but reduce the volume of data passed over the wire to the client. + +We sometimes refer to this shortcut architecture as "the Panama Canal", as in taking an extreme shortcut! From 3fe24658f6d8af0e1d2d9733a5b54334084da774 Mon Sep 17 00:00:00 2001 From: Eric Pugh Date: Thu, 15 Aug 2024 17:29:09 -0400 Subject: [PATCH 3/3] text --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d7141ae..7e015cb 100644 --- a/README.md +++ b/README.md @@ -105,11 +105,11 @@ In post processing, you can use the Client ID field to connect queries and event If your user identification is stable, then feel free to use the [Query Request --> Client ID](https://o19s.github.io/ubi/docs/html/query.request.schema.html#client_id) and [Event --> Client ID](https://o19s.github.io/ubi/docs/html/event.schema.html#client_id). Otherwise, see the above FAQ entry for how to handle it. The item ID is tracked for an event in the [Event --> Object](https://o19s.github.io/ubi/docs/html/event.schema.html#event_attributes_object) datastructure. -#### How can I correlate sensitive data? +#### How can I correlate private sensitive data with public event tracking? -We often have sensitive data that is returned as part of the search process that changes quickly, and we would not want to expose to the front end. +We often have sensitive data that is returned as part of the search process that changes quickly, and we would not want to expose that information in front end, even hidden! -For example, in ecommerce, we might want to track the margin that is earned on a product, but not pass that data back to the browser, just to collect it later int he events. +For example, in ecommerce, we might want to track the margin that is earned on a product, but not pass that data back to the browser, just to collect it later in the events. To do that, we introduce a cache into our architecture for this sensitive data: