-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feature: a set crdt from which members can be removed #58
Comments
Well, I'm not sure about ORSWOT, because this requires enumerating all the actors. I'm not sure how we should treat backend processes. But on the other hand, I'm pretty fine with expanding the set of CRDT's supported. Can you briefly describe your task, so we can see what fits it? Maybe classic OR-Set or something completely different. |
I don't have a single use-case in mind, I'm just not particularly thrilled with a data structure that grows without bound. On this front, PN counter isn't great either without some garbage collection mechanism. |
Yes, this bothers me too. In practice, however, we delete items as needed from the database, and keep them in swindon as long as user session is active (remove after some timeout after last user connection). This means it works if user sessions aren't indefinite, which is true for most browser-based sessions (swindon's main use case), and the potential set of items isn't indefinite. On the other hand, If we have OR-Set for the same use-case we would need to keep exact same number of items in memory for tombstones (along with id's, so memory usage would actually be larger). I'm not familiar with ORSWOT, all I know about it from 5-min googling. I have to investigate it more, if you see how it can be used in swindon's case your help is appreciated. And yet another note: for many use cases (such as when actual data is backed by a DB) you can just version your data and push version via swindon. This solves about 80% of use cases and doesn't have any memory leak problem. |
I'm going to go back and read some of the literature. I'm no expert in CRDTs myself, I just think this is a cool project that's got my attention :) |
Okay, so I've been back and looked at ORSWOTs in more detail. There are no tombstone nodes and they prune data so it's relative to data size not operations performed. The idea I was floating about was to have swindon maintain an ORSWOT of connected nodes for a given service, so that membership is resolved without the need of some external service (although I know what's not quite in line with your other projects). |
Oh, and someone's implemented it in rust |
Here is how I understand it:
In swindon, we have three kinds of agents:
So we risk unbounded grow of agent number which might easily be larger than the actual set.
Well, another thing is that swindon doesn't have any persistency. It even actively prunes data from memory which is unused by currently connected users. So I'm not sure we're on the same page here.
I'm not sure, what do you mean? |
an ORSWOT, maybe?
The text was updated successfully, but these errors were encountered: