Skip to main content

Teiid Runtimes Explained


If you have been following Teiid lately we have been going through a whole lot of renovations. Yes, renovations or reorganization or refactoring or whatever you want to call it. Basically, we are making Teiid more modular with fewer dependencies that can be used by however your use case dictates rather than use it as one monolith application deployed into WildFly JEE Application Server. There is nothing wrong in using Teiid as server model, but with the proliferation of container-based workloads and cloud-based architectures, the previous server-based model does not work or simply won't scale. So, we needed to think of alternatives, thus Teiid team introduced a couple different versions modular Teiid what we are calling as "Teiid Runtimes".

Note that in these modular Teiid runtimes, not all the features you were used to using in Teiid Server model may not be there but you will have extensions to add in those that are most appropriate for your domain. If you are looking for a data virtualization system in any configuration, one of below should satisfy your needs.

Now that we know what Teiid is up to, what are different flavors of these Runtimes? Basically, we have four different varieties.

  1. Teiid Server with WildFly (legacy model)
  2. Teiid Embedded
  3. Teiid Spring Boot
  4. Teiid Thorntail

Teiid Server on WildFly

This is the legacy runtime that Teiid team has been supporting for a while, the support for this will be continuing to new versions of WildFly. Currently, with the release of Teiid 12.0, the WildFly support is at WildFly 14.  Going forward there will be a separate repo for the WildFly based deployments that is different from current Teiid git repo. This repository will contain only code that is specific to WildFly. To use this version one needs to be little knowledgable in WildFly server, but typically no Java experience is needed but recommended.  If you want you can build Docker images based on this as a Server just like say MySQL or PostgreSQL image.

Teiid Embedded

I would call this and rest of other runtimes below as "frameworks" where they do not provide a fully functioning system, but Teiid provides the essential APIs and hooks to design your own system with ease. Teiid Embedded is the plainest version of all, where you have a whole lot of autonomy to design to your use case and embed Teiid in your own JVM. There are plenty of examples to you started. When using this Java experience is required. This is ideal for anyone wanting to embed in their own project/product in OEM fashion.

Teiid Spring Boot

It is no secret that Spring Boot most popular among Java developers. This runtime uses Spring Boot and Teiid Embedded to bring Data Virtualization features for Java developer in a way that they are already familiar to them. For example, it is as simple as using JPA framework. This one is my current favorite, as this supports legacy VDB file based deployments and also JPA based view definitions where explicit VDB does not need to be defined. It also has a feature called "redirection", where it can make it possible to use production data for testing without modifying it. If you are Spring Boot developer there is not much more you need to learn as most of the Data Virtualization will be instrumented in by using a set of annotations. This would be an ideal framework to use if you are thinking of using Teiid in Microservices architecture. If you are looking into container-based deployments and cloud architectures this is an ideal platform. The examples will show how to deploy into OpenShift or Kubernetes using fabric8-maven-plugin.

There is limited support for different sources currently we only support relational sources, excel, REST. But this support will be expanding.


Teiid Thorntail

Thorntail is a Microprofile based Java framework that is designed for Java-based Microservices using standards-based technologies. Thorntail was previously named "WildFly Swarm".  Since this Thorntail 2.x technology was mostly based on WildFly there good support for most of the features that were available in Teiid Server. We will continue to support 2.x Thorntail.  If you want a system close to WildFly technology but in embedded Microservice style application then choose this version. this version is also good for using as container-based workloads for cloud environments. This supports similar features as spring boot in this area.

When Thorntail 4.x rolls around we have to reevaluate the support there as that is assumed to be vastly different from Thorntail 2.x, and we expect that would be a complete rewrite.


What about UI?

As you probably noticed the pace of Teiid Designer releases stopped, as we are not putting in any more work into eclipse based tooling. The existing Teiid Designer should be still valid to use in the design of your VDBs if you prefer as they VDB you build will be deployable in any of the above Teiid Runtimes. However, Teiid Runtimes also support dynamic VDBs that one can build by hand or programmatically.

We are also collaborating/integrating Teiid technology with Syndesis community, there you will see a UI to build and deploy Teiid based runtime. More on this later in future blogs.


Let us know your opinion as we shape Teiid for future workloads while supporting the legacy.

Ramesh..

Comments

Popular posts from this blog

Teiid 8.11 Beta1 and 8.10.1 Released

Teiid 8.11 Beta1 is now available from the  downloads  and maven.  Feature highlights since Alpha2 include: TEIID-3434 More caching control over ttls in the result set cache down to the schema/table level. TEIID-3412 MS Access support via the UCanAccess driver. The UCanAccess support is necessary for those running on Java 1.8 as the JDBC ODBC bridge has been removed from the JRE. The waiting continues on EAP 6.4 Alpha1 - it still should be available shortly and should be the platform target for Teiid 8.11 Beta2. Of course, let us know if you find any issues with these early releases.  There's still plenty of time to get fixes into the final release. Teiid 8.10.1 is also available.  It addresses 5 important issues discovered since 8.10 was released: [ TEIID-3409 ] - PostgreSQLExecutionFactory TranslatorProperty annotation in wrong place [ TEIID-3437 ] - Inconsistencies with row count handling [ TEIID-3438 ] - Null value returned from BlobImpl

Tech Tip: Teiid SQL Language MAKEDEP Hint Explained

In this article I will explain what a MAKEDEP hint is, how and when, why it should be used in Teiid. What: MAKEDEP is query hint.  When a query hint is defined in the SQL query it influences the Teiid query planner to optimize the query in a way that is driven by the user. MAKEDEP means "make this as a dependent join". What is a Dependent Join? For example if we have query like: SELECT * FROM X INNER JOIN Y ON X.PK = Y.FK Where the data for X, and Y are coming from two different sources like Oracle and WebService in Teiid, so in relational algebra you can represent above query as Here the result tuples from node X and node Y are being simultaneously fetched by Teiid query engine, then it joins the both the results inside Teiid engine based on the specified X.PK = Y.PK condition and returns the filtered resulted to the user. simple.. Now, what if, if X table has 5 rows and Y table has 100K rows? In order to do the JOIN naively Teiid need sto read all the 5

Teiid 8.13.3 Released

Teiid 8.13.3 is now  available .  In total 8.13.3 addresses 10 issues since 8.13.2: [ TEIID-4028 ] - adding salesforce-34 resource adapter does not work through the cli [ TEIID-4066 ] - Odata translator ClassNotFoundException: com.sun.ws.rs.ext.RuntimeDelegateImpl [ TEIID-4070 ] - Issues with resource adapters with api modules in wildfly [ TEIID-4089 ] - Teiid JDBC driver does not reset the update count when calling getMoreResults(int) [ TEIID-4093 ] - OData authentication fails with NPE when gss-pattern related properties are included in VDB [ TEIID-4096 ] - AssertionError with independent side of a dependent join that has an ordered limit [ TEIID-3050 ] - allow for more incremental insert with iterator [ TEIID-4075 ] - Netezza translator to support common table expressions [ TEIID-4098 ] - Always preserve columns order in google spreadsheets models [ TEIID-4046 ] - OData - $skip is beeing ignor