Hi,

Yes, currently H2 does not offer real scalability (no scalable writes or
reads) beyond one process. The current clustering feature is very limited.
I do think about adding sharding and replication (basically what MongoDB is
doing) on the storage level (MVStore). But this will take a while (not this
year, and I'm not sure about next year).

Regards,
Thomas





On Tue, Nov 12, 2013 at 4:48 PM, Adam McMahon <[email protected]> wrote:

> 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
>
>
>
> On Tuesday, November 12, 2013 8:39:55 AM UTC-5, Thomas Mueller wrote:
>
>> Hi,
>>
>> I'm afraid the current implementation does not support it. Of course this
>> could be changed, actually I guess it would be relatively easy to remove
>> the check.
>>
>> At some point I think it's better to re-implement clustering. But first
>> my priority is to work on the new storage engine (the MVStore), I plan to
>> use this mechanism as the base for the new clustering.
>>
>> Regards,
>> Thomas
>> Am 12.11.2013 02:40 schrieb "Adam McMahon" <[email protected]>:
>>
>>> H2 Group,
>>>
>>> I am checking out the clustering features of H2.  I know that the
>>> clustering features are fairly barebones.  I am  interested in
>>> using clusters/replication for increased performance, as opposed to simply
>>> having a failsafe DB online (which is also a good thing  :).
>>>
>>> In the past, using MySQL replication, I would send write queries to the
>>> master (which would eventually be propogated), and then I would load
>>> balance between the master/slaves for read queries.  I would do this at the
>>> application level by simply changing the JDBC url depending on if the SQL
>>> was a write or a read.  The slaves might be a little behind the master, but
>>> that was fine for many of my queries.
>>>
>>> I know that load balancing is not a built in feature to H2 clustering,
>>> but I figured I may be able to accomplish it at the application level using
>>> something like the above.  However, it seems that I am not able to do so,
>>> as client connections to an individual server with in a cluster are
>>> rejected.  I appears we can only connect to using the server list url.
>>>
>>> My question: is there any way to load balance reads across a slave?
>>>
>>> Thanks,  -Adam
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "H2 Database" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> To post to this group, send email to [email protected].
>>>
>>> Visit this group at http://groups.google.com/group/h2-database.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>  --
> You received this message because you are subscribed to the Google Groups
> "H2 Database" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/h2-database.
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to