SlideShare a Scribd company logo
1 of 55
Download to read offline
Are we there Yet??
(The long journey of Migrating from
close source to opensource solution)
Marco (the Grinch) Tusa
Percona
2
• Open source enthusiast
• Consulting team manager
• Principal Architect
• Working in DB world from 25 years
• Open source developer and community
contributor
About me
Section header
Click to add text
Gartner predicts by 2022:
§ Half of existing commercial database
instances will have migrated or will be in
process of migrating to an Open Source
DBMS
§ More than 70% of greenfield
applications will use an Open Source
DBMS
Motivations
§ Average annual spend for enterprise database support: 5M-20M
§ Annually compounding support costs are no longer tolerable
Challenges and Risks
§ 78% - Reported migration projects more difficult than expected
§ 65% - Expect the planning to take more than 6 months
§ 90% - Reported migration projects took longer than expected
Migration Services - Mitigating the
Risk - Getting it Right
Three Questions
Why migrate
What can migrate
How to succeed
Common reasons to migrate
Cost 60%
Business Reasons (Politics) 35%
Technical requirements 5%
Migration was a THING from long
• Now a huge business
• There is a lot of confusion (too many
simplifications)
• Business/Politics often overcome Technical
reasons and common sense
Correct expectations is the key
This is not a new thing
Migration from close source to open source is OLD
2008 pre SUN 2010 Oracle
Migrate to what?
Migration from premises to cloud is not new as well
Premises VS Cloud
Or
The place where you know you need SAs and DBAs and fantasyland where
all works by magic
Migrate to what?
Migration to MySQL/MariaDB or PG ?
Or something else???
What are the most common steps?
First of all, do not rush take the right time to do all well
• Understand
• Map
• Rewrite
• Code/SQL
• Move data
• Test
• Go Live
4 Main phases:
1. Assessment
2. POC
3. Migrate
4. Go Live
Assessment
The journey will be long … do not start if you are not sure about
Not everything can be migrated, but you don’t know
Not all the schemas will take the same time, but you don’t know
Not all the code can be rewritten, but you do not know
You need to KNOW before you move a finger
POC
A Proof Of Concept is: evidence sufficient to establish a thing as true, or to
produce belief in its truth.
As such is a critical moment to define if what was Assess can be done or
not.
Test … test … test
Not only port the data
Performance & functionalities
Be courageous, and if it will not work, be ready to drop
Migrate
Apply knowledge acquire during POC to
Transform schemas
Rewrite or export code
Move data
Implement DBOps procedure (db optimizations; backup/restore: etc)
Test applications
Go live
Replicate data
Keep it up to date
Cutover time
Sounds simple right?
I have news for you, it is not!
Defining the Process - Migration Methodology
Analyze
Understand
Map Src/Dest
Re/Design Extract Src
Convert
Import Schemas dataLogic
PartitionIndexTest/POCValidate
Something
Breaks
Success
Defining the Process - Migration Methodology
Analyze
Understand
Map Src/Dest
Re/Design Extract Src
Convert
Import Schemas dataLogic
PartitionIndexTest/POCValidate
Something
Breaks
Success
18
I like to start from :
• Scalability and Flexibility
• High Performance
• High Availability
• Robust Transactional Support
• Web and Data Warehouse Strengths
• Strong Data Protection
• Comprehensive Application Development
• Management Ease
• Open Source Freedom and 24 x 7 Support
• Lowest Total Cost of Ownership
Why MySQL Or Postgres
19
10 things to know about MySQL
1 Subqueries are poorly optimized (still true)
2 Data integrity checking is very weak, and even basic integrity constraints cannot always
be enforced. (replication)
3 Most queries can use only a single index per table; multi-index query plans exist in
certain cases, but the cost is usually underestimated by the query optimizer, and they
are often slower than a table scan.
4 Foreign keys are not supported in most storage engines.
5 Execution plans are not cached globally, only per-connection.
6 There are no integrated or add-on business intelligence, OLAP cube, etc packages.
7 There are no materialized views (also if we can use Event scheduler)
8 Native replication is asynchronous and has many limitations and edge cases.
9 DDL such as ALTER TABLE or CREATE TABLE is non-transactional. It commits open
transactions and cannot be rolled back or crash-recovered.
10 Each storage engine can have widely varying behavior, features, and properties.
(positive and negative)
20
4 things to know about Postgres
1. Changing Primary on a secondary require service restart
2. Partitions implemented as separate tables
3. Also minor version upgrade can be difficult (start from
the Primary VS MySQL start from the last Slave)
4. Global Temporary table do not exists
21
The Motto
Use the right tool for the job
Let us see some more details
Click to add text
The assessment
Prepare a plan, and do not improvise
• Talk with Stakeholders (business/DBA/developers)
• Analyze the source (from application to data design)
• Identify show stoppers
• Identify how to map what to what
• Identify how to organize the target
Most important:
Be ready to do not force migration. If it does not make sense to proceed, STOP!
24
• Database is used only to store data all the logic reside in the
application
• Database contains logic such as stored procedure and
complex package
• Database containing data for data warehouse
• Real time data and historical records (telephone company)
Most common source cases
25
When analyzing the source database(s) what should be the
outcome?
• Easy to understand list of what is and out
• Identify Source type (Simple data move; data + code; etc.)
• In detail review per schema of complexity
• Assessment of modification and effort database objects
• Assessment of functions/functionalities used (also in the
application) not always possible
• Application assessment and review
The assessment Mitigating risk of failure
The assessment how it looks like
Migration levels (ML):
1. Migration that can be run automatically
2. Migration with code rewrite and a human-days cost up to 10 days
3. Migration with code rewrite and a human-days cost up to 30 days
4. Migration with code rewrite and a human-days cost up to 60 days
5. Migration with code rewrite and a human-days cost above 60 days
6. Not portable: Application code is dependent by the DB platform and is not possible
to change the application code
Sub technical levels:
ML.1 = trivial: no stored functions and no triggers
ML.2 = easy: no stored functions but with triggers, no manual rewriting
ML.3 = simple: stored functions and/or triggers, no manual rewriting
ML.4 = manual: no stored functions but with triggers or views with code rewriting
ML.5 = difficult: stored functions and/or triggers with code rewriting
The assessment how it looks like
Schema Application Man days
Hestimated
instances
Man days
per schema
type
Difficulty
Level
Color
code
ABC Drupal 2.0 1 2 1-1
DEF wordpres 1.0 1 1 1-1
GHI My Java app 1.5 1 1.5 1-1
LMN Sales App 2.0 1 2 1-1
OPQR Booking 2.0 1 2 1-1
STV Insurances 5.0 12 30 3-3
Z1 Tikets 12 10 48 4-5(*)(**)
AA1 Advertise 2.00 19 30 1-1*
AA2 Network App 2.0 200 80 1-1*
*Per instance
**Schema may take short time, but Store procedure require rewrite
The assessment how it looks like
Schema Application Man days
Difficulty
Level
Color
code
(PG)
Color code
(My)
Schema1 App1 64 5.5
Schema2 App2 1 1.1
Schema3 App2 200 5.5
Schema4 App2 10 2.5
Schema5 App3 250 6.5
Schema6 App4 150 5.4
The assessment how it looks like
High 23
DBMS_UTILITY 1
UTL_FILE 21
Virtual Column Partitions 1
Low 190
BTreeIndexes 1
Bulk Collect 5
CLOB Data Types 6
Cursors 2
DBMS_OUTPUT 33
Float DataTypes 1
Raw Data Type 3
Sequences 133
TableTriggers 4
Views 2
Medium 90
Functions 51
Stored Procedures 33
User Defined Types 6
Grand Total 303
high, 8
Medium, 30
Low, 63
MYSQL COMPLEXITY DISTRIBUTION
Converting schemas
Correct datatypes identification
Identify different and problematic objects like materialized view Global
temporary tables etc.
Open source tools exists to support you during this part:
• Ora2PG
• SQLines
Not Open source
• AWS Schema Conversion Tool
• Oracle to MySQL converter
• Inspirer SQLWays
31
Understanding DDL differences
Identify conversion between Oracle and MySQL for
• Tables • Views
• Procedures • Functions
• Packages • Triggers
• Sequences, synonyms etc.
I.e. data types:
Converting schemas
MySQL Data Type Oracle Data Type
BIGINT NUMBER(19, 0)
BIT RAW
BLOB BLOB, RAW
CHAR CHAR
DATE DATE
DATETIME DATE
DECIMAL FLOAT (24)
DOUBLE FLOAT (24)
DOUBLE PRECISION FLOAT (24)
ENUM VARCHAR2
FLOAT FLOAT
MySQL Data Type Oracle Data Type
INT NUMBER(10, 0)
INTEGER NUMBER(10, 0)
LONGBLOB BLOB, RAW
LONGTEXT CLOB, RAW
MEDIUMBLOB BLOB, RAW
MEDIUMINT NUMBER(7, 0)
MEDIUMTEXT CLOB, RAW
NUMERIC NUMBER
REAL FLOAT (24)
SET VARCHAR2
SMALLINT NUMBER(5, 0)
TEXT VARCHAR2, CLOB
TIME DATE
TIMESTAMP DATE
TINYBLOB RAW
TINYINT NUMBER(3, 0)
TINYTEXT VARCHAR2
VARCHAR VARCHAR2, CLOB
YEAR NUMBER
Converting schemas
• Re-organize the schema/table not just convert data types
• Storage engines
• Index full redesign
• Data organization
• Sharding
• Partition
• Logic rewrite
• Inside MySQL
• Move to application
33
1. Join syntax
2. SQL_mode
3. Data comparison using collation
4. other common differences:
SQL macro differences
NVL() --> IFNULL()
ROWNUM --> LIMIT
SEQ.CURRVAL --> LAST_INSERT_ID()
SEQ.NEXTVAL --> NULL
NO DUAL necessary (SELECT NOW())
NO DECODE() --> IF() CASE()
JOIN (+) Syntax --> INNER|OUTER LEFT|RIGHT
No Hierarchical (connect to prior)
Converting SQL
Exporting data
3 Different types:
• Easy, Medium (Ora2PG; SQLines Data; other tools)
• Large and complex (SqlWays; exporting code)
• Huge and over (Write proper exporting code)
35
Understanding Function Triggers difference
Given The relevance in a Migration of the presence of SP/Trigger it is worth to
talk about it a little bit more in details
Procedure and triggers difference
• one trigger for event in MySQL, all the different actions needs to be group
• no packages, workaround using a fake schema
• different behavior by storage engine and if transactional or not
• Security assignments and security definer/invoker
• Very basic error handling.
Mitigating risk of failure with the code
36
Understanding Function Triggers difference
MySQL stored programs can often add to application functionality and developer efficiency, and there
are certainly many cases where the use of a procedural language such as the MySQL stored
program language can do things that a non procedural language like SQL cannot.
There are also a number of reasons why a MySQL stored program approach may offer performance
improvements over a traditional SQL approach
• It provides a procedural approach (SQL is a declarative, non procedural language)
• It reduces client-server traffic
• It allows us to divide and conquer complex statements
But…
Mitigating risk of failure with code
37
Understanding Function Triggers difference
One graph tells more then 1,000 words:
Mitigating risk of failure with the code
38
Understanding Function Triggers difference
IF and CASE Statements
When constructing IF and CASE statements, try to minimize the number of comparisons
that these statements are likely to make by testing for the most likely scenarios first.
For instance, in the code in the next slide, the first statement maintains counts of various
percentages.
Assuming that the input data is evenly distributed, the first IF condition (percentage>95)
will match about once in every 20 executions.
On the other hand, the final condition will match in three out of four executions. So this
means that for 75% of the cases, all four comparisons will need to be evaluated.
Mitigating risk of failure with the code
39
Understanding Function Triggers difference
Non Optimized
IF (percentage>95) THEN
SET Above95=Above95+1;
ELSEIF (percentage >=90) THEN
SET Range90to95=Range90to95+1;
ELSEIF (percentage >=75) THEN
SET Range75to89=Range75to89+1;
ELSE
SET LessThan75=LessThan75+1;
END IF;
Optimized
IF (percentage<75) THEN
SET LessThan75=LessThan75+1;
ELSEIF (percentage >=75 AND percentage<90) THEN
SET Range75to89=Range75to89+1;
ELSEIF (percentage >=90 and percentage <=95) THEN
SET Range90to95=Range90to95+1;
ELSE
SET Above95=Above95+1;
END IF;
Mitigating risk of failure with the code
40
Understanding Function Triggers difference
Mitigating risk of failure with the code
Looks simple and the effect is relevant:
41
Understanding Function Triggers difference
Using Recursion
A recursive routine is one that invokes itself.
Recursive routines often offer elegant solutions to complex programming problems,
but they also tend to consume large amounts of memory.
They are also likely to be less efficient and less scalable than implementations based
on iterative execution.
Mitigating risk of failure with the code
42
Understanding Function Triggers difference
Mitigating risk of failure with the code
Recursive
CREATE PROCEDURE rec_fib(n
INT,OUT out_fib INT)
BEGIN
DECLARE n_1 INT;
DECLARE n_2 INT;
IF (n=0) THEN
SET out_fib=0;
ELSEIF (n=1) then
SET out_fib=1;
ELSE
CALL rec_fib(n-1,n_1);
CALL rec_fib(n-2,n_2);
SET out_fib=(n_1 + n_2);
END IF;
END
Not Recursive
CREATE PROCEDURE nonrec_fib(n
INT,OUT out_fib INT)
BEGIN
DECLARE m INT default 0;
DECLARE k INT DEFAULT 1;
DECLARE i INT;
DECLARE tmp INT;
SET m=0;
SET k=1;
SET i=1;
WHILE (i<=n) DO
SET tmp=m+k;
SET m=k;
SET k=tmp;
SET i=i+1;
END WHILE;
SET out_fib=m;
END
43
Understanding Function Triggers difference
Mitigating risk of failure with the code
The difference is quite impressive and evident
44
Understanding Function Triggers difference
Mitigating risk of failure with the code
When you need to retrieve only a single row from a SELECT statement,
using the INTO clause is far easier than declaring, opening, fetching from,
and closing a cursor. But does the INTO clause generate some additional
work for MySQL or could the INTO clause be more efficient than a cursor?
45
Understanding Function Triggers difference
Trigger Overhead
Every database trigger is associated with a specific DML operation
(INSERT, UPDATE, or DELETE) on a specific table the trigger code will
execute whenever that DML operation occurs on that table.
Furthermore, all MySQL 8.x triggers are of the FOR EACH ROW type, which
means that the trigger code will execute once for each row affected by the
DML operation.
Given that a single DML operation might potentially affect thousands of
rows, should we be concerned that our triggers might have a negative effect
on DML performance?
Absolutely yes!
Mitigating risk of failure with the code
46
Understanding Function Triggers difference
Mitigating risk of failure with the code
When using Trigger be ALWAYS sure to have the right indexes.
47
²Don’t work Alone
²Involve Oracle experienced DBA
²Involve MySQL experience DBA
²Involve the developers
²Use real data
²Use real traffic
²Take one source for each type; start with the easy one
Go Back to the analysis phase if you have to
Prepare for the POC
Ok I have migrate all … now what ??
Lorem Ipsum market share
• Lorem ipsum dolor sit amet
• Curabitur scelerisque malesuada auctor
• Vestibulum molestie
pharetra mauris
• Donec finibus mi eu ultricies tincidunt
Lorem Ipsum
Dolor sit amet
Vestibulum
Donec mollis
Lorem Ipsum some title here and there
Hired the Two Bobs as
Consultants
They cherish the
power to fire
people at will
They also cherish
and celebrate
Michael Bolton
Peter Gibbons
interviewed by the Two
Bobs
Expresses loathing
and disdain for his
job
Immediately
promoted to
management
Michael Bolton
interviewed by the Two
Bobs
Lies about liking
Michael Bolton to
keep his job
Fired anyway
Section header
Click to add text
Another slide Title
Past Keyote Speakers:
• Lorem Sapien
• Justo Nulem
• Finibus Proin
• Aliquam Hendrerit
• Donec Dapibus
• Tempus Orci
IniTech Culture and Values
We put cover sheets
on TPS reports
Did you get the memo
about the cover sheets?
If you could go ahead and
start using the cover sheet,
that would be great. Mkay?
Oh, and Friday is Hawaiian
shirt day
Focused 100%
on Cover Sheets
Vendor Agnostic Lorem Ipsum
Performance Services
Lorem, Ipsum, Dolar, Sit Amet,
Vestibulum, Consectetu
Vestibulum molestie pharetra mauris
condimentum mollis.
• Nemo enim ipsam voluptatem quia voluptas sit
aspernatur
• Neque porro quisquam est
• We are great at Lorem and Ipsum
• Ut enim ad minima veniam!
Build Fix
Optimize Manage
Rate My Session

