20
© 2018 GridGain Systems, Inc. GridGain Company Confidential How to Add Speed and Scale to SQL, Support New Data Needs, and Keep Your RDBMS Valentin Kulichenko Apache Ignite PMC Member GridGain Lead Architect

speed scale sql · 2018-11-29 · Java .NET C++ PHP REST Memory-Centric Storage Server Node Server Node Server Node IN-MEMORY IN-MEMORY IN-MEMORY JDBC ODBC Distributed SQL Cross-platform

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: speed scale sql · 2018-11-29 · Java .NET C++ PHP REST Memory-Centric Storage Server Node Server Node Server Node IN-MEMORY IN-MEMORY IN-MEMORY JDBC ODBC Distributed SQL Cross-platform

©2018 GridGainSystems,Inc. GridGainCompanyConfidential

How to Add Speed and Scale to SQL,Support New Data Needs,

and Keep Your RDBMS

Valentin KulichenkoApache Ignite PMC MemberGridGain Lead Architect

Page 2: speed scale sql · 2018-11-29 · Java .NET C++ PHP REST Memory-Centric Storage Server Node Server Node Server Node IN-MEMORY IN-MEMORY IN-MEMORY JDBC ODBC Distributed SQL Cross-platform

©2018 GridGainSystems,Inc. GridGainCompanyConfidential

GridGain Platform Overview

Page 3: speed scale sql · 2018-11-29 · Java .NET C++ PHP REST Memory-Centric Storage Server Node Server Node Server Node IN-MEMORY IN-MEMORY IN-MEMORY JDBC ODBC Distributed SQL Cross-platform

©2018 GridGainSystems,Inc. GridGainCompanyConfidential

GridGain In-Memory Computing Platform

Secu

rity &

Aud

iting

Mon

itorin

g &

Man

agem

ent

Data

Sna

psho

ts &

Rec

over

y

Memory-Centric StorageScale to 1000s of Nodes & Store TBs of Data

Ignite Native Persistence(Flash, SSD, Intel 3D XPoint)

Third-Party PersistenceKeep Your Own DB

(RDBMS, HDFS, NoSQL)

SQL Transactions Compute Services MLStreamingKey/Value

IoTFinancialServices

Pharma &Healthcare

E-CommerceTravel & LogisticsTelco

Data

cent

erRe

plica

tion

Page 4: speed scale sql · 2018-11-29 · Java .NET C++ PHP REST Memory-Centric Storage Server Node Server Node Server Node IN-MEMORY IN-MEMORY IN-MEMORY JDBC ODBC Distributed SQL Cross-platform

©2018 GridGainSystems,Inc. GridGainCompanyConfidential

GridGain

Data Warehouse Operational DB

GridGain HTAP Architecture“IMC-enabled HTAP can have a transformational impact on the business.” — Gartner 2/17

TransactionsAnalytics, ML, AI

ETL

Analytics, ML, AI & Transactions

Real Time, Scalable, Available, Flexible

ETL, Batch, Inflexible

Page 5: speed scale sql · 2018-11-29 · Java .NET C++ PHP REST Memory-Centric Storage Server Node Server Node Server Node IN-MEMORY IN-MEMORY IN-MEMORY JDBC ODBC Distributed SQL Cross-platform

©2018 GridGainSystems,Inc. GridGainCompanyConfidential

FinTech

Financial Services Software Logistics & Travel

E-commerce

Telco

IoT

Pharma & HealthcareAdtech

GridGain Systems Customers

Page 6: speed scale sql · 2018-11-29 · Java .NET C++ PHP REST Memory-Centric Storage Server Node Server Node Server Node IN-MEMORY IN-MEMORY IN-MEMORY JDBC ODBC Distributed SQL Cross-platform

©2018 GridGainSystems,Inc. GridGainCompanyConfidential

Accelerating SQL

Page 7: speed scale sql · 2018-11-29 · Java .NET C++ PHP REST Memory-Centric Storage Server Node Server Node Server Node IN-MEMORY IN-MEMORY IN-MEMORY JDBC ODBC Distributed SQL Cross-platform

©2018 GridGainSystems,Inc. GridGainCompanyConfidential

Memory & Disk Utilization

Mode Description Major Advantage

In-Memory Pure In-Memory Storage Maximum perfomance possible(data is never written to disk)

