Skip to content

Commit 5595f80

Browse files
committed
Add project context for datastream-to-spanner
1 parent 3b2def5 commit 5595f80

3 files changed

Lines changed: 353 additions & 0 deletions

File tree

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
digraph Architecture {
2+
node [shape=box, fontname="Helvetica", style=filled, fillcolor=lightblue];
3+
4+
Datastream [label="Source DB\n(via Datastream)", shape=cylinder];
5+
GCS [label="Google Cloud Storage\n(AVRO/JSON)", shape=folder];
6+
Spanner [label="Cloud Spanner\n(Destination & Shadow Tables)", shape=cylinder];
7+
DLQ [label="Dead Letter Queue\n(GCS)", shape=folder];
8+
FilteredEventsGCS [label="Filtered Events\n(GCS)", shape=folder];
9+
10+
subgraph cluster_dataflow {
11+
label="Cloud Dataflow (DataStreamToSpanner)";
12+
fontname="Helvetica-Bold";
13+
style=dashed;
14+
color=gray;
15+
16+
ReadDataStream [label="DataStreamIO\n(Read Events)"];
17+
ProcessSchema [label="Process Information Schema\n(Read DDL)"];
18+
ReadDLQ [label="FileBasedDeadLetterQueueReconsumer\n(Read from DLQ)"];
19+
Reshuffle [label="Reshuffle\n(Random Key)"];
20+
TransformEvents [label="Apply Transformation to events"];
21+
WriteSpanner [label="Write events to Cloud Spanner"];
22+
WriteFiltered [label="Write Filtered Events"];
23+
WriteDLQRetry [label="Write To DLQ\n(Retryable Errors)"];
24+
WriteDLQSevere [label="Write To DLQ2\n(Severe Errors)"];
25+
}
26+
27+
Datastream -> GCS [label=" Change Events"];
28+
GCS -> ReadDataStream;
29+
Spanner -> ProcessSchema [label=" DDL"];
30+
ProcessSchema -> TransformEvents [label=" SideInput: DDL View", style=dotted];
31+
ProcessSchema -> WriteSpanner [label=" SideInput: DDL View", style=dotted];
32+
DLQ -> ReadDLQ [label=" Failed Events"];
33+
34+
ReadDataStream -> Reshuffle;
35+
ReadDLQ -> Reshuffle [label=" Retryable Events"];
36+
ReadDLQ -> WriteDLQSevere [label=" Permanent Errors"];
37+
38+
Reshuffle -> TransformEvents [label=" JSON Records"];
39+
TransformEvents -> WriteFiltered [label=" Filtered Events"];
40+
WriteFiltered -> FilteredEventsGCS;
41+
TransformEvents -> WriteSpanner [label=" Transformed Events"];
42+
TransformEvents -> WriteDLQSevere [label=" Permanent Errors"];
43+
44+
WriteSpanner -> Spanner [label=" Spanner Mutations"];
45+
WriteSpanner -> WriteDLQRetry [label=" Retryable Errors"];
46+
WriteSpanner -> WriteDLQSevere [label=" Permanent Errors"];
47+
48+
WriteDLQRetry -> DLQ;
49+
WriteDLQSevere -> DLQ;
50+
}
Lines changed: 243 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)