I looked at using turso embedded replicas for a realtime collaboration project and one downside was that each sync operation was fairly expensive. The minimum payload size is 4KB IIRC because it needs to sync the sqlite frame. Then they charge based on the number of sync operations so it wasn't a good fit for this particular use case.
I'm curious if the graft solution helps with this. The idea of just being able to ship a sqlite db to a mobile client that you can also mutate from a server is really powerful. I ended up basically building my own syncing engine to sync changes between clients and servers.
For now, Graft suffers from the same minimum payload size of 4KB. However, there are ways to eliminate that. I've filed an issue to resolve this in Graft (https://github.com/orbitinghail/graft/issues/35), thanks for the reminder!
As for the more general question though, by shipping pages you will often ship more data than the equivalent logical replication approach. This is a tradeoff you make for a much simpler approach to strong consistency on top of arbitrary data models.
I'd love to learn more about the approach you took with your sync engine! It's so fun how much energy is in the replication space right now!
Awesome book. I read the pre-release and it was a great deep dive into various topics that will help improve your search application. I highly recommend for anyone who is working with Elasticsearch (I think they also have a Solr appendix, but I was only interested in ES)!
This is not a Elasticsearch focused book. Rather, it is using ES as a tool in order to provide an concrete and practical walkthrough about how to achieve semantic relevancy in real world application. It is not concerning too much about the engineering side of ES, e.g. Master/Datanode or replication that kind of stuff, but more on the quality of text search.
As the author has put, you could use Solr but will still find this book relevant(sorry) to you.
I've only read this and the Definitive Guide to ES. "Relevant Search" is more focused on working through how to tune search results and understand why things are happening and how you can make them work in your favor. They work through a lot of great examples and go much deeper than anything else I've come across.
(author here) -- yeah we focus on relevance exclusively. Other topics like analytics, scale, devops, performance, data integration would be better handled by one of the pure Elasticsearch or Solr books (Solr in Action, ES in Action, ES the Definitive Guide).
I use Protobufs for my startup and it has saved us an incredible amount of time building out iOS, Android, and Web clients. With a small team, any time we can shave by not having to re-write the modeling layer in all of these languages is a big win. As the writer of the APIs, I publish the new Protobuf models/services and then can switch over and instantly start working with real objects in Swift or Java.
Coming from a larger startup, I've also experienced the pains of trying to maintain JSON objects between different services. Protobufs have some quirks, but I think its a great solution to get behind at any stage.
I'm curious if Google has a common envelope they send all service messages with. Ie. A common way of specifying pagination parameters, auth tokens etc. when sending protobuf messages between services. I've been using protobufs for my services and wrote a ServiceRequest object which has worked well. I was more just surprised about not being able to find much documentation on actual deployments as opposed to just simple tutorials.
solid list, I would also add that it is extremely useful (I would argue necessary) to use vagrant (http://www.vagrantup.com/) to manage your development environment.
I'm curious if the graft solution helps with this. The idea of just being able to ship a sqlite db to a mobile client that you can also mutate from a server is really powerful. I ended up basically building my own syncing engine to sync changes between clients and servers.