ODE & 3CPO – Talking multiple languages
Everybody talks a different language
When we decided to start building ODE we knew a few things already. One of those things was that most of our customers already had data warehousing technology.
They had already invested in Microsoft, Oracle, IBM, SAS, Teradata, Informatica or any of the other raft of data warehouse repositories and ELT technologies that are abound in the market place.
We also knew that it would be a big decision on their part to throw out this technology and implement the technology we decided to pick to be able to use ODE and gain the AgileBI benefits that it provides.
Don’t force people to do what they don’t want to
So we decided to develop ODE in a way that meant they could continue to leverage the technology they already had if they wanted to.
This meant we had to be able to deploy ODE on multiple of platforms, leverage multiple data transformation languages and tools, plus read and write to multiple data repositories.
So we had a multi language problem
We though about writing ODE in java. In theory this would allow us to deploy on any platform and any technology.
We knew from experience we would probably end up being forced down a java server path for transformations, and we also knew most of the hard core data warehouse customers we work with would want it to run natively in the data repository they already have invested in.
We knew that there were some language translation tools we might be able use. Tools where we could write code in say tSQL and it would automagically convert it to PL/SQL. We tried a couple and our overall experience was “yeah, nah”
We also knew that like our team, our customers would want us to tune any data transformation code to run fast, and this meant being able to tune the code for each technology. And in fact for specific scenarios within a technology. For example using columnar store when it was available in the target data repository.
And last but not least we knew maintaining multiple versions of the same product would be a complete nightmare for us.
Enter 3CPO
Our solution was to look at our plan for ODE and work out what we could architect as a standard shared component and what had to be specific to each technology. We also discovered we would need to manage a couple fo different deployment options as well.
So we ended up with a design we call 3CPO, which stands for:
- Configuration
- Code Generation
- Code Execution
- Orchestration
Config
Config is the relational data model we have built that holds all the configuration required to make ODE run.
This will include definitions of all source and targets, as well as any mappings. For example
- Raw Vault Hub, Sat and Links
- Business rules to be applied in the business vault
- Measure calculations
- Star schemas to be deployed
It will also include unique options to deploy for a specific environment or to a specific design pattern. For example:
- Whether to virtualise the dimensional star schemas or persist them.
- End date each satellite record, create tombstone records or do both
- Utilise columnar storage for a satellite
- Create an index
Config is the heart of ODE, without it there is nothing.
Code Generation
Code Gen is the code that builds Code Exec.
It reads the config and generates the code that is needed to create the structures and move the data.
(of course if you select the the virtualised options it will create views that see the data)
Code Gen will come in multiple flavours, so you can deploy it on the technology you already have.
At the moment we are planning to include (overtime):
- Microsoft tSQL
- Oracle PL/SQL
- Oracle ODI
- SAS
- R
There is nothing stopping the wider community building Code Gen and Code Exec for another platform (say Informatica) reusing the code patterns we have already defined.
Code Execution
Code Exec is the code that runs to create the structures or move the data.
(of course if you select the the virtualised options it will be views that see the data)
Code Exec will also come in the same multiple flavours as Code Gen.
Orchestration
Orchestration is the engine that runs the code exec.
It can be run in two design modes.
Engine Mode
Engine mode is when the Code Gen and the Code Exec are executed at the same time.
So effectively ODE will look at the config, create the code exec, execute it, and then rinse and repeat.
Code Deployment Mode
Code Deployment Mode is when Code Gen creates the Code Exec and then you manually promote the Code Exec across your different environments (i.e. Dev > Test > Prod)
Execution
The execution engine that actually tells Code Gen when to build the Code Exec, and also tells Code Exec when to execute will be over to you for a while.
We will deal with it when we have finished building all the features required to support Config, Code Gen and Code exec that will manage the entire process of moving the right data from source to star.
It can be as simple as Cron, or the use of an ETL engine such as SSIS.
Config is the heart of ODE
The configuration component is the core of ODE and the thing that will be maintained as a common component across all developed and deployed versions.
We are maintaining the config component via version controlled processes, with the code being stored in GIT (as we are with all out code of course).
Our team will fight long and hard as they decide to add a new feature into the config, to ensure ODE doesn’t become bloated but also to ensure we keep adding core features.
We are semi-lingual already
Our core Code Gen and Code Exec is currently written in tSQL. This is due to both the skills of the people we had available to kick off initial development and the customers we were working with for the initial deployments.
We have also done initial builds in PL/SQL and SAS, but need to move these up to the latest config release.
Hop on the bus
We are not quite ready to open the flood gates and let the world help start adding features to ODE.
We are working on our Test Driven Development (TDD) and Continuos Integration (CI) frameworks at the moment to ensure we can safely test any config and code changes as we add features. This is core before we can safely start committing contributions. (not to mention doing the documentation you will need to get started)
But we are keen to talk to anybody who might want to start the journey early with us.
Grab a ticket (they are free) and hop on board. Its going to be an exciting ride!
Keep upto date
C3PO Image src: https://www.flickr.com/photos/elaws/3773702375/sizes/l/
Gartner 2020 Magic Quadrant for Analytics and Business Intelligence Platforms is out
Its that time of year again, New Year has been and gone, Christmas is but a memory, in half the world Winter is mid flow and in the other half (including my half) are mid summer wearing shorts and jandles.As well as good friends, good barbecues and great...
Gartner 2019 Magic Quadrant for Analytics and Business Intelligence Platforms is out
It's that time of the year (where the hell did 12 months go!) where Gartner announce the latest version of their Magic Quadrant for Business Intelligence tools, or this year what they call "Modern Analytics and BI Platforms".Im always interested in which...
Adding members to the Agile Team makes you go slower
As a Stakeholder or Product Owner I want I want to understand if constantly adding Agile Team members is a good idea So that I can have a valid conversation with my Product Owner and Scrum Master Initially at least! VelocityWhen building a new AgileBI delivery team,...
Gartner Magic Quadrant for Business Intelligence 2018 – Augmented Capability will be the New Black
February has come around again, the Gartner BI conference is running in Sydney Australia, people I know are in Sydney drinking beer, I am not, and the Gartner Magic Quadrant for Analytics and Business Intelligence Platform is out.Can I take a little space to rant (of...
Who should attend Steering Committees?
As a Stakeholder or Product Owner
I want to understand who should attend the steering committee
So that I know I have the best representation
Project Managers who have done standups
As a Stakeholder or Product Owner
I want to understand what experience a Project Manager needs
So that I know if they are suitable as a scrum master
3. AgileBI Things: Agile Data Science, Governed Data Lake, The Agile Data Warehouse A Practical Approach
Source: Pixabay Shane writes an AgileBI series called "3 AgileBI Things" published on LinkedIN Pulse. This article below is a copy of "3. AgileBI Things - 2017-04-09". Shane also writes on AgileBI concepts at AgileBI Guru. 1. Agile Data Science When the new world of...
3. AgileBI Things: Big Data Papers; V, V, V v,v,v,v,v,v,v; Extended Data Warehouse
Source: Mosman Library Shane writes an AgileBI series called "3 AgileBI Things" published on LinkedIN Pulse. This article below is a copy of "3. AgileBI Things - 2017-04-02". Shane also writes on AgileBI concepts at AgileBI Guru. 1. Big Data Papers I still hear...
3. AgileBI Things: Automated Testing Goals, Data Warehouse Test Checklist, Business Rule Game
Shane writes an AgileBI series called "3 AgileBI Things" published on LinkedIN Pulse. This article below is a copy of "3. AgileBI Things - 2017-03-26". Shane also writes on AgileBI concepts at AgileBI Guru. 1. Automated Testing Goals So I have finally been lucky...
3. AgileBI Things: Big Model Upfront, Data Warehouse Project Failures, Guestimates
Shane writes an AgileBI series called "3 AgileBI Things" published on LinkedIN Pulse. This article below is a copy of "3. AgileBI Things - 2017-03-19". Shane also writes on AgileBI concepts at AgileBI Guru. 1. Big Model Upfront When delivering an AgileBI project one...
3. AgileBI Things – SQL Server Temporal tables, Changing Data, ODE
Shane writes an AgileBI series called "3 AgileBI Things" published on LinkedIn Pulse. This article below is a copy of "AgileBI Things - 2017-03-12". Shane also writes on AgileBI concepts at AgileBI Guru. Image source: Pixabay 1. SQL Server Temporal tables, automating...
3. AgileBI Things – Data Lakes vs Data Warehouses, Change Management in an Agile approach, So you wanna be a Scrum Master
Shane writes an AgileBI series called "3 AgileBI Things" published on LinkedIN Pulse. This article below is a copy of "3. AgileBI Things - 2017-02-19". Shane also writes on AgileBI concepts at AgileBI Guru. 1. Data Lakes vs Data Warehouses I think in the next few...
3. AgileBI Things – T-Skills and the death of the BA (or a massive change anyway), Agile Uprising, BICC is Dead?
Shane writes an AgileBI series called "3 AgileBI Things" published on LinkedIN Pulse. This article below is a copy of "3. AgileBI Things - 2017-03-05". Shane also writes on AgileBI concepts at AgileBI Guru. 1. T-Skills and the death of the BA (or a massive change...
3 AgileBI Things: Managing Technical Debt, Agile Techniques, BEAM Modelstorming and Data Vault
Shane writes an AgileBI series called "3 AgileBI Things" published on LinkedIN Pulse. This article below is a copy of "3. AgileBI Things - 2017-02-05". Shane also writes on AgileBI concepts at AgileBI Guru. 1. Managing Technical Debt Technical Debt will slow your...
The challenges and risks of being an Agile BI Manager
As a BI Manager
I want to understand what risk and challenges I will encounter
So that I know what I am getting myself into
3 AgileBI Things: Agile Team adoption and coaching, Data Virtualisation, Embedded BI
Shane writes an AgileBI series called "3 AgileBI Things" published on LinkedIN Pulse. This article below is a copy of "3. AgileBI Things - 2016-11-14". Shane also writes on AgileBI concepts at AgileBI Guru. 1. Agile Team adoption and coaching Agile teams all form,...
5 Factors In Agile BI
As a Stakeholder or Product Owner
I want to understand 5 things that will promote an AgileBI approach
So that I can include them in how we do things
3 AgileBI Things – Data Vault Overview, Data Lakes as a Persistent Staging, Demo / Prove It
Shane writes an AgileBI series called "3 AgileBI Things" published on LinkedIN Pulse. This article below is a copy of "3. AgileBI Things - 2016-11-28". Shane also writes on AgileBI concepts at AgileBI Guru. 1. Data Vault Overview If you haven't worked out by now that...
3 AgileBI Things – Technical Debt Game, Product Owner Overview, AgileBI Thoughts
Shane writes an AgileBI series called "3 AgileBI Things" published on LinkedIN Pulse. This article below is a copy of "3. AgileBI Things - 2016-11-21". Shane also writes on AgileBI concepts at AgileBI Guru. 1. Technical Debt Game I love finding new ways to educate a...
Gartner Magic Quadrant for Business Intelligence 2017 – Cloud is coming (slowly)
This is always an exciting time for me awaiting the latest Gartner Magic Quadrant for Business Intelligence to be released and to see the latest surprises. This year's MQ contained a few surprises and invoked a few thoughts on the current state of the market and where...
Trackbacks/Pingbacks