-
-
Notifications
You must be signed in to change notification settings - Fork 16
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
replication #50
Comments
Merge strategy will need to use difference engine based on date time stamps between client and server as well as server to server. Same merge strategy makes sense because its peer to peer based. NOT master only. Peer to peer multi master. The topology is client to server, server to server and maybe client to client. I say maybe because i doubt that ONLY JavaScript running in a browser will work based for the various security implications, but it can certainly work with a replication token supplied from the server |
please avoid doing so many typos, your text is difficult to read |
ok fixed it up. sorry |
So for every datapoint of two merging bodies you accept the one with the newest timestamp. That's easy, that is exactly what scuttlebutt / crdt will do for you. Or do you have any special requirements to the underlying datastructure? |
Yes this is true. I take the latest. i also have to store images for the CAD materials do you know if scuttle butt works client side on top of index db ? server to server replication data level security |
sweet, this is super cool! I have also been thinking about a cad system. I've built a few boats, And so it's basically inevitable that one day i'll need to write my own boat design software, then use it to design a boat. So, you are basically gonna need Vector data, correct? There isn't any scuttlebutt for vector data yet, but there certainly could be. I also have not yet implemented a scuttlebutt that has roll-back/checkout/undo - but it would basically be a matter of what kind of data structures are you planning? I am very happy to help figure out something that will work well with replication! see also https://github.com/dominictarr/snob <- this uses a more git-like architecture, which may suit your application, |
hey Dom, this s great news. i should also mention that we are a non profit in Germany. Our main thing is Biomimicry. For me this all came about because i wanted to make building easier and to be abe to actually build generative houses. So the CAD system is generative as well "traditional drawing". As far as data structures. Yes its vector, but also need to hold binary images too. All needs to be part of the database. but Snob looks damn useful. CAD and version control are often lumped together in a not too nice marriage. Then there is CRDT So i wonder trying to work out if SNOB or CRDT is the best one ? |
@gedw99 can you provide some real json as an example, I wonder how the data model looks. Your project sounds interesting, is it opensource? website? |
@gedw99 sorry for the late response! CRDT and SNOB have different use-cases, CRDT is designed for the case where you don't need the full history, although it would be possible to add backtracking - I have considered this, I just havn't had a usecase for it yet. SNOB is the same architecture as git, with branches and merges and that stuff, only you have pluggable diff tools instead of only handling text. If you can write a I started with snob, but the realized that most applications where much simpler, and wrote crdt and scuttlebutt. What do you mean by generative? |
thanks Dom for the explanation SNOB sounds good, but i doubt i can do real time updates of 2 users looking Do a goolge image search of "generative architecture" and you will see what On 23 February 2013 00:24, Dominic Tarr notifications@github.com wrote:
Contact details: |
@gedw99 both snob and crdt are realtime! Aha, generative architecture is what the name suggests! This is really cool! The tricky part in data replication is handling the case where two users have updated the data concurrently. Snob and Crdt use two different approaches to merging these parallel versions. Hmm, it's probably easier to get started with crdt - hmmm, I think you could probably port something that works with crdt to snob. It all depends on what the data structure looks like. |
I will look into both. I have about 10 year experience programming. I know the patterns and I will use CRDT as the operational transformation and see how ti goes. t this stage we are working on the WebCL aspects for the CAD Kernel. These guys have really cracked it. do a video search for "Softkill Design" The apprahc they are taking is based on biomimciry. It will be very On 23 February 2013 02:21, Dominic Tarr notifications@github.com wrote:
Contact details: |
@gedw99 Okay, Great! I'm super-busy until monday, but after that I'll write up a wiki page about the differences between the replication approaches. |
thanks mate - I will look at it. Gerard On 23 February 2013 02:47, Dominic Tarr notifications@github.com wrote:
Contact details: |
I think you'll need a CRDT based approach since you need to handle specific operations. I've learned Operational Transformation a year ago, so in order to apply OT to a document editor you'll define:
There are two types of OT:
OT has the downfall that you need a server to handle the transactions, no peer-to-peer. I'm still researching CRDT. How complex is your data model? Anyway, biomimciry is awesome! |
thanks Eugen Ok, this pretty much aligns with what i have learnt too about OT patterns. There is a interesting group that have written a system that does OT P2P is not vital. Was just a nce to have. Authoritive Server can do the I built a sterolithographic printer last year and layered around with Right now i am playing around with light scribe machine and production of the great thing is that it also makes a great battery. Handy for anything G On 23 February 2013 03:01, Eugen Tudorancea notifications@github.comwrote:
Contact details: |
@gedw99: "I am building a 3D cad modelling system and tons of json data I need to
store on the servers in many data centers.
I run offline using indexdb and so need to also sync.
Originally I used pouchdb and couxhdb.
But I want to replace all of it with level dB."
The text was updated successfully, but these errors were encountered: