May 7, 2007 1
MetaQuestMetaQuest™
Confidential
ODBC
• 2.0.0 Features
• What is ODBC?
• Why Create an ODBC Driver for Rochade?
• How do we Expose Rochade as Relational
• Transformation of Oracle RIM to Relational
Overview
May 7, 2007 2
MetaQuestMetaQuest™
Confidential
ODBC
Client Server architecture. Server runs on Linux, Unix or Windows – the same platforms as the
Rochade Server. Push the SQL query workload onto the server where it belongs.
Data sources are defined at the Server level so all ODBC or JDBC clients use the same configuration.
ODBC client runs on Linux, Unix or Windows. JDBC client runs Linux, Unix or Windows. Now you can easily code
Java programs and use JDBC to retrieve your Rochade metadata. Create your entire Rochade Application using SQL if you prefer.
2.0.0 Features
May 7, 2007 3
MetaQuestMetaQuest™
Confidential
ODBC
Integration with WebAccess Discovery Create discovery topic with MQ ODBC topic template. Customize the result set for your needs.
Administration Console. Allows the administrator to manage the server remotely via a Windows
GUI. Allows the administrator to remotely configure the server.
2.0.0 Features
May 7, 2007 4
MetaQuestMetaQuest™
Confidential
ODBCWhat is ODBC?
Definition:
(pronounced as separate letters) Short for Open DataBase Connectivity, a standard database access method developed by the SQL Access group in 1992. The goal of ODBC is to make it possible to access any data from any application, regardless of which database management system (DBMS) is handling the data. ODBC manages this by inserting a middle layer, called a database driver , between an application and the DBMS. The purpose of this layer is to translate the application's data queries into commands that the DBMS understands. For this to work, both the application and the DBMS must be ODBC-compliant -- that is, the application must be capable of issuing ODBC commands and the DBMS must be capable of responding to them. Since version 2.0, the standard supports SAG SQL.
http://www.webopedia.com/TERM/O/ODBC.html
May 7, 2007 5
MetaQuestMetaQuest™
Confidential
ODBCWhat is ODBC?
ODBC Interface
MS Access MS Excel Other tools…
Oracle ODBCDriver
UDB ODBCDriver
MQ ODBCDriver
Oracle Server/Database
UDB Server/Database
Rochade Server/Database
User can use any ODBC compliant tool…
To access any ODBC data source…
Via an ODBC Driver
May 7, 2007 6
MetaQuestMetaQuest™
Confidential
ODBC
Rochade Metadata is stored in a Rochade database: Based on proprietary indexed flat files Query language is proprietary and difficult to understand Query language must be invoked via programming interface. Query language doesn’t allow for join and predicate processing at the
same time. Query language doesn’t allow formatting of the result set.
Why Create an ODBC Driver for Rochade?
May 7, 2007 7
MetaQuestMetaQuest™
Confidential
ODBC
Open Rochade Metadata to Many Reporting Tools. Various BI tools have MS Access MS Excel Crystal Reports Many more…
Why Create an ODBC Driver for Rochade?
May 7, 2007 8
MetaQuestMetaQuest™
Confidential
ODBC
Open Rochade Metadata to SQL. Join linked or namespaced items together and display item attribute
information. Filter queries based on complex SQL predicates. Select attributes to display in the result set Sort based on any column in the result set All standard SQL is available.
Why Create an ODBC Driver for Rochade?
May 7, 2007 9
MetaQuestMetaQuest™
Confidential
ODBCHow do we Expose Rochade as Relational
Item Types – Exposed as Tables. Text Attributes – Exposed as columns. Value Attributes – Exposed as columns. Binary Attributes – Don’t have solution yet. Namespace Attributes – This is a 1 to many connection in
Rochade, so it’s exposed as a column in the child table that points at the parent.
Link Attributes – This is a many to many connection in Rochade, so it’s exposed as an intersection table.
Item Name – Exposed as “<item-name>” column.
May 7, 2007 10
MetaQuestMetaQuest™
Confidential
ODBCHow do we Expose Rochade as Relational
Qualified Name – Exposed as “<Item-QName>” column. Last Update Date and Time – Exposed as “<Item-Last-
Update-TS>”. Last Update User – Exposed as “<Item-Last-Update-
User>”. Create Date and Time – Exposed as “<Item-Create-TS>”. Create User – Exposed as “<Item-Create-User>”. Link Qualifier – Exposed as “<Link-Qualifier>” in the
intersection table.
May 7, 2007 11
MetaQuestMetaQuest™
Confidential
ODBC
Link
Namespace
Legend
ORA_DATABASE
ORA_COLUMN
ORA_TABLE ORA_INDEX
ORA_USER
Transformation of Oracle RIM to Relational
Start with one portion of the Oracle RIM.
Pick item types that have link and namespace attributes.
Pick some of the attributes.
May 7, 2007 12
MetaQuestMetaQuest™
Confidential
ODBC
Link
Namespace
Legend
ORA_DATABASE
ORA_COLUMN
ORA_TABLE ORA_INDEX
ORA_USER
Transformation of Oracle RIM to Relational
ORA_DATABASE DEFINITION (text) DESCRIPTION (text) ORA_HAS-SCHEMA (namespace)
May 7, 2007 13
MetaQuestMetaQuest™
Confidential
ODBC
Link
Namespace
Legend
ORA_DATABASE
ORA_COLUMN
ORA_TABLE ORA_INDEX
ORA_USER
Transformation of Oracle RIM to Relational
ORA_USER DEFINITION (text) DESCRIPTION (text) ORA_HAS-TABLE (namespace) ORA_HAS-INDEX (namespace)
May 7, 2007 14
MetaQuestMetaQuest™
Confidential
ODBC
Link
Namespace
Legend
ORA_DATABASE
ORA_COLUMN
ORA_TABLE ORA_INDEX
ORA_USER
Transformation of Oracle RIM to Relational
ORA_TABLE DEFINITION (text) COMMENT (text) ORA_INDEX (link) ORA_HAS-COLUMN (namespace)
May 7, 2007 15
MetaQuestMetaQuest™
Confidential
ODBC
Link
Namespace
Legend
ORA_DATABASE
ORA_COLUMN
ORA_TABLE ORA_INDEX
ORA_USER
Transformation of Oracle RIM to Relational
ORA_INDEX DEFINITION (text) COMMENT (text) ORA_UNIQUE (text) ORA_USES-COLUMN (link)
May 7, 2007 16
MetaQuestMetaQuest™
Confidential
ODBC
Link
Namespace
Legend
ORA_DATABASE
ORA_COLUMN
ORA_TABLE ORA_INDEX
ORA_USER
Transformation of Oracle RIM to Relational
ORA_COLUMN DEFINITION (text) DESCRIPTION (text) ORA_DATATYPE (text) ORA_NULLS-ALLOWED (text)
May 7, 2007 17
MetaQuestMetaQuest™
Confidential
ODBCTransformation of Oracle RIM to Relational
ORA_COLUMN DEFINITION (text) DESCRIPTION (text) ORA_DATATYPE (text) ORA_NULLS-ALLOWED (text)
Table Name: ORA_COLUMN
<ITEM-NAME> <ITEM-ID> <PARENT~ORA_TABLE> DEFINITION DESCRIPTION ORA_NULLS-ALLOWEDORA_DATATYPE
Standard derived column names
derived column name to support namespace
May 7, 2007 18
MetaQuestMetaQuest™
Confidential
ODBC
Link
Namespace
Legend
ORA_DATABASE
ORA_COLUMN
ORA_TABLE ORA_INDEX
ORA_USER
Transformation of Oracle RIM to Relational
ORA_DATABASE
1 to Many
1 to 1
Legend
Create table with same name.
May 7, 2007 19
MetaQuestMetaQuest™
Confidential
ODBC
Link
Namespace
Legend
ORA_DATABASE
ORA_COLUMN
ORA_TABLE ORA_INDEX
ORA_USER
Transformation of Oracle RIM to Relational
ORA_DATABASE
1 to Many
1 to 1
Legend
ORA_USER Create table with same name and also add <PARENT~ORA_DATABASE> column.
May 7, 2007 20
MetaQuestMetaQuest™
Confidential
ODBC
Link
Namespace
Legend
ORA_DATABASE
ORA_COLUMN
ORA_TABLE ORA_INDEX
ORA_USER
Transformation of Oracle RIM to Relational
ORA_DATABASE
1 to Many
1 to 1
Legend
ORA_USER
ORA_TABLE <JOIN~ORA_TABLE~ORA_INDEX
~ORA_INDEX>
Create table with same name and also add <PARENT~ORA_USER> column.
May 7, 2007 21
MetaQuestMetaQuest™
Confidential
ODBC
Link
Namespace
Legend
ORA_DATABASE
ORA_COLUMN
ORA_TABLE ORA_INDEX
ORA_USER
Transformation of Oracle RIM to Relational
ORA_DATABASE
1 to Many
1 to 1
Legend
ORA_USER
ORA_TABLE <JOIN~ORA_TABLE~ORA_INDEX
~ORA_INDEX>
Since there’s a link attribute, create
intersection table.
May 7, 2007 22
MetaQuestMetaQuest™
Confidential
ODBC
Link
Namespace
Legend
ORA_DATABASE
ORA_COLUMN
ORA_TABLE ORA_INDEX
ORA_USER
Transformation of Oracle RIM to Relational
ORA_DATABASE
1 to Many
1 to 1
Legend
ORA_USER
ORA_TABLE <JOIN~ORA_TABLE~ORA_INDEX
~ORA_INDEX>
Create table with same name and also add
<PARENT~ORA_USER> column.
ORA_INDEX
<JOIN~ORA_INDEX~ORA_USES-COLUMN
~ORA_COLUMN>
May 7, 2007 23
MetaQuestMetaQuest™
Confidential
ODBC
Link
Namespace
Legend
ORA_DATABASE
ORA_COLUMN
ORA_TABLE ORA_INDEX
ORA_USER
Transformation of Oracle RIM to Relational
ORA_DATABASE
1 to Many
1 to 1
Legend
ORA_USER
ORA_TABLE <JOIN~ORA_TABLE~ORA_INDEX
~ORA_INDEX>
ORA_INDEX
<JOIN~ORA_INDEX~ORA_USES-COLUMN
~ORA_COLUMN>
Since there’s a link attribute, create intersection table.
May 7, 2007 24
MetaQuestMetaQuest™
Confidential
ODBC
Link
Namespace
Legend
ORA_DATABASE
ORA_COLUMN
ORA_TABLE ORA_INDEX
ORA_USER
Transformation of Oracle RIM to Relational
ORA_DATABASE
ORA_COLUMN
ORA_TABLE ORA_INDEX
ORA_USER
1 to Many
1 to 1
Legend
<JOIN~ORA_TABLE~ORA_INDEX
~ORA_INDEX>
<JOIN~ORA_INDEX~ORA_USES-COLUMN
~ORA_COLUMN>
Create table with same name and also add <PARENT~ORA_TABLE> column.
May 7, 2007 25
MetaQuestMetaQuest™
Confidential
ODBCTransformation of Oracle RIM to Relational
<JOIN~ORA_TABLE~ORA_INDEX~ORA_INDEX> <PEER~ORA_TABLE~ORA_INDEX> - Contains the item ID of the ORA_TABLE table
row. <PEER~ORA_INDEX~ORA_INDEX> - Contains the item ID of the ORA_INDEX table
row. <LINK-QUALIFIER> - Contains the link qualifier text for the link.
<JOIN~ORA_INDEX~ORA_USES-COLUMN~ORA_COLUMN> <PEER~ORA_INDEX~ORA_USES-COLUMN> - Contains the item ID of the
ORA_INDEX table row. <PEER~ORA_COLUMN~ORA_USES-COLUMN> - Contains the item ID of the
ORA_COLUMN table row. <LINK-QUALIFIER> - Contains the link qualifier text for the link.
What’s the structure of the intersection tables from the previous slide?
Top Related