Skip to content

Commit 701b115

Browse files
DOC-6026 removed decision tree from Cloud section
1 parent e91d507 commit 701b115

File tree

4 files changed

+186
-182
lines changed

4 files changed

+186
-182
lines changed
Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
2+
```decision-tree {id="when-to-use-rdi"}
3+
id: when-to-use-rdi
4+
scope: rdi
5+
indentWidth: 25
6+
rootQuestion: cacheTarget
7+
questions:
8+
cacheTarget:
9+
text: |
10+
Do you want to use Redis as the target database for caching data?
11+
whyAsk: |
12+
RDI is specifically designed to keep Redis in sync with a primary database. If you don't need Redis as a cache, RDI is not the right tool.
13+
answers:
14+
no:
15+
value: "No"
16+
outcome:
17+
label: "❌ RDI only works with Redis as the target database"
18+
id: noRedisCache
19+
sentiment: "negative"
20+
yes:
21+
value: "Yes"
22+
nextQuestion: singleSource
23+
singleSource:
24+
text: |
25+
Are you transferring data from a single source database?
26+
whyAsk: |
27+
RDI is designed to work with a single source database. Multiple sources or Active-Active replicas create conflicting change events.
28+
answers:
29+
no:
30+
value: "No"
31+
outcome:
32+
label: "❌ RDI won't work with multiple source databases"
33+
id: multipleSourcesOrActiveActive
34+
sentiment: "negative"
35+
yes:
36+
value: "Yes"
37+
nextQuestion: systemOfRecord
38+
systemOfRecord:
39+
text: |
40+
Does your app always *write* to the source database and not to Redis?
41+
whyAsk: |
42+
RDI requires the source database to be the authoritative source of truth. If your app writes to Redis first, RDI won't work.
43+
answers:
44+
no:
45+
value: "No"
46+
outcome:
47+
label: "❌ RDI doesn't support syncing data from Redis back to the source database"
48+
id: notSystemOfRecord
49+
sentiment: "negative"
50+
yes:
51+
value: "Yes"
52+
nextQuestion: consistency
53+
consistency:
54+
text: |
55+
Can your app tolerate eventual consistency in the Redis cache?
56+
whyAsk: |
57+
RDI provides eventual consistency, not immediate consistency. If your app needs real-time cache consistency or hard latency limits, RDI is not suitable.
58+
answers:
59+
no:
60+
value: "No"
61+
outcome:
62+
label: "❌ RDI does not provide immediate cache consistency"
63+
id: needsImmediate
64+
sentiment: "negative"
65+
yes:
66+
value: "Yes"
67+
nextQuestion: deployment
68+
deployment:
69+
text: |
70+
Do you want a self-managed solution or an AWS-based solution?
71+
whyAsk: |
72+
RDI is available as a self-managed solution or as an AWS-based managed service. If you need a different deployment model, RDI may not be suitable.
73+
answers:
74+
no:
75+
value: "No"
76+
outcome:
77+
label: "❌ RDI may not be suitable - check deployment options"
78+
id: deploymentMismatch
79+
sentiment: "negative"
80+
yes:
81+
value: "Yes"
82+
nextQuestion: dataChangePattern
83+
dataChangePattern:
84+
text: |
85+
Does your source data change frequently in small increments?
86+
whyAsk: |
87+
RDI captures changes from the database transaction log. Large batch transactions or ETL processes can cause RDI to fail.
88+
answers:
89+
no:
90+
value: "No"
91+
outcome:
92+
label: "❌ RDI will fail with batch/ETL processes and large transactions"
93+
id: batchProcessing
94+
sentiment: "negative"
95+
yes:
96+
value: "Yes"
97+
nextQuestion: changeRate
98+
changeRate:
99+
text: |
100+
Are there fewer than 10K changes per second in the source database?
101+
whyAsk: |
102+
RDI has throughput limits. Exceeding these limits will cause processing failures and data loss.
103+
answers:
104+
no:
105+
value: "No"
106+
outcome:
107+
label: "❌ RDI throughput limits will be exceeded"
108+
id: exceedsChangeRate
109+
sentiment: "negative"
110+
yes:
111+
value: "Yes"
112+
nextQuestion: dataSize
113+
dataSize:
114+
text: |
115+
Is your total data size smaller than 100GB?
116+
whyAsk: |
117+
RDI has practical limits on the total data size it can manage. Very large datasets may exceed these limits.
118+
answers:
119+
no:
120+
value: "No"
121+
outcome:
122+
label: "❌ RDI may not be suitable - your data set is probably too large"
123+
id: dataTooLarge
124+
sentiment: "negative"
125+
yes:
126+
value: "Yes"
127+
nextQuestion: joins
128+
joins:
129+
text: |
130+
Do you need to perform join operations on data from several tables into a nested Redis JSON object?
131+
whyAsk: |
132+
RDI has limitations with complex join operations. If you need to combine data from multiple tables into nested structures, you may need custom transformations.
133+
answers:
134+
yes:
135+
value: "Yes"
136+
outcome:
137+
label: "❌ RDI may not be suitable - complex joins are not well supported"
138+
id: complexJoins
139+
sentiment: "negative"
140+
no:
141+
value: "No"
142+
nextQuestion: transformations
143+
transformations:
144+
text: |
145+
Does RDI support the data transformations you need for your app?
146+
whyAsk: |
147+
RDI provides built-in transformations, but if you need custom logic beyond what RDI supports, you may need a different approach.
148+
answers:
149+
no:
150+
value: "No"
151+
outcome:
152+
label: "❌ RDI may not be able to perform the required data transformations"
153+
id: unsupportedTransformations
154+
sentiment: "negative"
155+
yes:
156+
value: "Yes"
157+
nextQuestion: adminReview
158+
adminReview:
159+
text: |
160+
Has your database administrator reviewed RDI's requirements for the source database
161+
and confirmed they are acceptable?
162+
whyAsk: |
163+
RDI has specific requirements for the source database (binary logging, permissions, etc.). Your DBA must confirm these are acceptable before proceeding.
164+
answers:
165+
no:
166+
value: "No"
167+
outcome:
168+
label: "❌ RDI requirements for the source database can't be met"
169+
id: adminRejected
170+
sentiment: "negative"
171+
yes:
172+
value: "Yes"
173+
outcome:
174+
label: "✅ RDI is a good fit for your use case"
175+
id: goodFit
176+
sentiment: "positive"
177+
```

