Thomas,
This sounds like a good plan, and I realize there is a strong priority for the MVStore.
When I look at the other major DBs: MySQL, Mongo, etc. They all seem to have a feature to allow replication for faster reads. While H2 may fit a different market than these other DBs, but it would be nice to have have replication performance boosts.
For my particular use case, I use H2 for rest/web services (similar to how many people use MySQL/Mongo). Here is my scalability flow/plan:
1) For for most services, I simply embed H2 in the web server - this works great, simple and super fast.
2) If the volume on the services gets too high and heaps sizes are too big, H2 is split to client/server mode on the same CPU
3) If the volume continues to increase, then H2 can be put on a dedicated server.
4) But what next? there is no way to scale higher via a cluster. Because of this fact, individuals may pick another DB (which is fine if H2 does not want to compete in this space).
Another potential problem of H2 scalability is that of large garabage collection pauses on large heap sizes. This is not a problem with H2, but a problem with Java in general. If someone has a dedicated H2 server and wants to scale higher, they may not get much more power by increasing H2's cache, as I imagine it will (like most Java apps) run into problems with large heap sizes. So, really H2 will likely cap its scalabilty on a commodity computer with about 4 GB of ram (if the user is concerned with having low latency for requests).
Cluster replication might just save the day here. When volume of requests or heap sizes get too big, replication can be used to scale horizontally. But then again, perhaps I am looking at H2 to do something that it is not intended to do, and where another DB may be a better fit, which is fine.
Thanks for your hard work on this great product.
-Adam