More Related Content

What's hot

Flink Forward Berlin 2017: Bas Geerdink, Martijn Visser - Fast Data at ING - ...
Flink Forward Berlin 2017: Bas Geerdink, Martijn Visser - Fast Data at ING - ...Flink Forward Berlin 2017: Bas Geerdink, Martijn Visser - Fast Data at ING - ...
Flink Forward Berlin 2017: Bas Geerdink, Martijn Visser - Fast Data at ING - ...Flink Forward
 
Rapid Data Analytics @ Netflix
Rapid Data Analytics @ NetflixRapid Data Analytics @ Netflix
Rapid Data Analytics @ NetflixData Con LA
 
Apache Flink(tm) - A Next-Generation Stream Processor
Apache Flink(tm) - A Next-Generation Stream ProcessorApache Flink(tm) - A Next-Generation Stream Processor
Apache Flink(tm) - A Next-Generation Stream ProcessorAljoscha Krettek
 
Stream Processing with Apache Apex
Stream Processing with Apache ApexStream Processing with Apache Apex
Stream Processing with Apache ApexPramod Immaneni
 
Fault Tolerance and Processing Semantics in Apache Apex
Fault Tolerance and Processing Semantics in Apache ApexFault Tolerance and Processing Semantics in Apache Apex
Fault Tolerance and Processing Semantics in Apache ApexApache Apex Organizer
 
