It isn't a problem having multiple readers. For SQL implementation and any other concurrent access there is class JournalPool (which should be renamed to JournalFactoryPool), which gives out JournalReaderFactory via get/release methods. It caches factories and readers to avoid opening/closing readers often. You can of course use normal JournalFactory to do the same if performance is not a concern.
This pooling is what I was thinking
The pooling can be done to abstract also
How abstract are you thinking?
Like in a DB
I don't think i understand. Do you mind giving me an example of how abstract pool should be?
A collection of tables
Which is also a table
You can have views fined as queries
And a DB which has many schemas
Under the hood they are a collection of pools, pools and journals
Ok, got it. This is down the line when there is "query service" either local or network. Browsing database content is definitely essential
This is a very useful idea, in fact my friend is doing very similar project for a bank. It is very useful to integrate legacy data sources under single query system. That said what i'm doing is slightly different. Calcite query system simply would not do for my project for three reasons: its query system does not offer functionality beyond what you get from individual databases, it looks more of an overlap between functionality of data sources it supports (check what kind of query functionality splunk provides vs. calcite). Pick a source file on calcite github and search for "new " operator usage, it is far too many for what i'm building. Third: name sounds strange (https://en.wikipedia.org/wiki/Calcite) what does it have to do with either querying or integration? ;)
may be one day somebody would honour my project by writing an adaptor for calcite? :smile:
Came back from holiday today :) I found that I need rewritable in-memory structure for some functions, as-of join being one. I'm writing and testing that. It'll prompt some exciting query capabilities once done.