Very good explanation. There may be some elements in this that could be added to the website.

I am just getting started and am pretty excited about the possibility of using Calcite in our ADTransform package. ADTransform has a pretty big footprint in it current state due to some pretty powerful libraries such as JasperReports that are pretty big.

After I asked the question, I had to dig a bit deeper to get the CSV Adapter demo running and got a bit of a picture about the jar files that exist.

I should have looked at the Maven Central repo to see that I can in fact get the core as a separate dependency even if the sources are in a single git project.

I am sorry for putting your through such a long bit of writing but it is very helpful in looking forward.

I have the suspicion that I would have saved a lot of grief and ode writing had I known about Calcite 4 years ago.
I have been using SQL (Oracle and MySQL) since 1982 and am a big fan.

I think that a lot of the plug-ins that we wrote to add functionality to ADTransform will be made obsolete by a plugin that accepts SQL statements instead of a string of parameters.

I may have some questions and issues relating to our audit trail and our error log. For example, we identify individual records that fail a transformation or validation.
"Uniqueness test failed on row 270 key "abc" is a  duplicate of record 185."
In row 200 "manager" rwheeler not found in "int_person".
These things are not something SQL is very good at reporting.

I am sure that I will have lots of questions if I write an adapter. Having never worked on the internals of ORACLE or MySQL, I am finding that the JavaDocs are a bit daunting at times and include concepts that I have never thought about.

Thanks for your response.

Ron

On 25/01/2016 5:16 PM, Julian Hyde wrote:
Ron,

I’ll attempt to answer but I might have misunderstood your use case. So if I am 
off the mark, please describe the architecture you want in more detail.

Let’s suppose you have a NoSQL database X and your application wants to speak 
SQL to it. You would include three Calcite modules: core, avatica, and the 
module for database X. The adapter for each database tends to be in a separate 
module (mongodb, spark, splunk, csv). JDBC is in core, but doesn’t bring in any 
dependencies.

Core doesn’t contain dependencies on third-party systems. It does depend on 
things needed by the core functionality, for example Jackson, because we want 
people to be able to write their models in JSON.

Reading pom.xml, the runtime dependencies of core are as follows:
* calcite-apatica
   * protobuf
   * jackson
* calcite-linq4j
* commons-dbcp
* findbugs-jsr305
* guava
* eigenbase-properties
* janino
* pentaho-aggdesigner-algorithm

I don’t think any of those has significant downstream dependencies.

I’m very happy to have a discussion of what should be in core, and what its 
dependencies should be. There’s no “perfect” decomposition of a project into 
modules, but we can get a little nearer to perfection if we listen to how 
people (such as you) are deploying the project in the real world.

After all that, if core is too heavyweight, then maybe you want *remote* 
Calcite rather than *embedded* Calcite. On your client you can include JUST 
avatica. On your server you would run avatica-server and include avatica and 
core and anything else you desire. Avatica has extremely low dependencies - you 
need either Jackson or Protobuf (depending on how you are encoding the RPCs). 
We didn’t even include Guava, even though we lean heavily on it elsewhere in 
Calcite.

Julian

On Jan 24, 2016, at 7:18 PM, Ron Wheeler <[email protected]> wrote:

In the "marketing" videos, Calcite seems to be based on the idea that the whole 
question of database access can be best solved by a modular approach.
I was surprised to see a lot of storage layer stuff mixed in with the core.

I want to add an adapter and incorporate this into an application that has its 
own database abstraction which currently supports Jackrabbit with an in-memory 
configuration.
I can not afford to add a whole bunch of code and third party libraries that 
are not essential.

Is there a plan to produce a lightweight core package that is suitable for use 
with an adapter?

Ron

--
Ron Wheeler
President
Artifact Software Inc
email: [email protected]
skype: ronaldmwheeler
phone: 866-970-2435, ext 102




--
Ron Wheeler
President
Artifact Software Inc
email: [email protected]
skype: ronaldmwheeler
phone: 866-970-2435, ext 102

Reply via email to