In-Memory + 3rd Party DB Caching layer (aka. in-memory data grid) for existing databases – RDBMS, NoSQL, etc

Horizontal scalabilityFaster reads and writes

In-Memory + Full Copy on Disk The whole data set is stored both in memory and on disk Survives cluster failures

100% on Disk + In-Memory Cache 100% of data is in Ignite native persistence anda subset is in memory

Unlimited data scale beyond RAM capacity

Page 8: speed scale sql · 2018-11-29 · Java .NET C++ PHP REST Memory-Centric Storage Server Node Server Node Server Node IN-MEMORY IN-MEMORY IN-MEMORY JDBC ODBC Distributed SQL Cross-platform

©2018 GridGainSystems,Inc. GridGainCompanyConfidential

• Database Caching Use Case• Slide Ignite in between Database System and

applications• No ‘rip and replace’ Performance Boost

• Keep data both in memory and Database System

• Scale to 1000s of nodes• Automatic Read-Through and Write-Through

• Key-Value Operations Only• ANSI-99 SQL

• Over in-memory data sets

TurbochargingDatabaseSystem

Page 9: speed scale sql · 2018-11-29 · Java .NET C++ PHP REST Memory-Centric Storage Server Node Server Node Server Node IN-MEMORY IN-MEMORY IN-MEMORY JDBC ODBC Distributed SQL Cross-platform

©2018 GridGainSystems,Inc. GridGainCompanyConfidential

SQL

Java .NET C++ PHP REST

Memory-Centric Storage

Server Node Server NodeServer Node

IN-MEMORY IN-MEMORY IN-MEMORY

ODBCJDBC

Distributed SQL

Cross-platform Compatibility

Indexes on RAM or Disk

DDL & DML Support

SELECT, UPDATE, INSERT, MERGE, CREATE, DELETE & ALTER

Dynamic Scaling

Page 10: speed scale sql · 2018-11-29 · Java .NET C++ PHP REST Memory-Centric Storage Server Node Server Node Server Node IN-MEMORY IN-MEMORY IN-MEMORY JDBC ODBC Distributed SQL Cross-platform

©2018 GridGainSystems,Inc. GridGainCompanyConfidential

Connectivity

• JDBC• ODBC• REST• Java, .NET and C++ APIs

// Register JDBC driver.Class.forName("org.apache.ignite.IgniteJdbcThinDriver");

// Open the JDBC connection.Connection conn = DriverManager.getConnection("jdbc:ignite:thin://192.168.0.50");

./sqlline.sh --color=true --verbose=true -u jdbc:ignite:thin://127.0.0.1/

Page 11: speed scale sql · 2018-11-29 · Java .NET C++ PHP REST Memory-Centric Storage Server Node Server Node Server Node IN-MEMORY IN-MEMORY IN-MEMORY JDBC ODBC Distributed SQL Cross-platform

©2018 GridGainSystems,Inc. GridGainCompanyConfidential

DataDefinitionLanguage

• CREATE/DROP TABLE• CREATE/DROP INDEX• ALTER TABLE• Changes Durability

• Ignite Native Persistence

CREATE TABLE `city` (`ID` INT(11),`Name` CHAR(35),`CountryCode` CHAR(3),`District` CHAR(20),`Population` INT(11),PRIMARY KEY (`ID`, `CountryCode`)

) WITH "template=partitioned, backups=1, affinityKey=CountryCode";

https://apacheignite-sql.readme.io/docs/ddl

Page 12: speed scale sql · 2018-11-29 · Java .NET C++ PHP REST Memory-Centric Storage Server Node Server Node Server Node IN-MEMORY IN-MEMORY IN-MEMORY JDBC ODBC Distributed SQL Cross-platform

©2018 GridGainSystems,Inc. GridGainCompanyConfidential

DataManipulationLanguage

• ANSI-99 specification• Fault-tolerant and consistent• INSERT, UPDATE, DELETE• SELECT

• JOINs• Subqueries

SELECT country.name, city.name, MAX(city.population) as max_pop FROM country JOIN city ON city.countrycode = country.code WHERE country.code IN ('USA','RUS','CHN') GROUP BY country.name, city.name ORDER BY max_pop DESC LIMIT 3;

https://apacheignite-sql.readme.io/docs/dml

