I'm having a hard time finding the sqlite branch referenced here (source):
But lesser known is that there is a branch of SQLite that has page locking, which enables for fantastic concurrent write performance.
Which one is it, and why is it so underrated? I don't see any obvious candidates on https://www.sqlite.org/src/brlist
If you somehow suffer a split-LAN event, how do you determine which is the official and which the split, and how can you remerge them?
The way we solve this is to configure every node to know every other node -- this way everyone knows how big the cluster is, and knows if it's able to talk with more than half of it. If a node can't talk with more than half of the cluster, then it will refuse to "stand up" to be the leader.
Would bedrock be suitable for synchronizing a large number of instances? say 100-200, where the DB is quite simple however (low traffic and amount of data)
I haven't tried that many, but I can't think of any reason why this wouldn't work. The one complication is, as mentioned above, the design requires that every node know every other node ahead of time -- new nodes currently can't be added or removed without restarting the cluster.
Is Bedrock different than RQLite in some important feature? The plugins like cache and job queue are valuable, for instance.
Honestly I don't know much about RQLite, sorry!
I am trying to compile Bedrock on Mac OSX, and I get the following error: libstuff/libstuff.h:44:59: fatal error: pcrecpp.h: No such file or directory
make: * No rule to make target
.build/main.d', needed by.build/main.o'. Stop.
brewis always breaking, and I feel like I need to reinstall my entire OS whenever anything breaks.
DBplugin to make leaders just refuse writes escalated from permanent followers.
Permafollower, such as shown here: https://github.com/Expensify/Bedrock/blob/cf2c36027f569df277d3f97ea08ff8a917ad014a/sqlitecluster/SQLiteNode.cpp#L370
DB.cppto a new file
/plugins-- that'll ensure it just compiles easy. Later when you have proven it out, you'll likely want to move your
SecureDB.cppplugin into your own private repo, but I'd suggest skipping that to start.
SecureDBplugin, launch Bedrock with the
-plugins SecureDBparameter to enable it (and notably, don't enable
DB, as that doesn't have the security check you want)