The Art of The Event Streaming Application: Streams, Stream Processors and Sc...
The Art of The Event Streaming Application: Streams, Stream Processors and Sc...The Art of The Event Streaming Application: Streams, Stream Processors and Sc...
The Art of The Event Streaming Application: Streams, Stream Processors and Sc...confluent
 
Flink Forward Berlin 2017 Keynote: Ferd Scheepers - Taking away customer fric...
Flink Forward Berlin 2017 Keynote: Ferd Scheepers - Taking away customer fric...Flink Forward Berlin 2017 Keynote: Ferd Scheepers - Taking away customer fric...
Flink Forward Berlin 2017 Keynote: Ferd Scheepers - Taking away customer fric...Flink Forward
 
A Practical Guide to Selecting a Stream Processing Technology
A Practical Guide to Selecting a Stream Processing Technology A Practical Guide to Selecting a Stream Processing Technology
A Practical Guide to Selecting a Stream Processing Technology confluent
 
Assisting millions of active users in real-time - Alexey Brodovshuk, Kcell; K...
Assisting millions of active users in real-time - Alexey Brodovshuk, Kcell; K...Assisting millions of active users in real-time - Alexey Brodovshuk, Kcell; K...
Assisting millions of active users in real-time - Alexey Brodovshuk, Kcell; K...Evention
 
Javier Lopez_Mihail Vieru - Flink in Zalando's World of Microservices - Flink...
Javier Lopez_Mihail Vieru - Flink in Zalando's World of Microservices - Flink...Javier Lopez_Mihail Vieru - Flink in Zalando's World of Microservices - Flink...
Javier Lopez_Mihail Vieru - Flink in Zalando's World of Microservices - Flink...Flink Forward
 
Apache Apex Fault Tolerance and Processing Semantics
Apache Apex Fault Tolerance and Processing SemanticsApache Apex Fault Tolerance and Processing Semantics
Apache Apex Fault Tolerance and Processing SemanticsApache Apex
 
Scaling stream data pipelines with Pravega and Apache Flink
Scaling stream data pipelines with Pravega and Apache FlinkScaling stream data pipelines with Pravega and Apache Flink
Scaling stream data pipelines with Pravega and Apache FlinkTill Rohrmann
 
Preparing Your Legacy Data for Automation in S1000D
Preparing Your Legacy Data for Automation in S1000DPreparing Your Legacy Data for Automation in S1000D
Preparing Your Legacy Data for Automation in S1000Ddclsocialmedia
 
Smart Partitioning with Apache Apex (Webinar)
Smart Partitioning with Apache Apex (Webinar)Smart Partitioning with Apache Apex (Webinar)
Smart Partitioning with Apache Apex (Webinar)Apache Apex
 

What's hot (16)

Flink Forward Berlin 2017: Bas Geerdink, Martijn Visser - Fast Data at ING - ...
Flink Forward Berlin 2017: Bas Geerdink, Martijn Visser - Fast Data at ING - ...Flink Forward Berlin 2017: Bas Geerdink, Martijn Visser - Fast Data at ING - ...
Flink Forward Berlin 2017: Bas Geerdink, Martijn Visser - Fast Data at ING - ...
 
Rapid Data Analytics @ Netflix
Rapid Data Analytics @ NetflixRapid Data Analytics @ Netflix
Rapid Data Analytics @ Netflix
 
quasardb: right to data
quasardb: right to dataquasardb: right to data
quasardb: right to data
 
Apache Flink(tm) - A Next-Generation Stream Processor
Apache Flink(tm) - A Next-Generation Stream ProcessorApache Flink(tm) - A Next-Generation Stream Processor
Apache Flink(tm) - A Next-Generation Stream Processor
 
Stream Processing with Apache Apex
Stream Processing with Apache ApexStream Processing with Apache Apex
Stream Processing with Apache Apex
 
Fault Tolerance and Processing Semantics in Apache Apex
Fault Tolerance and Processing Semantics in Apache ApexFault Tolerance and Processing Semantics in Apache Apex
Fault Tolerance and Processing Semantics in Apache Apex
 