Page 13: speed scale sql · 2018-11-29 · Java .NET C++ PHP REST Memory-Centric Storage Server Node Server Node Server Node IN-MEMORY IN-MEMORY IN-MEMORY JDBC ODBC Distributed SQL Cross-platform

©2018 GridGainSystems,Inc. GridGainCompanyConfidential

CollocatedJoins

1. Initial Query2. Query execution over local data3. Reduce multiple results in one

Ignite Node

CanadaToronto

OttawaMontreal

Calgary

Ignite Node

IndiaMumbai

New Delhi

1

2

23

Page 14: speed scale sql · 2018-11-29 · Java .NET C++ PHP REST Memory-Centric Storage Server Node Server Node Server Node IN-MEMORY IN-MEMORY IN-MEMORY JDBC ODBC Distributed SQL Cross-platform

©2018 GridGainSystems,Inc. GridGainCompanyConfidential

Non-CollocatedJoins

1. Initial Query2. Query execution (local + remote data)3. Potential data movement4. Reduce multiple results in one

1

2

24

3Montreal

Ottawa

Ignite Node

CanadaToronto

Calgary

Mumbai

Ignite Node

IndiaMontreal

OttawaNew Delhi

Mumbai

Page 15: speed scale sql · 2018-11-29 · Java .NET C++ PHP REST Memory-Centric Storage Server Node Server Node Server Node IN-MEMORY IN-MEMORY IN-MEMORY JDBC ODBC Distributed SQL Cross-platform

©2018 GridGainSystems,Inc. GridGainCompanyConfidential

Demo

Page 16: speed scale sql · 2018-11-29 · Java .NET C++ PHP REST Memory-Centric Storage Server Node Server Node Server Node IN-MEMORY IN-MEMORY IN-MEMORY JDBC ODBC Distributed SQL Cross-platform

©2018 GridGainSystems,Inc. GridGainCompanyConfidential

Ignite as Memory-Centric Database

Page 17: speed scale sql · 2018-11-29 · Java .NET C++ PHP REST Memory-Centric Storage Server Node Server Node Server Node IN-MEMORY IN-MEMORY IN-MEMORY JDBC ODBC Distributed SQL Cross-platform

©2018 GridGainSystems,Inc. GridGainCompanyConfidential

Memory & Disk Utilization

Mode Description Major Advantage

In-Memory Pure In-Memory Storage Maximum perfomance possible(data is never written to disk)

In-Memory + 3rd Party DB Caching layer (aka. in-memory data grid) for existing databases – RDBMS, NoSQL, etc

Horizontal scalabilityFaster reads and writes

In-Memory + Full Copy on Disk The whole data set is stored both in memory and on disk Survives cluster failures

100% on Disk + In-Memory Cache 100% of data is in Ignite native persistence anda subset is in memory

Unlimited data scale beyond RAM capacity

Page 18: speed scale sql · 2018-11-29 · Java .NET C++ PHP REST Memory-Centric Storage Server Node Server Node Server Node IN-MEMORY IN-MEMORY IN-MEMORY JDBC ODBC Distributed SQL Cross-platform

©2018 GridGainSystems,Inc. GridGainCompanyConfidential

DurableMemory

Off-heap Removes noticeable GC pauses

Automatic Defragmentation

Stores Superset of Data

Predictable memory consumption

Fully Transactional(Write-Ahead Log)

DURABLE MEMORY DURABLE MEMORY DURABLE MEMORY

Server Node Server Node Server Node

Ignite Cluster

Instantaneous Restarts

Page 19: speed scale sql · 2018-11-29 · Java .NET C++ PHP REST Memory-Centric Storage Server Node Server Node Server Node IN-MEMORY IN-MEMORY IN-MEMORY JDBC ODBC Distributed SQL Cross-platform

©2018 GridGainSystems,Inc. GridGainCompanyConfidential

IgniteNativePersistence

1. Update

RAM

2. Persist

Write-Ahead Log

Partition File 1

3. Ack

4. Checkpointing

Partition File N

Server Node

Page 20: speed scale sql · 2018-11-29 · Java .NET C++ PHP REST Memory-Centric Storage Server Node Server Node Server Node IN-MEMORY IN-MEMORY IN-MEMORY JDBC ODBC Distributed SQL Cross-platform

©2018 GridGainSystems,Inc. GridGainCompanyConfidential

Follow the conversation.http://www.gridgain.com

Any Questions?

#apacheignite#gridgain@vkulichenko