Skip to content

Commit f58b9bb

Browse files
DOC-6026 modify page to use embed
1 parent 1ce835d commit f58b9bb

File tree

2 files changed

+147
-146
lines changed

2 files changed

+147
-146
lines changed

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

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
## When to use RDI
2+
3+
You should use RDI when:
4+
5+
- You must use a slow database as the system of record for the app.
6+
- The app must always *write* its data to the slow database.
7+
- You already intend to use Redis for the app cache.
8+
- The data changes frequently in small increments.
9+
- Your app can tolerate *eventual* consistency of data in the Redis cache.
10+
- RDI throughput during
11+
[full sync]({{< relref "/integrate/redis-data-integration/data-pipelines#pipeline-lifecycle" >}}) would not exceed 30K records per second and during
12+
[CDC]({{< relref "/integrate/redis-data-integration/data-pipelines#pipeline-lifecycle" >}})
13+
would not exceed 10K records per second.
14+
15+
## When not to use RDI
16+
17+
You should *not* use RDI when:
18+
19+
- You are migrating an existing data set into Redis only once.
20+
- Your app needs *immediate* cache consistency rather than *eventual* consistency.
21+
- The data is ingested from two replicas of Active-Active at the same time.
22+
- The app must *write* data to the Redis cache, which then updates the source database.
23+
- Your data set will only ever be small.
24+
- Your data is updated by some batch or ETL process with long and large transactions - RDI will fail
25+
processing these changes.
26+
27+
## Decision tree for using RDI
28+
29+
Use the decision tree below to determine whether RDI is a good fit for your architecture:
30+
31+
```decision-tree {id="when-to-use-rdi"}
32+
id: when-to-use-rdi
33+
scope: rdi
34+
rootQuestion: systemOfRecord
35+
questions:
36+
systemOfRecord:
37+
text: |
38+
Does your app require a disk-based database as the system of record?
39+
whyAsk: |
40+
RDI is designed to keep Redis in sync with a primary database. If you don't need a primary database, RDI is not necessary.
41+
answers:
42+
yes:
43+
value: "Yes"
44+
nextQuestion: writeLocation
45+
no:
46+
value: "No"
47+
outcome:
48+
label: "RDI is not necessary for your use case"
49+
id: notNecessary
50+
sentiment: "negative"
51+
writeLocation:
52+
text: |
53+
Does your app write data directly to the disk-based database?
54+
whyAsk: |
55+
RDI requires the primary database to be the system of record. If your app writes to Redis first, RDI won't work.
56+
answers:
57+
yes:
58+
value: "Yes"
59+
nextQuestion: consistency
60+
no:
61+
value: "No"
62+
outcome:
63+
label: "RDI won't work - your app must write to the primary database"
64+
id: wrongWritePattern
65+
sentiment: "negative"
66+
consistency:
67+
text: |
68+
Can your app tolerate eventual consistency in the Redis cache?
69+
whyAsk: |
70+
RDI provides eventual consistency, not immediate consistency. If your app needs real-time cache consistency, RDI is not suitable.
71+
answers:
72+
yes:
73+
value: "Yes"
74+
nextQuestion: throughput
75+
no:
76+
value: "No"
77+
outcome:
78+
label: "RDI is not suitable - you need immediate cache consistency"
79+
id: needsImmediate
80+
sentiment: "negative"
81+
throughput:
82+
text: |
83+
Will your throughput stay within RDI limits (≤30K records/sec during full sync, ≤10K records/sec during CDC)?
84+
whyAsk: |
85+
RDI has throughput limits. Exceeding these limits will cause processing failures and data loss.
86+
answers:
87+
yes:
88+
value: "Yes"
89+
nextQuestion: dataPattern
90+
no:
91+
value: "No"
92+
outcome:
93+
label: "RDI throughput limits will be exceeded"
94+
id: exceedsLimits
95+
sentiment: "negative"
96+
dataPattern:
97+
text: |
98+
Is your data updated frequently in small increments (not by batch/ETL with large transactions)?
99+
whyAsk: |
100+
RDI captures changes from the database transaction log. Large batch transactions or ETL processes can cause RDI to fail.
101+
answers:
102+
yes:
103+
value: "Yes"
104+
nextQuestion: dataSize
105+
no:
106+
value: "No"
107+
outcome:
108+
label: "RDI will fail with batch/ETL processes and large transactions"
109+
id: batchProcessing
110+
sentiment: "negative"
111+
dataSize:
112+
text: |
113+
Is your data set large enough to benefit from caching?
114+
whyAsk: |
115+
RDI adds operational complexity. If your data set is small, you may not need caching at all.
116+
answers:
117+
yes:
118+
value: "Yes"
119+
nextQuestion: dataSource
120+
no:
121+
value: "No"
122+
outcome:
123+
label: "RDI is not necessary - your data set is too small"
124+
id: tooSmall
125+
sentiment: "negative"
126+
dataSource:
127+
text: |
128+
Is your data ingested from a single source (not from two Active-Active replicas simultaneously)?
129+
whyAsk: |
130+
RDI cannot handle data ingested from two Active-Active replicas at the same time, as this creates conflicting change events.
131+
answers:
132+
yes:
133+
value: "Yes"
134+
outcome:
135+
label: "✅ RDI is a good fit for your use case"
136+
id: goodFit
137+
sentiment: "positive"
138+
no:
139+
value: "No"
140+
outcome:
141+
label: "RDI won't work with Active-Active replicas"
142+
id: activeActive
143+
sentiment: "negative"
144+
```

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

Lines changed: 3 additions & 146 deletions
Original file line numberDiff line numberDiff line change
@@ -15,155 +15,12 @@ summary: Redis Data Integration keeps Redis in sync with the primary database in
1515
type: integration
1616
weight: 5
1717
---
18+
```decision-tree
19+
```
1820