The Art of The Event Streaming Application: Streams, Stream Processors and Sc...
The Art of The Event Streaming Application: Streams, Stream Processors and Sc...The Art of The Event Streaming Application: Streams, Stream Processors and Sc...
The Art of The Event Streaming Application: Streams, Stream Processors and Sc...
 
Flink Forward Berlin 2017 Keynote: Ferd Scheepers - Taking away customer fric...
Flink Forward Berlin 2017 Keynote: Ferd Scheepers - Taking away customer fric...Flink Forward Berlin 2017 Keynote: Ferd Scheepers - Taking away customer fric...
Flink Forward Berlin 2017 Keynote: Ferd Scheepers - Taking away customer fric...
 
A Practical Guide to Selecting a Stream Processing Technology
A Practical Guide to Selecting a Stream Processing Technology A Practical Guide to Selecting a Stream Processing Technology
A Practical Guide to Selecting a Stream Processing Technology
 
Assisting millions of active users in real-time - Alexey Brodovshuk, Kcell; K...
Assisting millions of active users in real-time - Alexey Brodovshuk, Kcell; K...Assisting millions of active users in real-time - Alexey Brodovshuk, Kcell; K...
Assisting millions of active users in real-time - Alexey Brodovshuk, Kcell; K...
 
Javier Lopez_Mihail Vieru - Flink in Zalando's World of Microservices - Flink...
Javier Lopez_Mihail Vieru - Flink in Zalando's World of Microservices - Flink...Javier Lopez_Mihail Vieru - Flink in Zalando's World of Microservices - Flink...
Javier Lopez_Mihail Vieru - Flink in Zalando's World of Microservices - Flink...
 
Apache Apex Fault Tolerance and Processing Semantics
Apache Apex Fault Tolerance and Processing SemanticsApache Apex Fault Tolerance and Processing Semantics
Apache Apex Fault Tolerance and Processing Semantics
 
Scaling stream data pipelines with Pravega and Apache Flink
Scaling stream data pipelines with Pravega and Apache FlinkScaling stream data pipelines with Pravega and Apache Flink
Scaling stream data pipelines with Pravega and Apache Flink
 
Preparing Your Legacy Data for Automation in S1000D
Preparing Your Legacy Data for Automation in S1000DPreparing Your Legacy Data for Automation in S1000D
Preparing Your Legacy Data for Automation in S1000D
 
DEEPAK SHARMA
DEEPAK SHARMADEEPAK SHARMA
DEEPAK SHARMA
 
Smart Partitioning with Apache Apex (Webinar)
Smart Partitioning with Apache Apex (Webinar)Smart Partitioning with Apache Apex (Webinar)
Smart Partitioning with Apache Apex (Webinar)
 