content/embeds/rdi-when-to-use.md

Lines changed: 0 additions & 181 deletions
Original file line numberDiff line numberDiff line change
@@ -40,184 +40,3 @@ RDI is not a good fit when:
4040
- You need to write data to multiple targets from the same pipeline (Redis supports other
4141
ways to replicate data across Redis databases such as replicaOf and Active Active).
4242
- Your database administrator has rejected RDI's requirements for the source database.
43-
44-
### Decision tree for using RDI
45-
46-
Use the decision tree below to determine whether RDI is a good fit for your architecture:
47-
48-
```decision-tree {id="when-to-use-rdi"}
49-
id: when-to-use-rdi
50-
scope: rdi
51-
indentWidth: 25
52-
rootQuestion: cacheTarget
53-
questions:
54-
cacheTarget:
55-
text: |
56-
Do you want to use Redis as the target database for caching data?
57-
whyAsk: |
58-
RDI is specifically designed to keep Redis in sync with a primary database. If you don't need Redis as a cache, RDI is not the right tool.
59-
answers:
60-
no:
61-
value: "No"
62-
outcome:
63-
label: "❌ RDI only works with Redis as the target database"
64-
id: noRedisCache
65-
sentiment: "negative"
66-
yes:
67-
value: "Yes"
68-
nextQuestion: singleSource
69-
singleSource:
70-
text: |
71-
Are you transferring data from a single source database?
72-
whyAsk: |
73-
RDI is designed to work with a single source database. Multiple sources or Active-Active replicas create conflicting change events.
74-
answers:
75-
no:
76-
value: "No"
77-
outcome:
78-
label: "❌ RDI won't work with multiple source databases"
79-
id: multipleSourcesOrActiveActive
80-
sentiment: "negative"
81-
yes:
82-
value: "Yes"
83-
nextQuestion: systemOfRecord
84-
systemOfRecord:
85-
text: |
86-
Does your app always *write* to the source database and not to Redis?
87-
whyAsk: |
88-
RDI requires the source database to be the authoritative source of truth. If your app writes to Redis first, RDI won't work.
89-
answers:
90-
no:
91-
value: "No"
92-
outcome:
93-
label: "❌ RDI doesn't support syncing data from Redis back to the source database"
94-
id: notSystemOfRecord
95-
sentiment: "negative"
96-
yes:
97-
value: "Yes"
98-
nextQuestion: consistency
99-
consistency:
100-
text: |
101-
Can your app tolerate eventual consistency in the Redis cache?
102-
whyAsk: |
103-
RDI provides eventual consistency, not immediate consistency. If your app needs real-time cache consistency or hard latency limits, RDI is not suitable.
104-
answers:
105-
no:
106-
value: "No"
107-
outcome:
108-
label: "❌ RDI does not provide immediate cache consistency"
109-
id: needsImmediate
110-
sentiment: "negative"
111-
yes:
112-
value: "Yes"
113-
nextQuestion: deployment
114-
deployment:
115-
text: |
116-
Do you want a self-managed solution or an AWS-based solution?
117-
whyAsk: |
118-
RDI is available as a self-managed solution or as an AWS-based managed service. If you need a different deployment model, RDI may not be suitable.
119-
answers:
120-
no:
121-
value: "No"
122-
outcome:
123-
label: "❌ RDI may not be suitable - check deployment options"
124-
id: deploymentMismatch
125-
sentiment: "negative"
126-
yes:
127-
value: "Yes"
128-
nextQuestion: dataChangePattern
129-
dataChangePattern:
130-
text: |
131-
Does your source data change frequently in small increments?
132-
whyAsk: |
133-
RDI captures changes from the database transaction log. Large batch transactions or ETL processes can cause RDI to fail.
134-
answers:
135-
no:
136-
value: "No"
137-
outcome:
138-
label: "❌ RDI will fail with batch/ETL processes and large transactions"
139-
id: batchProcessing
140-
sentiment: "negative"
141-
yes:
142-
value: "Yes"
143-
nextQuestion: changeRate
144-
changeRate:
145-
text: |
146-
Are there fewer than 10K changes per second in the source database?
147-
whyAsk: |
148-
RDI has throughput limits. Exceeding these limits will cause processing failures and data loss.
149-
answers:
150-
no:
151-
value: "No"
152-
outcome:
153-
label: "❌ RDI throughput limits will be exceeded"
154-
id: exceedsChangeRate
155-
sentiment: "negative"
156-
yes:
157-
value: "Yes"
158-
nextQuestion: dataSize
159-
dataSize:
160-
text: |
161-
Is your total data size smaller than 100GB?
162-
whyAsk: |
163-
RDI has practical limits on the total data size it can manage. Very large datasets may exceed these limits.
164-
answers:
165-
no:
166-
value: "No"
167-
outcome:
168-
label: "❌ RDI may not be suitable - your data set is probably too large"
169-
id: dataTooLarge
170-
sentiment: "negative"
171-
yes:
172-
value: "Yes"
173-
nextQuestion: joins
174-
joins:
175-
text: |
176-
Do you need to perform join operations on data from several tables into a nested Redis JSON object?
177-
whyAsk: |
178-
RDI has limitations with complex join operations. If you need to combine data from multiple tables into nested structures, you may need custom transformations.
179-
answers:
180-
yes:
181-
value: "Yes"
182-
outcome:
183-
label: "❌ RDI may not be suitable - complex joins are not well supported"
184-
id: complexJoins
185-
sentiment: "negative"
186-
no:
187-
value: "No"
188-
nextQuestion: transformations
189-
transformations:
190-
text: |
191-
Does RDI support the data transformations you need for your app?
192-
whyAsk: |
193-
RDI provides built-in transformations, but if you need custom logic beyond what RDI supports, you may need a different approach.
194-
answers:
195-
no:
196-
value: "No"
197-
outcome:
198-
label: "❌ RDI may not be able to perform the required data transformations"
199-
id: unsupportedTransformations
200-
sentiment: "negative"
201-
yes:
202-
value: "Yes"
203-
nextQuestion: adminReview
204-
adminReview:
205-
text: |
206-
Has your database administrator reviewed RDI's requirements for the source database
207-
and confirmed they are acceptable?
208-
whyAsk: |
209-
RDI has specific requirements for the source database (binary logging, permissions, etc.). Your DBA must confirm these are acceptable before proceeding.
210-
answers:
211-
no:
212-
value: "No"
213-
outcome:
214-
label: "❌ RDI requirements for the source database can't be met"
215-
id: adminRejected
216-
sentiment: "negative"
217-
yes:
218-
value: "Yes"
219-
outcome:
220-
label: "✅ RDI is a good fit for your use case"
221-
id: goodFit
222-
sentiment: "positive"
223-
```

content/integrate/redis-data-integration/when-to-use.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,9 @@ Use the information in the sections below to determine whether RDI is a good fit
3030
```
3131

3232
{{< embed-md "rdi-when-to-use.md" >}}
33+
34+
### Decision tree for using RDI
35+
36+
Use the decision tree below to determine whether RDI is a good fit for your architecture:
37+
38+
{{< embed-md "rdi-when-to-use-dec-tree.md" >}}

content/operate/rc/databases/rdi/_index.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ but must also be fast and scalable. This is a common requirement for mobile and
3131
apps with a rapidly-growing number of users; the performance of the main database is fine at first
3232
but it will soon struggle to handle the increasing demand without a cache.
3333

34-
Use the information in the sections below to determine whether RDI is a good fit for your architecture.
34+
Use the information in the sections below to determine whether RDI is a good fit for your architecture. See also the
35+
[decision tree for using RDI]({{<relref "/integrate/redis-data-integration/when-to-use#decision-tree-for-using-rdi">}})
36+
which presents the considerations in a straightforward question-and-answer format.
3537

3638
```decision-tree
3739
```

0 commit comments

Comments
 (0)