The webinar discussed challenges with database development and version control. Traditional script-based approaches cause issues like out-of-process changes, working on the wrong code revisions, and lack of history tracking for database changes. The presenters demonstrated a database version control solution that enforces a coordinated development process, integrates with existing version control systems, and provides automated deployment to eliminate errors from manual scripting. Key benefits included parallel development, fast bug detection, and streamlined provisioning with reduced risks from human errors.
Why Teams call analytics are critical to your entire business
Taking Database Development to the 21st Century
1. Thank you for joining us, the webinar will start at:
10:00 Pacific / 11:00 Central / 13:00 East / 18:00 UK Time
Taking Database Development to the 21st Century
2. Presenters
Kyle Hailey @kylehhailey
• Technical Evangelist at Delphix
• Oracle ACE, member of the OakTable Network
Uri Margalit @UriMargalit
• Director, Product Management
• Presenter at world-wide conferences: ODTUG, ilOUG,
Perforce Merge, etc…
3. Before we start
• You will be on mute for the duration of the event
• We are now talking so please type a message
in the Questions box in the Control Panel if you can’t
hear us (please check your speakers and
GoToWebinar audio settings first)
• There will be a Q+A session at the end but please
feel free to type your questions in the Questions
box in the Control Panel in advance
• A recording of the full webinar will be put up online
4. About Delphix
• Founded in 2008, launched in 2010
• CEO Jedidiah Yueh (founder of Avamar: >$1B revenue))
• Based in Silicon Valley, Global Operations
• 20% of Fortune 500
5. About DBmaestro
• Founded in 2008
• Headed by Yariv Tabac and Yaniv Yehuda
• Headquartered in Israel, Global Operations
9. Reducing Risk
Smaller changes Agile
Automation no human error, more with less
DevOps synergy
10. Source Control : Code
• GitHub
• SVN
• Perforce
• TFS
• RTC
• VSS
How do you source control the database?
11. Database Challenge
• Crucial
• Must be in sync with application changes
• Objects not file system
– Schema Structure
– PL/SQL Code
– Central resource
• Lacks Version Control
• Relevant data for the task
12. Database Requirements
• How can we
– Enforced version control changes?
– Manage content?
– Branch versions?
– Merge branches?
– Have right data for the task?
13. Data is the constraint
60% Projects Over Schedule
85% delayed waiting for data
Data is the Constraint
CIO Magazine Survey:
only getting worse
14. Why is Data the Constraint ?
1. Development: Bottlenecks & bugs
2. QA: Expensive, single threaded, slow
3. Provisioning: Delays
31. What We’ve Seen With Delphix
1. Development: Parallelized, less bugs
2. QA: Low cost, fast bug detection
3. Provisioning: Fast, Culture of Yes
But …
How do we manage the changes and make sure
the version we deploy is the correct one?
32. Version Control is a constraint
“
“
It was difficult to track who made a change to a
database object and what change they made.
(working-around file based version control)
Sr. DBA @ Large USA Bank
It took hours to get releases working. some changes
were not documented and left out. we actually preferred
crashes in integration. It is much worse when something
works, but works wrong. in production…
(manual and error prone releases)
Sr. R&D Manager @ Credit Card company
33. Version Control is a constraint
We recently had a disaster - the script in the version
control was not updated and when executed in production,
ran the wrong revision. That cost tens of thousands of $
(an out-of-process update to QA that was not properly tracked)
Developer @ Algo Trading company
We had multiple releases to production every day. That
is one release a week with multiple follow up fixes, and yet
more fixes
(code overrides, partial versions, wrong versions – all pushed to production)
CTO @ Credit Card company
“
“
34. Version Control is a constraint
We had an incident where a trigger was not correctly
implemented during a code release. a trigger from a
previous build was used instead which was only detected
on Tuesday morning on the first business day after our code
release. this was a customer-facing application and made
our team look, and feel, bad about the release.
we realized that we needed to bring more discipline and
rigor to our database changes.
(manual process are hard to repeat over and over without errors)
Sr. DBA @ Large USA Bank
“
35. Root Causes
• Manual script based version control process
• Deployment tools unaware of version control
• No red-flags…
36. Two Isolated Processes
Version Control Process
(file based)
Development Process
Check-Out
Script
Modify Script
Get updated
Script from DB
Check-In
Script
Compile
Script
in DB
Debug Script
in DB
?
?
?
?
A
A’
37. Challenges…
Un-coordinated Process
Silos in development
Deployment delays…
Out-of-Process Changes
Errors in production
Lack of confidence in automation
Code overrides
Different methodologies
Lack of history Missing changes
wrong versions
38. Scripts & Version Control
• Challenges…
– Code-overrides
– Working on the wrong revisions
– Scripts do not always find their way to the version control solution
– Out of process updates go unnoticed
– Hard to locate outdated update scripts
• Playing safe? what we really need:
– The actual code of the object
– The upgrade script
– A roll-back script
39. Testing Scripts
• Single object based scripts
– Hard to test in their entirely
– Hard to test due to colliding dependencies
– Need to run in a specific order…
• Large multi object based script
– Represents the entire update - can deal with dependencies
– Much harder to deal with project scope changes
– Hard to mange – a big list of commands
40. 1.11.21.31.41.51.61.7 1.11.11.41.7 1.1.1
X
1.11.1.1
Scripts… Build Once Deploy Many
Int QA Stage Prod
Database Deploy Script
Environment
Re-Base (due to defects)
Dev
Dev
Dev
Model
1.1 1.2
1.2 1.3
1.3 1.4
1.4 1.5
1.5 1.6
1.6 1.7
1.1 1.2
1.2 1.3
1.3 1.4
1.4 1.5
1.5 1.6
1.6 1.7
1.1 1.2
1.2 1.3
1.3 1.4
1.4 1.5
1.5 1.6
1.6 1.7
Out of Process
Change
X
X
X
X
X
?
X
41. Scripts are Static…
• Scripts, unless super sophisticated:
– Unaware of changes made in the target environment
– Time passed from their coding to the time they are run
– Potentially overriding production hot-fixes & work done in parallel
by another team
• Content changes are very hard to manage
– Metadata & lookup content does not practically fit into the VC
– In most cases they are simply not managed
42. Poll
What level of management you have for you DB
development?
1. Enforced version control; Baseline aware
automation
2. Version control scripts; Simple automation
3. Version control scripts; Simple Comp & Sync
4. None
43. Dealing With Challenges…
Coordinated ProcessTraceability
Start in the Beginning
No Out-of-Process Changes
Impact Analysis
Automation
Task Based Development
Well Defined Processes
45. Dealing With Challenges…
• Integrated Version Control process
– Leverage proven version control best practices
• Forcing check in & out for changes
• Labels
• etc..
– No code-overrides
– Always working with the correct revision
– All changes are documented
• Integrated Version Control process
– Always know who did what, when, why and from where
– No out-of-process changes
– Supporting structure, code and content
• No time spent on manual coding of the change scripts
46. 1.11.21.31.41.51.61.7 1.11.11.41.7 1.1.11.11.1.1
Build & Deploy On Demand
Int QA Stage Prod
Database Deploy Script
Environment
Re-Base (due to defects)
Dev
Dev
Dev
Model
1.1 1.2
1.2 1.3
1.3 1.4
1.4 1.5
1.5 1.6
1.6 1.7
1.1 1.4
1.4 1.7
1.1.1 1.7
Out of Process
Change
1.7
*
1.7
47. Source vs.
Target
Action
= No Action
≠
?
Source vs.
Baseline
Target vs.
Baseline
Action
= = No Action
≠ = Deploy Changes
= ≠ Protect Target
≠ ≠ Merge Changes
You do not have all
of the information
With baselines aware
analysis the unknown is now
known
Simple Compare & Sync Baseline aware Analysis
Deployment Automation - Safety Net
An Index exists in Target (Prod) and not in Source (QA),
what should we do? Drop the Index?
48. Bonus Points – Task Base Development
• Correlate each database change with a change request
– Task ID
– Work Item
– Trouble Ticket
– CR
– etc…
• Partial deployments (a feature, a collection of bugs,
etc…)
• Scope changes easily synced between code and
database
49. Live Demo
• Clone 2 virtual copies of the Trunk
1. Dev1
2. Dev2
• Make changes & merge them into the Trunk:
– Developer1 modifies Dev1
– Developer1 merges changes into the Trunk
– Developer2 modifies Dev2
– Developer2 merges changes into the Trunk
• Rely on enforced changes & automation
Growing almost 300% a year
Founded in 2008, launched in 2010
Jedidiah Yueh, President and CEO
Founded Avamar in 1999, sold to EMC in 2006, VP Product Mgmt at EMC
Avamar: >$1B revenue,
150 Employees: HQ in Menlo Park, SF, Boston, DC, London, NY and Atlanta
Growing 250% annually – 130+ customers including 100 Fortune1000 Customers
Get the right data
To the right people
At the right time
I’m not sure if you have run into these situations at your organization or
if you can imagine some of these situations
But here are some of the issues we at Delphix are seeing in the industry with the companies we are talking to.
Let’s look at the 5 points in more detail
Not sure if you’ve run into this but I have personally experience the following
When I was talking to one development group at Ebay, they
Shared a single copy of the production database between the developers on that team.
What this sharing of a single copy of production meant, is that whenever a
Developer wanted to modified that database, they had to submit their changes to code
Review and that code review took 1 to 2 weeks.
I don’t know about you, but that kind of delay would stifle my motivation
And I have direct experience with the kind of disgruntlement it can cause.
When I was last a DBA, all schema changes went through me.
It took me about half a day to process schema changes. That delay was too much so it was unilaterally decided by
They developers to go to an EAV schema. Or entity attribute value schema
Which mean that developers could add new fields without consulting me and without stepping on each others feat.
It also mean that SQL code as unreadable and performance was atrocious.
Besides creating developer frustration, sharing a database
also makes refreshing the data difficult as it takes a while to refresh the full copy
And it takes even longer to coordinate a time when everyone stops using the copy to make the refresh
All this means is that the copy rarely gets refreshed and the data gets old and unreliable
We talked to Presbyterian Healthcare
And they told us that they spend 96% of their QA cycle time building the QA environment
And only 4% actually running the QA suite
This happens for every QA suite
meaning
For every dollar spent on QA there was only 4 cents of actual QA value
And that 96% cost is infrastructure time and overhead
The biggest and most pervasive problem we see is slow build times.
In order to set up an database copy for a development environments
Requires submitting a request to management who has to review it
Then if the request is granted, it is passed to the DBA who has to coordinate with the Sysadmin who has to coordinate with the storage admin.
In such a situation it makes sense that copying a large database would take a long time
But even when we talk to someone who uses netapp storage snapshots like Electronics Art and Ariba, they said even using storage snapshot sit took
days to weeks get a database clone copy due to the coordination between DBA, sys admin and storage admin
At many of the customers we talk to provisioning a database clone copy takes weeks or months.
One large global bank quotes us as taking typically 6 months to provision a database clone copy environment.
Requirements: self service for app teams
Requirements: end-to-end automation
Metrics: # people, process, time for delivery
So far we have talked about the weight of infrastructure on app delivery. Of course, to control and manage that infrastructure, firms layer on a large set of bureaucratic processes, change control, approvals, procurement, governance, etc etc. So the operational and organizational hurdles then create an even bigger drag on IT and app development.
Here’s an example from one banking customer.
Once the app developer puts in a request for a new development environment, there’s at least a week long wait for management approvals. Then project DBA work with the sysadmin and storage groups for capacity. If more capacity needs to be allocated, it’s 3 more days. If more needs to be purchased, weeks or months.
If a copy of production data is needed, the process needs to wait on a production DBA, who might be busy with production issues. Recovering the database to a specific point in time and configuration can also take days.
It is very common for two weeks to pass between a developer request and a ready environment. The process can be repeated for multiple environments, for data refreshes, and for integration across multiple systems.
With Delphix, turns stop signs into green lights. Provisioning, refresh, rollback, and data integration happen nearly instantly and do not trigger approvals from production systems or require additional storage. That is why KLA is able to deliver 5 times the output from its SAP teams…
Without Delphix, it’s impossible for organizations to implement the level of agile processes they desire. The management of data, and the bureaucracy of data management, slows things down too much.
Due to the constraints of building clone copy database environments one ends up in the “culture of no”
Where developers stop asking for a copy of a production database because the answer is “no”
If the developers need to debug an anomaly seen on production or if they need to write a custom module which requires a copy of production they know not to even ask and just give up.
In the physical database world, 3 clones take up 3x the storage.
In the virtual world 3 clones take up 1/3 the storage thanks to block sharing and compression
Software
installs an any x86 hardware
uses any storage
supports Oracle 9.2-12c, standard edition, enterprise edition, single instance and RAC on AIX, Sparc, HPUX, LINUX
support SQL Server
For example Stubhub went from 5 copies of production in development to 120
Giving each developer their own copy
Stubhub estimated a 20% reduction in bugs that made it to production