Version 1

    Komodo - Proposed Connection Definition and Data Source object structure


    Below are some initial ideas for the structure of a 'Connection Definition' and 'Data Source' in Komodo - intended as starting point for further discussion...


    Connection Definition

    The 'Connection Definition' should contain all info needed to deploy a source dynamic VDB on a teiid server and generate the Data Source schema DDL.  So the required parts would be:

    1) JBossSourceDefinition ('Raw' properties)

        - Properties required to create the 'raw' JDBC or ResourceAdapter on the server.  The list of PropertyDefinitions for a source are defined by admin.getTemplatePropertyDefinitions(typeName)

       - Jndi name

    2) Translator

    3) Import Properties

        - Import properties for the selected translator.  The list of PropertyDefinitions are defined by admin.getTranslatorPropertyDefinitions(translatorName, Admin.TranlatorPropertyType.IMPORT)


    Data Source

    A 'Data Source' is essentially the physical source model. The parts of a 'Data Source' would be:

    1) Connection Definition

       - The connection definition for the source (raw properties, translator, import properties).  This would be a reference(?) to a connection definition in users repo, or actual property values if exported

    2) Schema DDL

    3) Schema generation timestamp and user

    4) Jndi name

    Example Usage

    1) 'Connection Definition' could be shared, and would provide everything a user needs to create the same source on another server

    2) The 'Data Source' contains the schema DDL in addition to the connection definition.  The schema is essentially a 'snapshot' of the structure that was generated using the Connection Definition at a point in time.

    3) Data Source 'update' - the Data Source DDL would be regenerated using the contained ConnectionDefinition and the timestamp would be updated.

    4) The Data Source jndi could be checked to see if it were deployed.  If so, the source could be used in test queries.  If not it could just be used for modeling.