-
Notifications
You must be signed in to change notification settings - Fork 1
Incremental Deserialization
Most approaches to serialization do not handle updates well, forcing you to deserialize an entire block and then reserialize it every time you make a small update. This is simply too slow when implementing a persistent store.
The answer is to deserialize only what you need, keep the serialized form of everything that was deserialized, and then reserialize only what was changed. For large blocks, the speed increase is quite significant. This was implemented in the jit package of AgileWiki5. But the problem with using the jit package is that queries should be able to share these structures but queries on jit structures are not threadsafe, as queries may deserialize more of the data.
The Incremental Deserialization project then begins with a rewrite of the AgileWiki5 jit package, this time using actors. Unfortunately the jit package did not adequately address the needs of an important use case--balanced trees (b-trees), as b-tree nodes were implemented over a TreeMap. And that meant that before any data could be accessed, all the keys had to be deserialized to built that TreeMap. Rather, we should build b-tree nodes over a list of key/value pairs and do binary searches. This will allow us to access and update data more quickly.
- Items
- Collections
- IncDesList