Similar to Are we there Yet?? (The long journey of Migrating from close source to opensource solution

Lessons Learned Replatforming A Large Machine Learning Application To Apache ...
Lessons Learned Replatforming A Large Machine Learning Application To Apache ...Lessons Learned Replatforming A Large Machine Learning Application To Apache ...
Lessons Learned Replatforming A Large Machine Learning Application To Apache ...Databricks
 
Behavior-Driven Development (BDD) Testing with Apache Spark with Aaron Colcor...
Behavior-Driven Development (BDD) Testing with Apache Spark with Aaron Colcor...Behavior-Driven Development (BDD) Testing with Apache Spark with Aaron Colcor...
Behavior-Driven Development (BDD) Testing with Apache Spark with Aaron Colcor...Databricks
 
Data Modeling and Scale Out - ScaleBase + 451-Group webinar 30.4.2015
Data Modeling and Scale Out - ScaleBase + 451-Group webinar 30.4.2015 Data Modeling and Scale Out - ScaleBase + 451-Group webinar 30.4.2015
Data Modeling and Scale Out - ScaleBase + 451-Group webinar 30.4.2015 Vladi Vexler
 
Data Migration Done Right for Microsoft Dynamics 365/CRM
Data Migration Done Right for Microsoft Dynamics 365/CRMData Migration Done Right for Microsoft Dynamics 365/CRM
Data Migration Done Right for Microsoft Dynamics 365/CRMDaniel Cai
 
Challenges of Operationalising Data Science in Production
Challenges of Operationalising Data Science in ProductionChallenges of Operationalising Data Science in Production
Challenges of Operationalising Data Science in Productioniguazio
 
Enterprise Data World 2018 - Building Cloud Self-Service Analytical Solution
Enterprise Data World 2018 - Building Cloud Self-Service Analytical SolutionEnterprise Data World 2018 - Building Cloud Self-Service Analytical Solution
Enterprise Data World 2018 - Building Cloud Self-Service Analytical SolutionDmitry Anoshin
 
From Pipelines to Refineries: scaling big data applications with Tim Hunter
From Pipelines to Refineries: scaling big data applications with Tim HunterFrom Pipelines to Refineries: scaling big data applications with Tim Hunter
From Pipelines to Refineries: scaling big data applications with Tim HunterDatabricks
 
Software development planning and essentials
Software development planning and essentialsSoftware development planning and essentials
Software development planning and essentialsRajesh P
 
Software development planning and essentials
Software development planning and essentialsSoftware development planning and essentials
Software development planning and essentialsRajesh P
 
DMM9 - Data Migration Testing
DMM9 - Data Migration TestingDMM9 - Data Migration Testing
DMM9 - Data Migration TestingNick van Beest
 
Sql server tips from the field
Sql server tips from the fieldSql server tips from the field
Sql server tips from the fieldJoAnna Cheshire
 
Rsqrd AI: How to Design a Reliable and Reproducible Pipeline
Rsqrd AI: How to Design a Reliable and Reproducible PipelineRsqrd AI: How to Design a Reliable and Reproducible Pipeline
Rsqrd AI: How to Design a Reliable and Reproducible PipelineSanjana Chowdhury
 
Why retail companies can't afford database downtime
Why retail companies can't afford database downtimeWhy retail companies can't afford database downtime
Why retail companies can't afford database downtimeDBmaestro - Database DevOps
 
Data Warehouse Optimization
Data Warehouse OptimizationData Warehouse Optimization
Data Warehouse OptimizationCloudera, Inc.
 
DBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
DBmaestro's State of the Database Continuous Delivery Survey- Findings RevealedDBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
DBmaestro's State of the Database Continuous Delivery Survey- Findings RevealedDBmaestro - Database DevOps
 
Delivering Changes for Applications and Databases
Delivering Changes for Applications and DatabasesDelivering Changes for Applications and Databases
Delivering Changes for Applications and DatabasesMiguel Alho
 
ADV Slides: Platforming Your Data for Success – Databases, Hadoop, Managed Ha...
ADV Slides: Platforming Your Data for Success – Databases, Hadoop, Managed Ha...ADV Slides: Platforming Your Data for Success – Databases, Hadoop, Managed Ha...
ADV Slides: Platforming Your Data for Success – Databases, Hadoop, Managed Ha...DATAVERSITY
 
AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...
AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...
AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...Amazon Web Services
 
Options for Data Prep - A Survey of the Current Market
Options for Data Prep - A Survey of the Current MarketOptions for Data Prep - A Survey of the Current Market
Options for Data Prep - A Survey of the Current MarketDremio Corporation
 
Power to the People: A Stack to Empower Every User to Make Data-Driven Decisions
Power to the People: A Stack to Empower Every User to Make Data-Driven DecisionsPower to the People: A Stack to Empower Every User to Make Data-Driven Decisions
Power to the People: A Stack to Empower Every User to Make Data-Driven DecisionsLooker
 

Similar to Are we there Yet?? (The long journey of Migrating from close source to opensource solution (20)

Lessons Learned Replatforming A Large Machine Learning Application To Apache ...
Lessons Learned Replatforming A Large Machine Learning Application To Apache ...Lessons Learned Replatforming A Large Machine Learning Application To Apache ...
Lessons Learned Replatforming A Large Machine Learning Application To Apache ...
 
Behavior-Driven Development (BDD) Testing with Apache Spark with Aaron Colcor...
Behavior-Driven Development (BDD) Testing with Apache Spark with Aaron Colcor...Behavior-Driven Development (BDD) Testing with Apache Spark with Aaron Colcor...
Behavior-Driven Development (BDD) Testing with Apache Spark with Aaron Colcor...
 
Data Modeling and Scale Out - ScaleBase + 451-Group webinar 30.4.2015
Data Modeling and Scale Out - ScaleBase + 451-Group webinar 30.4.2015 Data Modeling and Scale Out - ScaleBase + 451-Group webinar 30.4.2015
Data Modeling and Scale Out - ScaleBase + 451-Group webinar 30.4.2015
 
Data Migration Done Right for Microsoft Dynamics 365/CRM
Data Migration Done Right for Microsoft Dynamics 365/CRMData Migration Done Right for Microsoft Dynamics 365/CRM
Data Migration Done Right for Microsoft Dynamics 365/CRM
 
Challenges of Operationalising Data Science in Production
Challenges of Operationalising Data Science in ProductionChallenges of Operationalising Data Science in Production
Challenges of Operationalising Data Science in Production
 
Enterprise Data World 2018 - Building Cloud Self-Service Analytical Solution
Enterprise Data World 2018 - Building Cloud Self-Service Analytical SolutionEnterprise Data World 2018 - Building Cloud Self-Service Analytical Solution
Enterprise Data World 2018 - Building Cloud Self-Service Analytical Solution
 
From Pipelines to Refineries: scaling big data applications with Tim Hunter
From Pipelines to Refineries: scaling big data applications with Tim HunterFrom Pipelines to Refineries: scaling big data applications with Tim Hunter
From Pipelines to Refineries: scaling big data applications with Tim Hunter
 
Software development planning and essentials
Software development planning and essentialsSoftware development planning and essentials
Software development planning and essentials
 
Software development planning and essentials
Software development planning and essentialsSoftware development planning and essentials
Software development planning and essentials
 
DMM9 - Data Migration Testing
DMM9 - Data Migration TestingDMM9 - Data Migration Testing
DMM9 - Data Migration Testing
 
Sql server tips from the field
Sql server tips from the fieldSql server tips from the field
Sql server tips from the field
 
Rsqrd AI: How to Design a Reliable and Reproducible Pipeline
Rsqrd AI: How to Design a Reliable and Reproducible PipelineRsqrd AI: How to Design a Reliable and Reproducible Pipeline
Rsqrd AI: How to Design a Reliable and Reproducible Pipeline
 
Why retail companies can't afford database downtime
Why retail companies can't afford database downtimeWhy retail companies can't afford database downtime
Why retail companies can't afford database downtime
 
Data Warehouse Optimization
Data Warehouse OptimizationData Warehouse Optimization
Data Warehouse Optimization
 
DBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
DBmaestro's State of the Database Continuous Delivery Survey- Findings RevealedDBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
DBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
 
Delivering Changes for Applications and Databases
Delivering Changes for Applications and DatabasesDelivering Changes for Applications and Databases
Delivering Changes for Applications and Databases
 
ADV Slides: Platforming Your Data for Success – Databases, Hadoop, Managed Ha...
ADV Slides: Platforming Your Data for Success – Databases, Hadoop, Managed Ha...ADV Slides: Platforming Your Data for Success – Databases, Hadoop, Managed Ha...
ADV Slides: Platforming Your Data for Success – Databases, Hadoop, Managed Ha...
 
AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...
AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...
AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...
 
Options for Data Prep - A Survey of the Current Market
Options for Data Prep - A Survey of the Current MarketOptions for Data Prep - A Survey of the Current Market
Options for Data Prep - A Survey of the Current Market
 
Power to the People: A Stack to Empower Every User to Make Data-Driven Decisions
Power to the People: A Stack to Empower Every User to Make Data-Driven DecisionsPower to the People: A Stack to Empower Every User to Make Data-Driven Decisions
Power to the People: A Stack to Empower Every User to Make Data-Driven Decisions
 

More from Marco Tusa

Percona xtra db cluster(pxc) non blocking operations, what you need to know t...
Percona xtra db cluster(pxc) non blocking operations, what you need to know t...Percona xtra db cluster(pxc) non blocking operations, what you need to know t...
Percona xtra db cluster(pxc) non blocking operations, what you need to know t...Marco Tusa
 
My sql on kubernetes demystified
My sql on kubernetes demystifiedMy sql on kubernetes demystified
My sql on kubernetes demystifiedMarco Tusa
 
Comparing high availability solutions with percona xtradb cluster and percona...
Comparing high availability solutions with percona xtradb cluster and percona...Comparing high availability solutions with percona xtradb cluster and percona...
Comparing high availability solutions with percona xtradb cluster and percona...Marco Tusa
 
Accessing data through hibernate: what DBAs should tell to developers and vic...
Accessing data through hibernate: what DBAs should tell to developers and vic...Accessing data through hibernate: what DBAs should tell to developers and vic...
Accessing data through hibernate: what DBAs should tell to developers and vic...Marco Tusa
 
Best practice-high availability-solution-geo-distributed-final
Best practice-high availability-solution-geo-distributed-finalBest practice-high availability-solution-geo-distributed-final
Best practice-high availability-solution-geo-distributed-finalMarco Tusa
 
MySQL innoDB split and merge pages
MySQL innoDB split and merge pagesMySQL innoDB split and merge pages
MySQL innoDB split and merge pagesMarco Tusa
 
Robust ha solutions with proxysql
Robust ha solutions with proxysqlRobust ha solutions with proxysql
Robust ha solutions with proxysqlMarco Tusa
 
Fortify aws aurora_proxy_2019_pleu
Fortify aws aurora_proxy_2019_pleuFortify aws aurora_proxy_2019_pleu
Fortify aws aurora_proxy_2019_pleuMarco Tusa
 
Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...
Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...
Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...Marco Tusa
 
Improve aws withproxysql
Improve aws withproxysqlImprove aws withproxysql
Improve aws withproxysqlMarco Tusa
 
Fortify aws aurora_proxy
Fortify aws aurora_proxyFortify aws aurora_proxy
Fortify aws aurora_proxyMarco Tusa
 
Mysql8 advance tuning with resource group
Mysql8 advance tuning with resource groupMysql8 advance tuning with resource group
Mysql8 advance tuning with resource groupMarco Tusa
 
Proxysql sharding
Proxysql shardingProxysql sharding
Proxysql shardingMarco Tusa
 
Geographically dispersed perconaxtra db cluster deployment
Geographically dispersed perconaxtra db cluster deploymentGeographically dispersed perconaxtra db cluster deployment
Geographically dispersed perconaxtra db cluster deploymentMarco Tusa
 
Sync rep aurora_2016
Sync rep aurora_2016Sync rep aurora_2016
Sync rep aurora_2016Marco Tusa
 
Proxysql ha plam_2016_2_keynote
Proxysql ha plam_2016_2_keynoteProxysql ha plam_2016_2_keynote
Proxysql ha plam_2016_2_keynoteMarco Tusa
 
Empower my sql server administration with 5.7 instruments
Empower my sql server administration with 5.7 instrumentsEmpower my sql server administration with 5.7 instruments
Empower my sql server administration with 5.7 instrumentsMarco Tusa
 
Galera explained 3
Galera explained 3Galera explained 3
Galera explained 3Marco Tusa
 
Plmce 14 be a_hero_16x9_final
Plmce 14 be a_hero_16x9_finalPlmce 14 be a_hero_16x9_final
Plmce 14 be a_hero_16x9_finalMarco Tusa
 
Scaling with sync_replication using Galera and EC2
Scaling with sync_replication using Galera and EC2Scaling with sync_replication using Galera and EC2
Scaling with sync_replication using Galera and EC2Marco Tusa
 

More from Marco Tusa (20)

Percona xtra db cluster(pxc) non blocking operations, what you need to know t...
Percona xtra db cluster(pxc) non blocking operations, what you need to know t...Percona xtra db cluster(pxc) non blocking operations, what you need to know t...
Percona xtra db cluster(pxc) non blocking operations, what you need to know t...
 
My sql on kubernetes demystified
My sql on kubernetes demystifiedMy sql on kubernetes demystified
My sql on kubernetes demystified
 
Comparing high availability solutions with percona xtradb cluster and percona...
Comparing high availability solutions with percona xtradb cluster and percona...Comparing high availability solutions with percona xtradb cluster and percona...
Comparing high availability solutions with percona xtradb cluster and percona...
 
Accessing data through hibernate: what DBAs should tell to developers and vic...
Accessing data through hibernate: what DBAs should tell to developers and vic...Accessing data through hibernate: what DBAs should tell to developers and vic...
Accessing data through hibernate: what DBAs should tell to developers and vic...
 
Best practice-high availability-solution-geo-distributed-final
Best practice-high availability-solution-geo-distributed-finalBest practice-high availability-solution-geo-distributed-final
Best practice-high availability-solution-geo-distributed-final
 
MySQL innoDB split and merge pages
MySQL innoDB split and merge pagesMySQL innoDB split and merge pages
MySQL innoDB split and merge pages
 
Robust ha solutions with proxysql
Robust ha solutions with proxysqlRobust ha solutions with proxysql
Robust ha solutions with proxysql
 
Fortify aws aurora_proxy_2019_pleu
Fortify aws aurora_proxy_2019_pleuFortify aws aurora_proxy_2019_pleu
Fortify aws aurora_proxy_2019_pleu
 
Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...
Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...
Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...
 
Improve aws withproxysql
Improve aws withproxysqlImprove aws withproxysql
Improve aws withproxysql
 
Fortify aws aurora_proxy
Fortify aws aurora_proxyFortify aws aurora_proxy
Fortify aws aurora_proxy
 
Mysql8 advance tuning with resource group
Mysql8 advance tuning with resource groupMysql8 advance tuning with resource group
Mysql8 advance tuning with resource group
 
Proxysql sharding
Proxysql shardingProxysql sharding
Proxysql sharding
 
Geographically dispersed perconaxtra db cluster deployment
Geographically dispersed perconaxtra db cluster deploymentGeographically dispersed perconaxtra db cluster deployment
Geographically dispersed perconaxtra db cluster deployment
 
Sync rep aurora_2016
Sync rep aurora_2016Sync rep aurora_2016
Sync rep aurora_2016
 
Proxysql ha plam_2016_2_keynote
Proxysql ha plam_2016_2_keynoteProxysql ha plam_2016_2_keynote
Proxysql ha plam_2016_2_keynote
 
Empower my sql server administration with 5.7 instruments
Empower my sql server administration with 5.7 instrumentsEmpower my sql server administration with 5.7 instruments
Empower my sql server administration with 5.7 instruments
 
Galera explained 3
Galera explained 3Galera explained 3
Galera explained 3
 
Plmce 14 be a_hero_16x9_final
Plmce 14 be a_hero_16x9_finalPlmce 14 be a_hero_16x9_final
Plmce 14 be a_hero_16x9_final
 
Scaling with sync_replication using Galera and EC2
Scaling with sync_replication using Galera and EC2Scaling with sync_replication using Galera and EC2
Scaling with sync_replication using Galera and EC2
 

Recently uploaded

My Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle BaileyMy Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle Baileyhlharris
 
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptxChiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptxraffaeleoman
 
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdfSOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdfMahamudul Hasan
 
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfAWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfSkillCertProExams
 
Dreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video TreatmentDreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video Treatmentnswingard
 
If this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New NigeriaIf this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New NigeriaKayode Fayemi
 
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...David Celestin
 
Digital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of DrupalDigital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of DrupalFabian de Rijk
 
Dreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio IIIDreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio IIINhPhngng3
 
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...amilabibi1
 
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdfThe workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdfSenaatti-kiinteistöt
 
Report Writing Webinar Training
Report Writing Webinar TrainingReport Writing Webinar Training
Report Writing Webinar TrainingKylaCullinane
 
Uncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoUncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoKayode Fayemi
 
lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.lodhisaajjda
 

Recently uploaded (15)

My Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle BaileyMy Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle Bailey
 
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptxChiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
 
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdfSOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
 
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfAWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
 
ICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdfICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdf
 
Dreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video TreatmentDreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video Treatment
 
If this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New NigeriaIf this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New Nigeria
 
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
 
Digital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of DrupalDigital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of Drupal
 
Dreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio IIIDreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio III
 
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
Bring back lost lover in USA, Canada ,Uk ,Australia ,London Lost Love Spell C...
 
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdfThe workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
 
Report Writing Webinar Training
Report Writing Webinar TrainingReport Writing Webinar Training
Report Writing Webinar Training
 
Uncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoUncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac Folorunso
 
lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.
 

Are we there Yet?? (The long journey of Migrating from close source to opensource solution

  • 1. Are we there Yet?? (The long journey of Migrating from close source to opensource solution) Marco (the Grinch) Tusa Percona
  • 2. 2 • Open source enthusiast • Consulting team manager • Principal Architect • Working in DB world from 25 years • Open source developer and community contributor About me
  • 4. Gartner predicts by 2022: § Half of existing commercial database instances will have migrated or will be in process of migrating to an Open Source DBMS § More than 70% of greenfield applications will use an Open Source DBMS
  • 5. Motivations § Average annual spend for enterprise database support: 5M-20M § Annually compounding support costs are no longer tolerable Challenges and Risks § 78% - Reported migration projects more difficult than expected § 65% - Expect the planning to take more than 6 months § 90% - Reported migration projects took longer than expected Migration Services - Mitigating the Risk - Getting it Right
  • 6. Three Questions Why migrate What can migrate How to succeed
  • 7. Common reasons to migrate Cost 60% Business Reasons (Politics) 35% Technical requirements 5%
  • 8. Migration was a THING from long • Now a huge business • There is a lot of confusion (too many simplifications) • Business/Politics often overcome Technical reasons and common sense Correct expectations is the key
  • 9. This is not a new thing Migration from close source to open source is OLD 2008 pre SUN 2010 Oracle
  • 10. Migrate to what? Migration from premises to cloud is not new as well Premises VS Cloud Or The place where you know you need SAs and DBAs and fantasyland where all works by magic
  • 11. Migrate to what? Migration to MySQL/MariaDB or PG ? Or something else???
  • 12. What are the most common steps? First of all, do not rush take the right time to do all well • Understand • Map • Rewrite • Code/SQL • Move data • Test • Go Live 4 Main phases: 1. Assessment 2. POC 3. Migrate 4. Go Live
  • 13. Assessment The journey will be long … do not start if you are not sure about Not everything can be migrated, but you don’t know Not all the schemas will take the same time, but you don’t know Not all the code can be rewritten, but you do not know You need to KNOW before you move a finger
  • 14. POC A Proof Of Concept is: evidence sufficient to establish a thing as true, or to produce belief in its truth. As such is a critical moment to define if what was Assess can be done or not. Test … test … test Not only port the data Performance & functionalities Be courageous, and if it will not work, be ready to drop
  • 15. Migrate Apply knowledge acquire during POC to Transform schemas Rewrite or export code Move data Implement DBOps procedure (db optimizations; backup/restore: etc) Test applications
  • 16. Go live Replicate data Keep it up to date Cutover time Sounds simple right? I have news for you, it is not!
  • 17. Defining the Process - Migration Methodology Analyze Understand Map Src/Dest Re/Design Extract Src Convert Import Schemas dataLogic PartitionIndexTest/POCValidate Something Breaks Success Defining the Process - Migration Methodology Analyze Understand Map Src/Dest Re/Design Extract Src Convert Import Schemas dataLogic PartitionIndexTest/POCValidate Something Breaks Success
  • 18. 18 I like to start from : • Scalability and Flexibility • High Performance • High Availability • Robust Transactional Support • Web and Data Warehouse Strengths • Strong Data Protection • Comprehensive Application Development • Management Ease • Open Source Freedom and 24 x 7 Support • Lowest Total Cost of Ownership Why MySQL Or Postgres
  • 19. 19 10 things to know about MySQL 1 Subqueries are poorly optimized (still true) 2 Data integrity checking is very weak, and even basic integrity constraints cannot always be enforced. (replication) 3 Most queries can use only a single index per table; multi-index query plans exist in certain cases, but the cost is usually underestimated by the query optimizer, and they are often slower than a table scan. 4 Foreign keys are not supported in most storage engines. 5 Execution plans are not cached globally, only per-connection. 6 There are no integrated or add-on business intelligence, OLAP cube, etc packages. 7 There are no materialized views (also if we can use Event scheduler) 8 Native replication is asynchronous and has many limitations and edge cases. 9 DDL such as ALTER TABLE or CREATE TABLE is non-transactional. It commits open transactions and cannot be rolled back or crash-recovered. 10 Each storage engine can have widely varying behavior, features, and properties. (positive and negative)
  • 20. 20 4 things to know about Postgres 1. Changing Primary on a secondary require service restart 2. Partitions implemented as separate tables 3. Also minor version upgrade can be difficult (start from the Primary VS MySQL start from the last Slave) 4. Global Temporary table do not exists
  • 21. 21 The Motto Use the right tool for the job
  • 22. Let us see some more details Click to add text
  • 23. The assessment Prepare a plan, and do not improvise • Talk with Stakeholders (business/DBA/developers) • Analyze the source (from application to data design) • Identify show stoppers • Identify how to map what to what • Identify how to organize the target Most important: Be ready to do not force migration. If it does not make sense to proceed, STOP!
  • 24. 24 • Database is used only to store data all the logic reside in the application • Database contains logic such as stored procedure and complex package • Database containing data for data warehouse • Real time data and historical records (telephone company) Most common source cases
  • 25. 25 When analyzing the source database(s) what should be the outcome? • Easy to understand list of what is and out • Identify Source type (Simple data move; data + code; etc.) • In detail review per schema of complexity • Assessment of modification and effort database objects • Assessment of functions/functionalities used (also in the application) not always possible • Application assessment and review The assessment Mitigating risk of failure
  • 26. The assessment how it looks like Migration levels (ML): 1. Migration that can be run automatically 2. Migration with code rewrite and a human-days cost up to 10 days 3. Migration with code rewrite and a human-days cost up to 30 days 4. Migration with code rewrite and a human-days cost up to 60 days 5. Migration with code rewrite and a human-days cost above 60 days 6. Not portable: Application code is dependent by the DB platform and is not possible to change the application code Sub technical levels: ML.1 = trivial: no stored functions and no triggers ML.2 = easy: no stored functions but with triggers, no manual rewriting ML.3 = simple: stored functions and/or triggers, no manual rewriting ML.4 = manual: no stored functions but with triggers or views with code rewriting ML.5 = difficult: stored functions and/or triggers with code rewriting
  • 27. The assessment how it looks like Schema Application Man days Hestimated instances Man days per schema type Difficulty Level Color code ABC Drupal 2.0 1 2 1-1 DEF wordpres 1.0 1 1 1-1 GHI My Java app 1.5 1 1.5 1-1 LMN Sales App 2.0 1 2 1-1 OPQR Booking 2.0 1 2 1-1 STV Insurances 5.0 12 30 3-3 Z1 Tikets 12 10 48 4-5(*)(**) AA1 Advertise 2.00 19 30 1-1* AA2 Network App 2.0 200 80 1-1* *Per instance **Schema may take short time, but Store procedure require rewrite
  • 28. The assessment how it looks like Schema Application Man days Difficulty Level Color code (PG) Color code (My) Schema1 App1 64 5.5 Schema2 App2 1 1.1 Schema3 App2 200 5.5 Schema4 App2 10 2.5 Schema5 App3 250 6.5 Schema6 App4 150 5.4
  • 29. The assessment how it looks like High 23 DBMS_UTILITY 1 UTL_FILE 21 Virtual Column Partitions 1 Low 190 BTreeIndexes 1 Bulk Collect 5 CLOB Data Types 6 Cursors 2 DBMS_OUTPUT 33 Float DataTypes 1 Raw Data Type 3 Sequences 133 TableTriggers 4 Views 2 Medium 90 Functions 51 Stored Procedures 33 User Defined Types 6 Grand Total 303 high, 8 Medium, 30 Low, 63 MYSQL COMPLEXITY DISTRIBUTION
  • 30. Converting schemas Correct datatypes identification Identify different and problematic objects like materialized view Global temporary tables etc. Open source tools exists to support you during this part: • Ora2PG • SQLines Not Open source • AWS Schema Conversion Tool • Oracle to MySQL converter • Inspirer SQLWays
  • 31. 31 Understanding DDL differences Identify conversion between Oracle and MySQL for • Tables • Views • Procedures • Functions • Packages • Triggers • Sequences, synonyms etc. I.e. data types: Converting schemas MySQL Data Type Oracle Data Type BIGINT NUMBER(19, 0) BIT RAW BLOB BLOB, RAW CHAR CHAR DATE DATE DATETIME DATE DECIMAL FLOAT (24) DOUBLE FLOAT (24) DOUBLE PRECISION FLOAT (24) ENUM VARCHAR2 FLOAT FLOAT MySQL Data Type Oracle Data Type INT NUMBER(10, 0) INTEGER NUMBER(10, 0) LONGBLOB BLOB, RAW LONGTEXT CLOB, RAW MEDIUMBLOB BLOB, RAW MEDIUMINT NUMBER(7, 0) MEDIUMTEXT CLOB, RAW NUMERIC NUMBER REAL FLOAT (24) SET VARCHAR2 SMALLINT NUMBER(5, 0) TEXT VARCHAR2, CLOB TIME DATE TIMESTAMP DATE TINYBLOB RAW TINYINT NUMBER(3, 0) TINYTEXT VARCHAR2 VARCHAR VARCHAR2, CLOB YEAR NUMBER
  • 32. Converting schemas • Re-organize the schema/table not just convert data types • Storage engines • Index full redesign • Data organization • Sharding • Partition • Logic rewrite • Inside MySQL • Move to application
  • 33. 33 1. Join syntax 2. SQL_mode 3. Data comparison using collation 4. other common differences: SQL macro differences NVL() --> IFNULL() ROWNUM --> LIMIT SEQ.CURRVAL --> LAST_INSERT_ID() SEQ.NEXTVAL --> NULL NO DUAL necessary (SELECT NOW()) NO DECODE() --> IF() CASE() JOIN (+) Syntax --> INNER|OUTER LEFT|RIGHT No Hierarchical (connect to prior) Converting SQL
  • 34. Exporting data 3 Different types: • Easy, Medium (Ora2PG; SQLines Data; other tools) • Large and complex (SqlWays; exporting code) • Huge and over (Write proper exporting code)
  • 35. 35 Understanding Function Triggers difference Given The relevance in a Migration of the presence of SP/Trigger it is worth to talk about it a little bit more in details Procedure and triggers difference • one trigger for event in MySQL, all the different actions needs to be group • no packages, workaround using a fake schema • different behavior by storage engine and if transactional or not • Security assignments and security definer/invoker • Very basic error handling. Mitigating risk of failure with the code
  • 36. 36 Understanding Function Triggers difference MySQL stored programs can often add to application functionality and developer efficiency, and there are certainly many cases where the use of a procedural language such as the MySQL stored program language can do things that a non procedural language like SQL cannot. There are also a number of reasons why a MySQL stored program approach may offer performance improvements over a traditional SQL approach • It provides a procedural approach (SQL is a declarative, non procedural language) • It reduces client-server traffic • It allows us to divide and conquer complex statements But… Mitigating risk of failure with code
  • 37. 37 Understanding Function Triggers difference One graph tells more then 1,000 words: Mitigating risk of failure with the code
  • 38. 38 Understanding Function Triggers difference IF and CASE Statements When constructing IF and CASE statements, try to minimize the number of comparisons that these statements are likely to make by testing for the most likely scenarios first. For instance, in the code in the next slide, the first statement maintains counts of various percentages. Assuming that the input data is evenly distributed, the first IF condition (percentage>95) will match about once in every 20 executions. On the other hand, the final condition will match in three out of four executions. So this means that for 75% of the cases, all four comparisons will need to be evaluated. Mitigating risk of failure with the code
  • 39. 39 Understanding Function Triggers difference Non Optimized IF (percentage>95) THEN SET Above95=Above95+1; ELSEIF (percentage >=90) THEN SET Range90to95=Range90to95+1; ELSEIF (percentage >=75) THEN SET Range75to89=Range75to89+1; ELSE SET LessThan75=LessThan75+1; END IF; Optimized IF (percentage<75) THEN SET LessThan75=LessThan75+1; ELSEIF (percentage >=75 AND percentage<90) THEN SET Range75to89=Range75to89+1; ELSEIF (percentage >=90 and percentage <=95) THEN SET Range90to95=Range90to95+1; ELSE SET Above95=Above95+1; END IF; Mitigating risk of failure with the code
  • 40. 40 Understanding Function Triggers difference Mitigating risk of failure with the code Looks simple and the effect is relevant:
  • 41. 41 Understanding Function Triggers difference Using Recursion A recursive routine is one that invokes itself. Recursive routines often offer elegant solutions to complex programming problems, but they also tend to consume large amounts of memory. They are also likely to be less efficient and less scalable than implementations based on iterative execution. Mitigating risk of failure with the code
  • 42. 42 Understanding Function Triggers difference Mitigating risk of failure with the code Recursive CREATE PROCEDURE rec_fib(n INT,OUT out_fib INT) BEGIN DECLARE n_1 INT; DECLARE n_2 INT; IF (n=0) THEN SET out_fib=0; ELSEIF (n=1) then SET out_fib=1; ELSE CALL rec_fib(n-1,n_1); CALL rec_fib(n-2,n_2); SET out_fib=(n_1 + n_2); END IF; END Not Recursive CREATE PROCEDURE nonrec_fib(n INT,OUT out_fib INT) BEGIN DECLARE m INT default 0; DECLARE k INT DEFAULT 1; DECLARE i INT; DECLARE tmp INT; SET m=0; SET k=1; SET i=1; WHILE (i<=n) DO SET tmp=m+k; SET m=k; SET k=tmp; SET i=i+1; END WHILE; SET out_fib=m; END
  • 43. 43 Understanding Function Triggers difference Mitigating risk of failure with the code The difference is quite impressive and evident
  • 44. 44 Understanding Function Triggers difference Mitigating risk of failure with the code When you need to retrieve only a single row from a SELECT statement, using the INTO clause is far easier than declaring, opening, fetching from, and closing a cursor. But does the INTO clause generate some additional work for MySQL or could the INTO clause be more efficient than a cursor?
  • 45. 45 Understanding Function Triggers difference Trigger Overhead Every database trigger is associated with a specific DML operation (INSERT, UPDATE, or DELETE) on a specific table the trigger code will execute whenever that DML operation occurs on that table. Furthermore, all MySQL 8.x triggers are of the FOR EACH ROW type, which means that the trigger code will execute once for each row affected by the DML operation. Given that a single DML operation might potentially affect thousands of rows, should we be concerned that our triggers might have a negative effect on DML performance? Absolutely yes! Mitigating risk of failure with the code
  • 46. 46 Understanding Function Triggers difference Mitigating risk of failure with the code When using Trigger be ALWAYS sure to have the right indexes.
  • 47. 47 ²Don’t work Alone ²Involve Oracle experienced DBA ²Involve MySQL experience DBA ²Involve the developers ²Use real data ²Use real traffic ²Take one source for each type; start with the easy one Go Back to the analysis phase if you have to Prepare for the POC
  • 48. Ok I have migrate all … now what ??
  • 49. Lorem Ipsum market share • Lorem ipsum dolor sit amet • Curabitur scelerisque malesuada auctor • Vestibulum molestie pharetra mauris • Donec finibus mi eu ultricies tincidunt Lorem Ipsum Dolor sit amet Vestibulum Donec mollis
  • 50. Lorem Ipsum some title here and there Hired the Two Bobs as Consultants They cherish the power to fire people at will They also cherish and celebrate Michael Bolton Peter Gibbons interviewed by the Two Bobs Expresses loathing and disdain for his job Immediately promoted to management Michael Bolton interviewed by the Two Bobs Lies about liking Michael Bolton to keep his job Fired anyway
  • 52. Another slide Title Past Keyote Speakers: • Lorem Sapien • Justo Nulem • Finibus Proin • Aliquam Hendrerit • Donec Dapibus • Tempus Orci
  • 53. IniTech Culture and Values We put cover sheets on TPS reports Did you get the memo about the cover sheets? If you could go ahead and start using the cover sheet, that would be great. Mkay? Oh, and Friday is Hawaiian shirt day Focused 100% on Cover Sheets
  • 54. Vendor Agnostic Lorem Ipsum Performance Services Lorem, Ipsum, Dolar, Sit Amet, Vestibulum, Consectetu Vestibulum molestie pharetra mauris condimentum mollis. • Nemo enim ipsam voluptatem quia voluptas sit aspernatur • Neque porro quisquam est • We are great at Lorem and Ipsum • Ut enim ad minima veniam! Build Fix Optimize Manage