I'd be inclined to have a connection pool per session. Then create and
destroy the connection pool. That way it will manage connections however
you want to use them and you don't have to keep a control connection
open on the database.
But there are so many ways to do it!. It always confuses me which is the
"best" one :)
Ryan
On 3/07/2015 3:27 PM, Basil Bourque wrote:
Regarding Vaadin, the "Application" class/idea was one of the major
changes in Vaadin 7 from Vaadin 6. That class/idea are gone. Now we
have the much more flexible "VaadinSession" that wraps a Servlet
session, and owns one or more instances of one or more "UI" classes.
Each "UI" instance is the entire content present in a web browser's
window/tab (or a Portlet <https://en.wikipedia.org/wiki/Portlet>). In
other words, your Vaadin app can have multiple open browser
window/tabs running simultaneously. I made a diagram
<http://i.stack.imgur.com/Qp1XB.png> of this architecture. This
Question <http://stackoverflow.com/q/21777067/642706> and this
Question
<http://stackoverflow.com/questions/15439761/how-to-put-data-in-session-variable-and-get-the-data-in-different-page-in-vaadin>
on StackOverflow may be useful, as well as the /Application Lifecycle/
chapter <https://vaadin.com/book/-/page/application.lifecycle.html> of
The Book Of Vaadin.
You could hold one reference/connection to H2 in the VaadinSession for
all the "UI" instances (all the open windows). Or each "UI" instance
could have its own H2 reference/connection. I don’t know enough about
H2 yet to know which is appropriate.
There are hooks for the creation & destruction
<https://vaadin.com/book/-/page/application.lifecycle.html#application.lifecycle.session.init>
of the VaadinSession, where I would be starting/stopping that user's
own H2 database.
On Wednesday, July 1, 2015 at 10:11:49 PM UTC-7, Kartweel wrote:
Yep no probs at all. You can have multiple databases open at the
same time and open and close them on different threads as you like.
You'll just need to do the appropriate connection handling linked
to the session open / close.
Scaling is going to depend on your application architecture too.
If you are horizontally scaling it isn't going to work with
embedded databases?. Or are you using TCP and having a h2 server
on a different server?
The downside I can think of is that you can't query all databases
for any non-user tasks. Have to update all schemas individually,
etc. So on each session start it is going to almost be like
starting a separate application.
Probably fits quite nicely with vaadin architecture. Just link it
to the Application start and end (Don't they call a session an
application?)
Ryan
On 2/07/2015 6:06 AM, Basil Bourque wrote:
Is it possible to start up and shut down multiple H2
<http://h2database.com/html/main.html> databases within a JVM?
My goal is to support multi-tenancy
<https://en.m.wikipedia.org/wiki/Multitenancy> by giving each
user/account their own database. Each account has very little
data. Data between the accounts is never accessed together,
compared, or grouped; each account is entirely separate from the
others. Each account is only accessed briefly once a day or a few
times a month. So there are few upsides to housing the data
together in a single database, and some serious downsides.
So my idea is that when a user logs in for a particular account,
that account’s database is loaded. When that user logs out, or
their web app session (Vaadin <https://www.vaadin.com/> app)
times out, that account’s database is closed, it's data flushed
to storage, and possibly a backup performed. This opening and
closing would be happening for any number of databases in parallel.
Benefits include minimizing the amount of memory in use at any
one time for caching data and indexes, minimizing locking and
other contention, and allowing for smooth scaling.
I'm new to H2, so I'm not sure if its architecture can support
this. I'm asking for a denial or confirmation of this capability,
along with any tips or caveats.
----
Taken from my Question
<http://stackoverflow.com/q/31150193/642706> on StackOverflow.com.
--
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 h2-database...@googlegroups.com <javascript:>.
To post to this group, send email to h2-da...@googlegroups.com
<javascript:>.
Visit this group at http://groups.google.com/group/h2-database
<http://groups.google.com/group/h2-database>.
For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>.
--
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 h2-database+unsubscr...@googlegroups.com
<mailto:h2-database+unsubscr...@googlegroups.com>.
To post to this group, send email to h2-database@googlegroups.com
<mailto:h2-database@googlegroups.com>.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
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 h2-database+unsubscr...@googlegroups.com.
To post to this group, send email to h2-database@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.