Comments (3)
This is tricky. The actual state is a binary representation, e.g. see our Mongo implementation: https://github.com/y-crdt/ydotnet/blob/main/YDotNet.Server.MongoDB/DocumentEntity.cs
It is not readable and searchable. if you want that, you need another field and convert the document to JSON whenever you write it. There are a few methods for it: https://github.com/y-crdt/ydotnet/blob/main/YDotNet.Extensions/YDotNetExtensions.cs
If you have a single server I would keep the document in memory and evict it when it is not used anymore. This is what we do in the server project: https://github.com/y-crdt/ydotnet/blob/main/YDotNet.Server/Internal/DocumentCache.cs
If you have a workload with relatively few interactions (not a text editor), you can just load and store it for each request. Perhaps with optimistic concurrency and a few retries.
from ydotnet.
@SebastianStehle any reason why both MongoDB and Redis have an expiration date then? If they are the final persistence layers, than shouldn't they be persisted forever? Or do you expect the client to save it somewhere else?
Also, reading MongoDB implementation it seems like you are not really deleting the expired entities? Is the expiration stored there only as an example then?
from ydotnet.
MongoDB is doing the deletion for you (https://github.com/y-crdt/ydotnet/blob/main/YDotNet.Server.MongoDB/MongoDocumentStorage.cs#L30).
I have a use case, where the data is not stored forever, so I added it basically for myself.
from ydotnet.
Related Issues (20)
- NuGet handle HOT 3
- Fix Publish workflow HOT 1
- Integrate new method ytransaction_alive HOT 5
- Demo client project problems HOT 3
- Improve the README
- Update to .NET 8
- Fix unit tests
- WebSocket Client HOT 1
- Use `y-crdt/y-crdt` to build the Rust binaries
- Unable to load shared library 'yrs' or one of its dependencies. HOT 8
- Is there any way to use SignalR? HOT 5
- Support for Weak Types?
- Initial sync not working on latest version of the codebase. HOT 2
- v0.2.13 release? HOT 1
- Exception calling Get* on top level field without first defining it HOT 7
- YDotnet.Extensions: Exception converting Map to strongly typed model HOT 1
- Exception in Rust code bringing the entire dotnet server down HOT 5
- YDotNet stops persisting to storage after 1st invalidation HOT 36
- Update core bindings to Yrs v0.18 HOT 2
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 ydotnet.