In this webinar
How do you get data from your existing relational databases changed by third party applications into your Hazelcast maps? How do you accomplish this if you have several databases, located on different sites, that need to be aggregated into a global Hazelcast map? How is it possible to reflect data from a relational database that has ten thousand updates per second or more?
Speedment’s SQL Reflector makes it possible to integrate your existing relational data with continuous updates of Hazelcast data-maps in real-time. In this webinar, we will show a couple of real-world cases where database applications are speeded up using Hazelcast maps fed by Speedment. We will also demonstrate how easily your existing database can be “reverse engineered” by the Speedment software that automatically creates efficient Java POJOs that can be used directly by Hazelcast.
We’ll cover these topics:
-Joint solution case studies
-Demo
-Live Q&A
Presenter:
Per-Åke Minborg, CTO at Speedment
Per-Åke Minborg is founder and CTO at Speedment AB. He is a passionate Java developer, dedicated to OpenSource software and an expert in finding new ways of solving problems – the harder problem the better. As a result, he has 15+ US patent applications and invention disclosures. He has a deep understanding of in-memory databases, high-performance solutions, cloud technologies and concurrent programming. He has previously served as CTO and founder of Chilirec and the Phone Pages. Per-Åke has a M.Sc. in Electrical Engineering from Chalmers University of Technology and several years of studies in computer science and computer security at university and PhD level.
4. THE JAVA DEVELOPER BEHIND THE STEERING WHEEL!
• The hot new solution
• Fast to develop applications
• Extreme database speed
5. TECHNOLOGY EVOLUTION
• Memory size exponentially doubles each 18:th month
• The number of CPU-cores [N] is increasing moderately
• Performance per CPU-core [P(N)] is increasing moderately
• P = N*P(N) is increasing exponentially
• "Cloud" deployment is popular
11. REFLECTS ALL DATA WITH HAZELCAST
Inserts
sql> insert into employees (emp_no, birth_date, first_name, last_name, gender, hire_date)
values (10001, '1953-09-02', 'Georgi', 'Facello', 'M', '1986-06-26');
10001 -> Employees { "emp_no": 10001, "birth_date": "1953-09-02", "first_name": "Georgi", "last_name":
"Facello", "gender": "M", "hire_date": "1986-06-26"}
Updates
sql> update employees set first_name="Georgi2" where emp_no=10001;
10001 -> Employees { "emp_no": 10001, "birth_date": "1953-09-02", "first_name": "Georgi2", "last_name":
"Facello", "gender": "M", "hire_date": "1986-06-26"}
Deletes
sql> delete from employees where emp_no = 10001;
10001 -> null
12. WORKS WITH TRANSACTIONS
SQL> START TRANSACTION;
update employees
set first_name="Duangkaew“
where emp_no=10010;
update salaries
set salary=salary+10
where id=12322;
COMMIT;
// Backing hazelcast maps are updated atomically
Employees emp = employeesMap.get("10001");
Salaries sal = salaryMap.get("12322");
13. HOW TO INSTALL
• Download software
• Unzip distribution file
• Start scripts in ”bin” directory
15. GENERATED CODE
• Everything you will need including POJOs and serialization factories are generated
automatically.
• Just add 4 lines of code in your Hazelcast application and you are good to go.
16. DATABASE TABLE
mysql> describe employees;
+------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+----------------+
| emp_no | int(11) | NO | PRI | NULL | auto_increment |
| birth_date | date | NO | | NULL | |
| first_name | varchar(14) | NO | | NULL | |
| last_name | varchar(16) | NO | | NULL | |
| gender | enum('M','F') | NO | | NULL | |
| hire_date | date | NO | | NULL | |
+------------+---------------+------+-----+---------+----------------+
17. POJO REPRESENTING A ROW
public class Employees extends Struct<Employees> implements
IdentifiedDataSerializable {
private Integer empNo;
private Date birthDate;
private String firstName;
private String lastName;
private String gender;
private Date hireDate;
// Accessors, serialization, deserialization, etc.
22. Work as you are used to, just add 4 lines of code in your startup class
Config hcConfig = new Config();
// Add optimized serialization Factories for Hazelcast that are generated automatically
SpeedmentHazelcastConfig.addTo(hcConfig);
HazelcastInstance hcInstance = Hazelcast.newHazelcastInstance(hcConfig);
// Tell Speedment what Hazelcast instance to use
ProjectManager.getInstance().putProperty(HazelcastInstance.class, hcInstance);
// Automatically build all Database metadata (e.g. Schema, Tables and Columns)
new TreeBuilder().build();
// Load selected data from the database into the Hazelcast maps and start tracking DB
ProjectManager.getInstance().init();
3) START CODING WITH HAZELCAST
23. MOBILE NETWORK OPERATOR
• Oracle database with:
• One active
• One hot standby
• One cool standby
• More than 100 GB data
26. SALES ORGANIZATION
• HQ in Sweden
• Local national offices in 8 other countries
• 3 to 25 shops in each country
• Most national offices have their own database
• Extract, Transform and Load (ETL)