1 Reply Latest reply on Jan 17, 2011 11:01 AM by Randall Hauch

    How does ModeShape compare with Teiid?

    Ittay Dror Newbie

      Is ModeShape an implementation of JCR over Teiid? Does it implement data virtualization in parallel to Teiid? Someting else?


      Thank you


        • 1. How does ModeShape compare with Teiid?
          Randall Hauch Master

          No, ModeShape is a JCR implementation that has no relationship to Teiid. Well, that's not completely true, because there are some ways that ModeShape can work with a Teiid instance (see below).


          ModeShape and Teiid both federation information, but they do it in very different ways using very different technology.


          To client applications, a Teiid VDB looks like a relational database (accessible via JDBC, ODBC, and even data services), but this database is "virtual" because the data doesn't exist in this form. Whenever the client issues a statement, Teiid figures out which how to execute that statement by pushing down statements to the data sources that really have the data. In fact, Teiid excels at making multiple disparate data sources look to client applications like a single, unified, integrated database, with surprisingly little overhead. At its core, Teiid does all this integration using a relational query engine (this is why Teiid is so blazingly fast), and it has connectors that translate and adapt the relationally-oriented query plans to store-specific forms. (For all the details on Teiid, look at their Reference Guide.)


          At the very highest levels, this may sound similar to what ModeShape. ModeShape also has connectors, but our connector framework is very different than Teiids, and the connectors are not compatible. ModeShape uses these connectors to access all its content, includes several connectors out-of-the-box, and can even federate content from multiple sources. But that's really where the similarities start to fade away.


          Content in ModeShape is organized hiearchically and allows references; in other words, it's graph-oriented not relationally-oriented. ModeShape (via JCR) doesn't constrain your information to a static schema like relational databases (and Teiid) do, so your information can evolve and adapt to changing needs. And ModeShape uses JCR for it's primary API, though we have developed a JDBC driver for ModeShape that makes it possible to connect to a workspace in a ModeShape repository and issue JCR-SQL2 queries and view the results using the JDBC API.


          So ModeShape and Teiid are independent projects that are not typically used together nor depend on each other. But, as they are both JBoss.org projects, there are two ways in which ModeShape and Teiid can be integrated:


          1. Teiid models and VDB files can be uploaded into a ModeShape repository, and the semantic structure of those files will be sequenced and extracted into the repository. ModeShape does via its Teiid relational model sequencer and its Teiid VDB file sequencer.
          2. Teiid contains a connector to ModeShape. It's basically a specialization of Teiid's basic relational translator, because it simply exposes some of the non-standard functions and dialect nuances defined by the JCR-SQL2 grammar. If ModeShape and Teiid are deployed to the same JBoss AS instance (see the ModeShape kit for JBoss AS), then Teiid can query the content of a ModeShape repository. To do this, you use the Teiid Designer to import a relational model from ModeShape (using Teiid Designer's JDBC import wizard), create a virtual database with that model (and any other physical and virtual models), and deploy the VDB to Teiid.


          ModeShape and Teiid are both being included in the upcoming 5.1 release of the SOA-P JBoss platform, and will be integrated as I describe above.


          I hope this helps.