1921
RDI is designed to support apps that must use a disk based database as the system of record
2022
but must also be fast and scalable. This is a common requirement for mobile and web
2123
apps with a rapidly-growing number of users; the performance of the main database is fine at first
2224
but it will soon struggle to handle the increasing demand without a cache.
2325

24-
## When to use RDI
25-
26-
You should use RDI when:
27-
28-
- You must use a slow database as the system of record for the app.
29-
- The app must always *write* its data to the slow database.
30-
- You already intend to use Redis for the app cache.
31-
- The data changes frequently in small increments.
32-
- Your app can tolerate *eventual* consistency of data in the Redis cache.
33-
- RDI throughput during
34-
[full sync]({{< relref "/integrate/redis-data-integration/data-pipelines#pipeline-lifecycle" >}}) would not exceed 30K records per second and during
35-
[CDC]({{< relref "/integrate/redis-data-integration/data-pipelines#pipeline-lifecycle" >}})
36-
would not exceed 10K records per second.
37-
38-
## When not to use RDI
39-
40-
You should *not* use RDI when:
41-
42-
- You are migrating an existing data set into Redis only once.
43-
- Your app needs *immediate* cache consistency rather than *eventual* consistency.
44-
- The data is ingested from two replicas of Active-Active at the same time.
45-
- The app must *write* data to the Redis cache, which then updates the source database.
46-
- Your data set will only ever be small.
47-
- Your data is updated by some batch or ETL process with long and large transactions - RDI will fail
48-
processing these changes.
49-
50-
## Decision tree for using RDI
51-
52-
Use the decision tree below to determine whether RDI is a good fit for your architecture:
53-
54-
```decision-tree {id="when-to-use-rdi"}
55-
id: when-to-use-rdi
56-
scope: rdi
57-
rootQuestion: systemOfRecord
58-
questions:
59-
systemOfRecord:
60-
text: |
61-
Does your app require a disk-based database as the system of record?
62-
whyAsk: |
63-
RDI is designed to keep Redis in sync with a primary database. If you don't need a primary database, RDI is not necessary.
64-
answers:
65-
yes:
66-
value: "Yes"
67-
nextQuestion: writeLocation
68-
no:
69-
value: "No"
70-
outcome:
71-
label: "RDI is not necessary for your use case"
72-
id: notNecessary
73-
sentiment: "negative"
74-
writeLocation:
75-
text: |
76-
Does your app write data directly to the disk-based database?
77-
whyAsk: |
78-
RDI requires the primary database to be the system of record. If your app writes to Redis first, RDI won't work.
79-
answers:
80-
yes:
81-
value: "Yes"
82-
nextQuestion: consistency
83-
no:
84-
value: "No"
85-
outcome:
86-
label: "RDI won't work - your app must write to the primary database"
87-
id: wrongWritePattern
88-
sentiment: "negative"
89-
consistency:
90-
text: |
91-
Can your app tolerate eventual consistency in the Redis cache?
92-
whyAsk: |
93-
RDI provides eventual consistency, not immediate consistency. If your app needs real-time cache consistency, RDI is not suitable.
94-
answers:
95-
yes:
96-
value: "Yes"
97-
nextQuestion: throughput
98-
no:
99-
value: "No"
100-
outcome:
101-
label: "RDI is not suitable - you need immediate cache consistency"
102-
id: needsImmediate
103-
sentiment: "negative"
104-
throughput:
105-
text: |
106-
Will your throughput stay within RDI limits (≤30K records/sec during full sync, ≤10K records/sec during CDC)?
107-
whyAsk: |
108-
RDI has throughput limits. Exceeding these limits will cause processing failures and data loss.
109-
answers:
110-
yes:
111-
value: "Yes"
112-
nextQuestion: dataPattern
113-
no:
114-
value: "No"
115-
outcome:
116-
label: "RDI throughput limits will be exceeded"
117-
id: exceedsLimits
118-
sentiment: "negative"
119-
dataPattern:
120-
text: |
121-
Is your data updated frequently in small increments (not by batch/ETL with large transactions)?
122-
whyAsk: |
123-
RDI captures changes from the database transaction log. Large batch transactions or ETL processes can cause RDI to fail.
124-
answers:
125-
yes:
126-
value: "Yes"
127-
nextQuestion: dataSize
128-
no:
129-
value: "No"
130-
outcome:
131-
label: "RDI will fail with batch/ETL processes and large transactions"
132-
id: batchProcessing
133-
sentiment: "negative"
134-
dataSize:
135-
text: |
136-
Is your data set large enough to benefit from caching?
137-
whyAsk: |
138-
RDI adds operational complexity. If your data set is small, you may not need caching at all.
139-
answers:
140-
yes:
141-
value: "Yes"
142-
nextQuestion: dataSource
143-
no:
144-
value: "No"
145-
outcome:
146-
label: "RDI is not necessary - your data set is too small"
147-
id: tooSmall
148-
sentiment: "negative"
149-
dataSource:
150-
text: |
151-
Is your data ingested from a single source (not from two Active-Active replicas simultaneously)?
152-
whyAsk: |
153-
RDI cannot handle data ingested from two Active-Active replicas at the same time, as this creates conflicting change events.
154-
answers:
155-
yes:
156-
value: "Yes"
157-
outcome:
158-
label: "✅ RDI is a good fit for your use case"
159-
id: goodFit
160-
sentiment: "positive"
161-
no:
162-
value: "No"
163-
outcome:
164-
label: "RDI won't work with Active-Active replicas"
165-
id: activeActive
166-
sentiment: "negative"
167-
```
168-
169-
26+
{{< embed-md "rdi-when-to-use.md" >}}

0 commit comments

Comments
 (0)