Comments (5)
@hpatro your question is very good. Perhaps I didn't express it clearly at the beginning, but I can explain it by answering your question.
The AOF file used during full synchronization does not rely on the appendonly
config. It simply means that we originally used RDB files as snapshots, but now we have replaced it with a new AOF format snapshot. We also need to fork the child process, which converts all data into a set of write commands in AOF format. This way, the migration tool receives a set of commands during the full synchronization phase, eliminating the need to parse RDB encoding and achieving version independence.
from valkey.
Hi @PingXie , I mean when the migration tools parsing RDB, they have two choices:
- for every key, send the value's whole payload via RESTORE command, thus it doesn't need to decode the different RDB format for each data type (hash/set/list etc.), but the payload may exceeds
proto-max-bulk-len
. - decode the RDB format of each different type of key value and convert it into commands. This way, although not limited by
proto-max-bulk-len
, the workload is significant.
from valkey.
@soloestoy I've not looked much into AOF, so my question might be very naive.
Wouldn't a user need to pay certain amount of performance penalty (would vary with appendfsync
config level) to keep AOF enabled and store the collection of commands whereas with the RDB methodology, libraries needs to stay on top of the updates in the RDB versions but there isn't performance penalty for regular command execution.
from valkey.
@soloestoy, I think it is a great idea to use a no-preamble AOF and I will definitely consider using it for the atomic slot migration work (#23).
such as the restore command's parameters not exceeding 500MB (due to proto-max-bulk-len limitation)
Curious. Do we use the RESP protocol on full sync today? Going through https://github.com/valkey-io/valkey/blob/unstable/src/rdb.c#L3031, my impression is that we don't. If so, are we still bound by proto-max-bulk-len
?
from valkey.
Got it. This is not about the full sync but the migration tool. That makes sense. I think another benefit of using no-preamble AOF in either the full sync or slot migration is that we can easily achieve the non-blocking behavior.
from valkey.
Related Issues (20)
- [NEW] Handle spamming of custom LUA error messages in the INFO ERRORSTATS section with continued tracking of non LUA errors stats HOT 9
- Introduce PR templates HOT 3
- Hoping for Valkey "Cluster" architecture option HOT 3
- [NEW] add a management-port HOT 13
- [BUG] - Coverage target fails to build because of failing test HOT 4
- [NEW] Add eol data to endoflife.date HOT 2
- [NEW] Add keyspace_hit_ratio metric in info stats
- [Feature-Request]: Cross-Slot Command Execution in ValKey Cluster HOT 2
- [NEW] Support for Active/Active replication HOT 6
- [NEW] Compacting the output of topology commands for for fragmented clusters HOT 1
- Revert mmap_rnd bits back to default value
- [NEW] Support different bind addresses for plain TCP and TLS port
- Deprecate MacOS 11 build target
- New MPUBLISH command to publish multiple messages. HOT 5
- Replace CentOS 7 image with CentOS Stream 9 HOT 1
- Handling edge cases on connSet(Read/Write)Handler
- Validate format of YAML files HOT 2
- [Improvement][Cluster Mode] Remove Unowned Keys After Loading Persistence Files At Server Startup HOT 2
- [NEW] Limit maximum size on disk of AOF files. Avoid disk full, long load times.
- [BUG] Inaccurate total_active_defrag_time calculation?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from valkey.