Shared data architectures

From: Drew (X3N0PH0N) 8 Sep 2012 18:19
To: Rowan 13 of 20
But no, what I meant about Wave is that it is was a framework for making apps and the framework has conflict/concurrency stuff built in.

Googling for alternatives lead me to: http://en.wikipedia.org/wiki/Operational_transformation
From: Rowan 8 Sep 2012 23:00
To: Drew (X3N0PH0N) 14 of 20

Sure they have! Obvious examples are IM clients, but that sort of stuff is everywhere now (e.g. presence stuff in Steam). Even Explorer will magically update itself if you're viewing a remote folder whose content changes.

 

Ta for the OT link - already had it open in a browser for later reading.

From: Peter (BOUGHTONP) 8 Sep 2012 23:58
To: Rowan 15 of 20
IM clients aren't really collaboration, are they?


Why is your situation hypothetical?
From: Rowan 9 Sep 2012 08:47
To: Peter (BOUGHTONP) 16 of 20

I've not used the word collaboration (as I suspect it has some specific technical meaning). IM clients do have shared/synchronised state, though - the presence data is a better example than the actually chat, as it's not append-only. Consider a user logged in to the same account on multiple clients and they change their name on one; all the clients can change that state, and as soon as one does, the change propagates to the others.

 

I don't understand how to answer your second question. I have no actual need to solve this problem, I'm merely interested.

From: Rowan 9 Sep 2012 08:58
To: Drew (X3N0PH0N) 17 of 20

Okay, so that operation transformation thing looks like it's just a jargon-heavy way of consistently serialising the kind of commands I suggested in my first post.

 

I guess that's just the way everyone tackles this sort of thing, 'cos it's simpler, and there's no real reason not to at this scale. Ho hum.

From: CHYRON (DSMITHHFX) 9 Sep 2012 12:26
To: Rowan 18 of 20
I was thinking about this last night, and two, probably irrelevant buzzwords popped into my head: cloud, and cluster.
From: DSLPete (THE_TGG)13 Sep 2012 23:10
To: Rowan 19 of 20

Along the lines of AMQP, take a look at www.rabbitmq.com It's a doddle to set up, lightning quick (we regularly run at ~80,000 messages/sec between Europe and the US over the public internet), will run in RAM or on disk and supports quite a few message distribution models, including allowing an ad-hoc number of consumers to connect and receive messages - so each client would just register its own queue update consumer when it was fired up, and when an update is made in a client it could be published out to all.

 

It's worth doing the 6 tutorials so you can see just what it can do - a solution may present itself to you.

From: Rowan14 Sep 2012 08:20
To: DSLPete (THE_TGG) 20 of 20
Yeah, I've looked at RabbitMQ in the past (and I suspect it's much nicer than Apache's ActiveMQ which is the only AMQP thingum I've used). It has a nice site of friendly client-side libraries, too, for various languages, so it'd probably be what I'd plump for if I went that route.

It only takes care of the messaging part, though; I feel like there should be something out there that builds a layer on top of this and automagically syncs data. Nothing quite seems to fit the bill, though.