SlideShare a Scribd company logo
æHow to make your DBMS
1000x faster
19/12/2017 –City College
Presentation’s Overview
Part 1 – Theory
• What is the problem with RDBMS and NoSQL solutions
• What is Apache Ignite
• Main Features of Apache Ignite
• Use cases and Integrations
• Supported platforms
Part 2 – Examples from Apache Ignite’s repository
Scaling relational Databases is hard
• RDBMS mainly scale up / vertically (bigger/faster
machines)
• Limited scalability compared with Big Data requirements
• Shared all approach
• Same data files are available to all nodes (instances)
• Distributed locks required
• Distributed network search is required when the data
of an instance is not yet persisted into the file system.
In these cases a network search is required for recent
committed values. This approach is not scalable.
Source: http://www.marklogic.com/blog/relational-databases-scale/
NoSQL databases as a solution
• Provide horizontal scalability with the use of shared
nothing architectures and partitioning.
• But the following functionalities are not easily supported
in most NoSQL platforms:
• Joins
• Set operations (union/interest/minus)
• Transactions
• Full ANSI SQL support
• Constraints as we know from the RDBMS
What is Apache Ignite
Apache Ignite is the in-memory computing platform
that is durable, strongly consistent, and highly available
with powerful SQL, key-value and processing APIs  Durable Memory
 Ignite Persistence
 ACID Compliance
 Complete SQL Support
 Key-Value
 Collocated Processing
 Scalability and
Durability
What you can do with Apache Ignite?
Apache Ignite, is an in-memory computing platform that
enables you to dramatically accelerate and scale out your
existing data-intensive applications without ripping and
replacing your existing databases. It can reduce query
times by 1,000x versus disk-based systems. You can scale
out by adding new nodes to your cluster, which can handle
hundreds of terabytes of data from multiple databases.
What you can do with Apache Ignite? (cont.)
You can modernize your existing data-intensive
architecture by inserting Apache Ignite between your
existing application and database layers. Apache Ignite
integrates seamlessly with RDBMS, NoSQL and Apache®
Hadoop™ databases. It features a unified API which
supports SQL, C++, .NET, PHP, MapReduce,
JAVA/Scala/Groovy, and Node.js protocols for the
application layer. Your Apache Ignite cluster, applications,
and databases can run on premise, in a hybrid
environment, or on a cloud platform such as AWS® or
Microsoft Azure.
Nikita Ivanov
Founder and CTO at GridGain systems
“You can buy a 10-blade server that has a terabyte of RAM for less than
$25,000 (~year 2015). RAM does push up the initial price but because RAM’s
lower power and cooling costs, and no moving parts to break, analysts say that
the TCO (Total Cost of Ownership) for using RAM instead of rotating or solid-
state storage as primary storage breaks even in about three years. And that's
just looking at TCO, not including the delivered value from getting much faster
processing performance.”
Source: https://www.linux.com/news/gridgain-memory-data-fabric-becomes-apache-
ignite
Source: https://gist.github.com/jboner/2841832
Latency Comparison Numbers
--------------------------
L1 cache reference 0.5 ns
Branch mispredict 5 ns
L2 cache reference 7 ns 14x L1 cache
Mutex lock/unlock 25 ns
Main memory reference 100 ns 20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy 3,000 ns 3 us
Send 1K bytes over 1 Gbps network 10,000 ns 10 us
Read 4K randomly from SSD* 150,000 ns 150 us ~1GB/sec SSD
Read 1 MB sequentially from memory 250,000 ns 250 us
Round trip within same datacenter 500,000 ns 500 us
Read 1 MB sequentially from SSD* 1,000,000 ns 1,000 us 1 ms ~1GB/sec SSD, 4X
memory
Disk seek 10,000,000 ns 10,000 us 10 ms 20x datacenter roundtrip
Read 1 MB sequentially from disk 20,000,000 ns 20,000 us 20 ms 80x memory, 20X SSD
Send packet CA->Netherlands->CA 150,000,000 ns 150,000 us 150 ms
Apache Ignite Overview
In-Memory Database (IMDB)
Apache Ignite can be used as a distributed and
horizontally scalable in-memory database
(IMDB) that supports ACID transactions and can
be used with SQL, key-value, compute, machine
learning and other data processing APIs.
One of the distinguishing characteristics of
Ignite SQL is the support for distributed SQL
JOINs, which works in both, collocated and non-
collocated fashions.
When collocated, the JOINs are executed on the local data available on each node
without having to move large data sets across the network. Such collocated
approach provides the best scalability and performance in distributed clusters.
More information about the IMDB can be found here.
Quiz 1
1. How many times is RAM faster than an SSD disk for
1MB sequential read?
1. 4
2. 10
3. 8
2. How many times is RAM faster than a typical HDD
for 1MB sequential read?
1. 80
2. 100
3. 1000
Quiz 2
1. Apache Ignite supports transactions?
1. Yes
2. No
2. Apache Ignite supports distributed SQL joins?
1. Yes
2. No
Distributed SQL Database
Apache Ignite is fully complaint with ANSI-
99 compliant, horizontally scalable and
fault-tolerant distributed SQL database.
The distribution is provided either by
partitioning the data across cluster nodes
or by full replication, depending on the
use case.
You can interact with Ignite as you would
with any other SQL storage, using standard
JDBC or ODBC connectivity. Ignite also
provides native SQL APIs for Java, .NET
and C++ developers for better
performance.
More information about the Distributed SQl DBs can be found here.
Distributed Collocated SQL Query
In-Memory Data Grid (IMDG) – Key-Value store
The data grid has been built from
the ground up to linearly scale to
hundreds of nodes with strong
semantics for data locality and
affinity data routing to reduce
redundant data noise.
It can be viewed as a distributed partitioned hash map with every cluster
node owning a portion of the overall data. This way the more cluster nodes
we add, the more data we can cache.
More information about the IMDG can be found here.
Compute Grid
Distributed computations are performed in
parallel fashion to gain high performance,
low latency, and linear scalability.
Ignite compute grid provides a set of
simple APIs that allow users distribute
computations and data processing across
multiple computers in the cluster.
Distributed parallel processing is based on
the ability to take any computation and
execute it on any set of cluster nodes and
return the results back.
More information about the Compute grid can be found here.
• Continuous availability of deployed services regardless of topology changes or crashes.
• Automatically deploy any number of distributed service instances in the cluster.
• Automatically deploy singletons, including cluster-singleton, node-singleton, or key-affinity-
singleton.
• Automatically deploy distributed services on node start-up by specifying them in the configuration.
• Undeploy any of the deployed services.
• Get information about service deployment topology within the cluster.
• Create service proxy for accessing remotely deployed distributed services
Service Grid
Service Grid allows for deployments
of arbitrary user-defined services on
the cluster. You can implement and
deploy any service, such as custom
counters, ID generators, hierarchical
maps, etc.
More information about the Service grid can be found here.
Distributed Data Structures
Ignite allows for most of the data structures
from java.util.concurrent framework to be
used in a distributed fashion.
Ignite gives you the capability to take a data
structure you are familiar with and use it in a
clustered fashion.
For example, you can take
java.util.concurrent.BlockingDeque and add
something to it on one node and poll it from
another node.
Or have a distributed primary key generator
which would guarantee uniqueness on all
nodes.
More information about the Distributed data Strucutres can be found here.
• Queue and Set
• Atomic Types
• CountDownLatch
• ID Generator
• Semaphore
Quiz 3
1. Apache Ignite is able to scale up and down by simply
adding/removing nodes from the cluster?
1. Yes
2. No
2. Does Apache Ignite has the concept of servers and
clients?
1. Yes
2. No
3. Is it possible to manage an Apache Ignite cluster
remotely?
1. Yes
2. No
Data Streamers
1. Client nodes inject finite or
continuous streams of data into
Ignite caches using Ignite Data
Streamers.
2. Data is automatically partitioned
between Ignite data nodes, and each
node gets equal amount of data.
3. Streamed data can be concurrently
processed directly on the Ignite data
nodes in collocated fashion.
4. Clients can also perform concurrent
SQL queries on the streamed data.
More information about the Data Streamers can be found here.
Integration with major streaming technologies
Apache Ignite integrates with major streaming technologies and frameworks
in order to bring even more advanced streaming capabilities to Ignite-based
architectures:
1. Kafka Streamer
2. Camel Streamer
3. JMS Streamer
4. MQTT Streamer
5. Storm Streamer
6. Flink streamer
7. Twitter Streamer
8. Flume Streamer
9. Zero MQ
10. Rocket MQ
More information about Integrating Ignite with Data
Streamers can be found here.
Messaging & Events
Exchange custom messages between nodes across the cluster.
Ignite distributed messaging allows for topic based cluster-wide
communication between all nodes.
Messages with a specified message topic can be distributed to all or sub-
group of nodes that have subscribed to that topic.
Ignite messaging is based on publish-subscribe paradigm where publishers
and subscribers are connected together by a common topic.
When one of the nodes sends a message A for topic T, it is published on all
nodes that have subscribed to T.
More information about Messaging & Events can be found here.
Sliding Windows
More information about Sliding Windows can be found here.
Sliding windows are configured as Ignite cache eviction policies,
and can be:
• Time-based sliding windows
• FIFO sliding windows
• LRU sliding windows
• Querying sliding windows
Web Session clustering
More information about Web Session Clustering can be found here.
Ignite In-Memory Data Fabric is capable of
caching web sessions of all Java Servlet
containers that follow Java Servlet 3.0
Specification, including Apache Tomcat,
Eclipse Jetty, Oracle WebLogic, and others.
• No need for sticky sessions provided by
the Load Balancer.
Hibernate L2 Cache
More information about Hibernate L2 cache can be found here.
Ignite In-Memory Data Fabric can be used as
Hibernate Second-Level cache (or L2 cache),
which can significantly speed-up the
persistence layer of your application.
Hibernate is a well-known and widely used
framework for Object-Relational Mapping
(ORM). While interacting closely with an SQL
database, it performs caching of retrieved
data to minimize expensive database requests
Spring Caching
More information about Spring Cache can be found here.
Ignite is shipped with SpringCacheManager - an implementation of Spring
Cache Abstraction. It provides an annotation-based way to enable caching
for Java methods so that the result of a method execution is stored in the
Ignite cache. Later, if the same method is called with the same set of
parameter values, the result will be retrieved from the cache instead of
actually executing the method.
Example:
private JdbcTemplate jdbc;
@Cacheable("averageSalary")
public long averageSalary(int organizationId) {
String sql = "SELECT AVG(e.salary) " + "FROM Employee e " + "WHERE e.organizationId = ?";
return jdbc.queryForObject(sql, Long.class, organizationId);
}
Spring Data
More information about Spring Data can be found here.
Spring Data Framework provides a unified and
widely used API that allows abstracting an
underlying data storage from the application
layer.
Spring Data helps you avoid locking to a specific
database vendor, making it easy to switch from
one database to another with minimal efforts.
Apache Ignite implements Spring Data
CrudRepository interface that not only supports
basic CRUD operations but also provides access
to the Apache Ignite SQL Grid via the unified
Spring Data API.
@RepositoryConfig(cacheName = "PersonCache")
public interface PersonRepository extends IgniteRepository
<Person, Long> {
/**
* Gets all the persons with the given name.
* @param name Person name.
* @return A list of Persons with the given first name.
*/
public List<Person> findByFirstName(String name);
/**
* Returns top Person with the specified surname.
* @param name Person surname.
* @return Person that satisfy the query.
*/
public Cache.Entry<Long, Person> findTopByLastNameLike
(String name);
}
Apache Spark
More information about Ignite for Spark can be found here.
Apache Ignite provides an implementation of
Spark RDD (Resilient Distributed Datasets)
abstraction which allows to easily share
state in memory across Spark jobs. The main
difference between native Spark RDD and
IgniteRDD is that Ignite RDD provides a
shared in-memory view on data across
different Spark jobs, workers, or
applications, while native Spark RDD cannot
be seen by other Spark jobs or applications.
Other integrations
More information about integrations can be found here.
Apache Ignite integrates with:
• Hadoop
• Apache Cassandra
• PHP PDO – Data Objects
• MyBatis L2 Cache
• OSGi
Ignite Native Persistence
Ignite native persistence is a distributed,
ACID, and SQL-compliant disk store that
transparently integrates with Ignite's durable
memory. Ignite persistence is optional and can
be turned on and off. When turned off Ignite
becomes a pure in-memory store.
With the native persistence enabled, Ignite always stores a superset of data
on disk, and as much as possible in RAM. For example, if there are 100 entries
and RAM has the capacity to store only 20, then all 100 will be stored on disk
and only 20 will be cached in RAM for better performance.
More information about the Ignite Native Persistence can be found here.
3rd Party Persistence
JCache specification comes with APIs for
javax.cache.integration.CacheLoader and
javax.cache.integration.CacheWriter which are used for write-through
and read-through to and from an underlying persistent storage
respectively (e.g. an RDBMS database like Oracle or MySQL, or NoSQL
database like MongoDB or Couchbase).
It supports:
• Read/Write Through
• Write-Behind
More information about the 3rd Party Persistence can be found here.
Supported platforms & protocols
• Java
• .NET
• C++
• REST API
• Memcached
• Redis
• PHP
More information about the Platforms & Protocols can be found here.
Apache Ignite has a rich set of APIs that
are covered throughout the
documentation.
The APIs are implemented in the form of
native libraries that support major
languages such as Java, .NET and C++, as
well as a variety of protocols like REST,
Memcached, and Redis
Automatic RDBMS Integration
More information about the Automatic RDBMS Integration can be found here.
SqlLine with version 2.3.0
More information about the sqlline tool can can be found here.
Typical deployment for Apache Ignite
More information can be found here.
1. One or more applications connect to the Apache Ignite cluster in
order to manipulate the data in memory.
2. The application never communicates directly with the database.
3. Apache Ignite is responsible to synchronise the data.
Legacy systems?
More information can be found here.
1. Existing legacy systems updating a database.
2. New systems that rely on Apache Ignite with 3rd Party
Persistence enabled.
3. How we guarantee that stale data won’t reside on Ignite
cluster for a long time and will be updated as soon as the
database receives updated from the legacy application?
Legacy systems. Possible solution 1.
More information can be found here.
Connect the legacy system to the Ignite cluster directly.
1. Development is required in order
to make the transition from the
existing DB to Apache Ignite.
2. Complex PL/SQL stored
procedures needs rewrite.
3. Many legacy applications.
1. Simple solution.
2. No added costs.
Legacy systems. Possible solution 2 (Push).
Custom logic on the third party database that would propagate the
committed changes back to the Apache Ignite cluster.
1. Development cost.1. The data are being
replicated on time
Legacy systems. Possible solution 3 (Gridgain
and Oracle GoldenGate Integrator).
Use Gridgain cluster and Oracle GoldenGate Integrator.
1. Licenses cost ($).1. No need to develop complex
code
More information can be found here.
1. Startup a cluster
2. Run the JdbcExample/modified and show the console online
3. CacheTransactionExample
4. CacheQueryExample
5. CacheDataStreamerExample
6. CacheContinuousQueryExample (Show partitions from the web console)
7. CacheAffinityExample (java 8)
8. ComputeClosureExample (java 8)
9. IgniteAtomicSequenceExample
10. MessagingExample
11. PersistenceStoreExample
Examples from Apache Ignite’s github repo
Similar products/solutions
Hazelcast
Oracle Coherence
Pivotal GemFire
Terracotta
Gigaspaces
Redis
Detailed comparisons between GridGain and the
previous products can be found here.
Thank you!
Useful Resources
• https://github.com/apache/ignite
• https://www.gridgain.com/resources/documentation
• https://github.com/srecon/ignite-book-code-samples

More Related Content

What's hot

ヤフーを支えるフラッシュストレージ
ヤフーを支えるフラッシュストレージヤフーを支えるフラッシュストレージ
ヤフーを支えるフラッシュストレージ
Yahoo!デベロッパーネットワーク
 
Oracle Container Engine for Kubernetes (OKE) ご紹介 [2021年5月版]
Oracle Container Engine for Kubernetes (OKE) ご紹介 [2021年5月版]Oracle Container Engine for Kubernetes (OKE) ご紹介 [2021年5月版]
Oracle Container Engine for Kubernetes (OKE) ご紹介 [2021年5月版]
オラクルエンジニア通信
 
Distributed SQL Databases Deconstructed
Distributed SQL Databases DeconstructedDistributed SQL Databases Deconstructed
Distributed SQL Databases Deconstructed
Yugabyte
 
Basic and Advanced Analysis of Ceph Volume Backend Driver in Cinder - John Haan
Basic and Advanced Analysis of Ceph Volume Backend Driver in Cinder - John HaanBasic and Advanced Analysis of Ceph Volume Backend Driver in Cinder - John Haan
Basic and Advanced Analysis of Ceph Volume Backend Driver in Cinder - John Haan
Ceph Community
 
Oracle GoldenGate Cloud Serviceユーザーズガイド
Oracle GoldenGate Cloud ServiceユーザーズガイドOracle GoldenGate Cloud Serviceユーザーズガイド
Oracle GoldenGate Cloud Serviceユーザーズガイド
オラクルエンジニア通信
 
Using Apache Arrow, Calcite, and Parquet to Build a Relational Cache
Using Apache Arrow, Calcite, and Parquet to Build a Relational CacheUsing Apache Arrow, Calcite, and Parquet to Build a Relational Cache
Using Apache Arrow, Calcite, and Parquet to Build a Relational Cache
Dremio Corporation
 
[フルバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ
[フルバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ[フルバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ
[フルバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ
オラクルエンジニア通信
 
Finite State Queries In Lucene
Finite State Queries In LuceneFinite State Queries In Lucene
Finite State Queries In Lucene
otisg
 
Redis vs Infinispan | DevNation Tech Talk
Redis vs Infinispan | DevNation Tech TalkRedis vs Infinispan | DevNation Tech Talk
Redis vs Infinispan | DevNation Tech Talk
Red Hat Developers
 
Oracle Cloud Platform:IDCSを使ったアイデンティティ・ドメイン管理者ガイド
Oracle Cloud Platform:IDCSを使ったアイデンティティ・ドメイン管理者ガイドOracle Cloud Platform:IDCSを使ったアイデンティティ・ドメイン管理者ガイド
Oracle Cloud Platform:IDCSを使ったアイデンティティ・ドメイン管理者ガイド
オラクルエンジニア通信
 
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャ
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャZero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャ
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャ
オラクルエンジニア通信
 
Aggregated queries with Druid on terrabytes and petabytes of data
Aggregated queries with Druid on terrabytes and petabytes of dataAggregated queries with Druid on terrabytes and petabytes of data
Aggregated queries with Druid on terrabytes and petabytes of data
Rostislav Pashuto
 
Apache ignite as in-memory computing platform
Apache ignite as in-memory computing platformApache ignite as in-memory computing platform
Apache ignite as in-memory computing platform
Surinder Mehra
 
SSD Deployment Strategies for MySQL
SSD Deployment Strategies for MySQLSSD Deployment Strategies for MySQL
SSD Deployment Strategies for MySQL
Yoshinori Matsunobu
 
Oracle GoldenGate アーキテクチャと基本機能
Oracle GoldenGate アーキテクチャと基本機能Oracle GoldenGate アーキテクチャと基本機能
Oracle GoldenGate アーキテクチャと基本機能
オラクルエンジニア通信
 
Aerospike Architecture
Aerospike ArchitectureAerospike Architecture
Aerospike Architecture
Peter Milne
 
Presentation implementing oracle asm successfully
Presentation    implementing oracle asm successfullyPresentation    implementing oracle asm successfully
Presentation implementing oracle asm successfully
xKinAnx
 
Google file system GFS
Google file system GFSGoogle file system GFS
Google file system GFS
zihad164
 
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Apache Iceberg - A Table Format for Hige Analytic Datasets
Apache Iceberg - A Table Format for Hige Analytic DatasetsApache Iceberg - A Table Format for Hige Analytic Datasets
Apache Iceberg - A Table Format for Hige Analytic Datasets
Alluxio, Inc.
 

What's hot (20)

ヤフーを支えるフラッシュストレージ
ヤフーを支えるフラッシュストレージヤフーを支えるフラッシュストレージ
ヤフーを支えるフラッシュストレージ
 
Oracle Container Engine for Kubernetes (OKE) ご紹介 [2021年5月版]
Oracle Container Engine for Kubernetes (OKE) ご紹介 [2021年5月版]Oracle Container Engine for Kubernetes (OKE) ご紹介 [2021年5月版]
Oracle Container Engine for Kubernetes (OKE) ご紹介 [2021年5月版]
 
Distributed SQL Databases Deconstructed
Distributed SQL Databases DeconstructedDistributed SQL Databases Deconstructed
Distributed SQL Databases Deconstructed
 
Basic and Advanced Analysis of Ceph Volume Backend Driver in Cinder - John Haan
Basic and Advanced Analysis of Ceph Volume Backend Driver in Cinder - John HaanBasic and Advanced Analysis of Ceph Volume Backend Driver in Cinder - John Haan
Basic and Advanced Analysis of Ceph Volume Backend Driver in Cinder - John Haan
 
Oracle GoldenGate Cloud Serviceユーザーズガイド
Oracle GoldenGate Cloud ServiceユーザーズガイドOracle GoldenGate Cloud Serviceユーザーズガイド
Oracle GoldenGate Cloud Serviceユーザーズガイド
 
Using Apache Arrow, Calcite, and Parquet to Build a Relational Cache
Using Apache Arrow, Calcite, and Parquet to Build a Relational CacheUsing Apache Arrow, Calcite, and Parquet to Build a Relational Cache
Using Apache Arrow, Calcite, and Parquet to Build a Relational Cache
 
[フルバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ
[フルバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ[フルバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ
[フルバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ
 
Finite State Queries In Lucene
Finite State Queries In LuceneFinite State Queries In Lucene
Finite State Queries In Lucene
 
Redis vs Infinispan | DevNation Tech Talk
Redis vs Infinispan | DevNation Tech TalkRedis vs Infinispan | DevNation Tech Talk
Redis vs Infinispan | DevNation Tech Talk
 
Oracle Cloud Platform:IDCSを使ったアイデンティティ・ドメイン管理者ガイド
Oracle Cloud Platform:IDCSを使ったアイデンティティ・ドメイン管理者ガイドOracle Cloud Platform:IDCSを使ったアイデンティティ・ドメイン管理者ガイド
Oracle Cloud Platform:IDCSを使ったアイデンティティ・ドメイン管理者ガイド
 
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャ
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャZero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャ
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャ
 
Aggregated queries with Druid on terrabytes and petabytes of data
Aggregated queries with Druid on terrabytes and petabytes of dataAggregated queries with Druid on terrabytes and petabytes of data
Aggregated queries with Druid on terrabytes and petabytes of data
 
Apache ignite as in-memory computing platform
Apache ignite as in-memory computing platformApache ignite as in-memory computing platform
Apache ignite as in-memory computing platform
 
SSD Deployment Strategies for MySQL
SSD Deployment Strategies for MySQLSSD Deployment Strategies for MySQL
SSD Deployment Strategies for MySQL
 
Oracle GoldenGate アーキテクチャと基本機能
Oracle GoldenGate アーキテクチャと基本機能Oracle GoldenGate アーキテクチャと基本機能
Oracle GoldenGate アーキテクチャと基本機能
 
Aerospike Architecture
Aerospike ArchitectureAerospike Architecture
Aerospike Architecture
 
Presentation implementing oracle asm successfully
Presentation    implementing oracle asm successfullyPresentation    implementing oracle asm successfully
Presentation implementing oracle asm successfully
 
Google file system GFS
Google file system GFSGoogle file system GFS
Google file system GFS
 
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Apache Iceberg - A Table Format for Hige Analytic Datasets
Apache Iceberg - A Table Format for Hige Analytic DatasetsApache Iceberg - A Table Format for Hige Analytic Datasets
Apache Iceberg - A Table Format for Hige Analytic Datasets
 

Similar to Apache ignite v1.3

Data has a better idea the in-memory data grid
Data has a better idea   the in-memory data gridData has a better idea   the in-memory data grid
Data has a better idea the in-memory data grid
Bogdan Dina
 
Azure + DataStax Enterprise (DSE) Powers Office365 Per User Store
Azure + DataStax Enterprise (DSE) Powers Office365 Per User StoreAzure + DataStax Enterprise (DSE) Powers Office365 Per User Store
Azure + DataStax Enterprise (DSE) Powers Office365 Per User Store
DataStax Academy
 
Openstack_administration
Openstack_administrationOpenstack_administration
Openstack_administrationAshish Sharma
 
Big Data on Cloud Native Platform
Big Data on Cloud Native PlatformBig Data on Cloud Native Platform
Big Data on Cloud Native Platform
Sunil Govindan
 
Big Data on Cloud Native Platform
Big Data on Cloud Native PlatformBig Data on Cloud Native Platform
Big Data on Cloud Native Platform
Sunil Govindan
 
HPC and cloud distributed computing, as a journey
HPC and cloud distributed computing, as a journeyHPC and cloud distributed computing, as a journey
HPC and cloud distributed computing, as a journey
Peter Clapham
 
SpringPeople - Introduction to Cloud Computing
SpringPeople - Introduction to Cloud ComputingSpringPeople - Introduction to Cloud Computing
SpringPeople - Introduction to Cloud Computing
SpringPeople
 
Public Cloud Workshop
Public Cloud WorkshopPublic Cloud Workshop
Public Cloud Workshop
Amer Ather
 
Scabiv0.2
Scabiv0.2Scabiv0.2
Scabiv0.2
Dilshad Mustafa
 
Data Lake and the rise of the microservices
Data Lake and the rise of the microservicesData Lake and the rise of the microservices
Data Lake and the rise of the microservices
Bigstep
 
Otimizações de Projetos de Big Data, Dw e AI no Microsoft Azure
Otimizações de Projetos de Big Data, Dw e AI no Microsoft AzureOtimizações de Projetos de Big Data, Dw e AI no Microsoft Azure
Otimizações de Projetos de Big Data, Dw e AI no Microsoft Azure
Luan Moreno Medeiros Maciel
 
TechDay - Toronto 2016 - Hyperconvergence and OpenNebula
TechDay - Toronto 2016 - Hyperconvergence and OpenNebulaTechDay - Toronto 2016 - Hyperconvergence and OpenNebula
TechDay - Toronto 2016 - Hyperconvergence and OpenNebula
OpenNebula Project
 
Cluster Computers
Cluster ComputersCluster Computers
Cluster Computers
shopnil786
 
Maginatics @ SDC 2013: Architecting An Enterprise Storage Platform Using Obje...
Maginatics @ SDC 2013: Architecting An Enterprise Storage Platform Using Obje...Maginatics @ SDC 2013: Architecting An Enterprise Storage Platform Using Obje...
Maginatics @ SDC 2013: Architecting An Enterprise Storage Platform Using Obje...
Maginatics
 
Flexible compute
Flexible computeFlexible compute
Flexible compute
Peter Clapham
 
Sanger, upcoming Openstack for Bio-informaticians
Sanger, upcoming Openstack for Bio-informaticiansSanger, upcoming Openstack for Bio-informaticians
Sanger, upcoming Openstack for Bio-informaticians
Peter Clapham
 
Sql interview question part 10
Sql interview question part 10Sql interview question part 10
Sql interview question part 10
kaashiv1
 
CC -Unit4.pptx
CC -Unit4.pptxCC -Unit4.pptx
CC -Unit4.pptx
Revathiparamanathan
 

Similar to Apache ignite v1.3 (20)

Data has a better idea the in-memory data grid
Data has a better idea   the in-memory data gridData has a better idea   the in-memory data grid
Data has a better idea the in-memory data grid
 
Azure + DataStax Enterprise (DSE) Powers Office365 Per User Store
Azure + DataStax Enterprise (DSE) Powers Office365 Per User StoreAzure + DataStax Enterprise (DSE) Powers Office365 Per User Store
Azure + DataStax Enterprise (DSE) Powers Office365 Per User Store
 
Openstack_administration
Openstack_administrationOpenstack_administration
Openstack_administration
 
Big Data on Cloud Native Platform
Big Data on Cloud Native PlatformBig Data on Cloud Native Platform
Big Data on Cloud Native Platform
 
Big Data on Cloud Native Platform
Big Data on Cloud Native PlatformBig Data on Cloud Native Platform
Big Data on Cloud Native Platform
 
HPC and cloud distributed computing, as a journey
HPC and cloud distributed computing, as a journeyHPC and cloud distributed computing, as a journey
HPC and cloud distributed computing, as a journey
 
SpringPeople - Introduction to Cloud Computing
SpringPeople - Introduction to Cloud ComputingSpringPeople - Introduction to Cloud Computing
SpringPeople - Introduction to Cloud Computing
 
Public Cloud Workshop
Public Cloud WorkshopPublic Cloud Workshop
Public Cloud Workshop
 
Scabiv0.2
Scabiv0.2Scabiv0.2
Scabiv0.2
 
Data Lake and the rise of the microservices
Data Lake and the rise of the microservicesData Lake and the rise of the microservices
Data Lake and the rise of the microservices
 
Otimizações de Projetos de Big Data, Dw e AI no Microsoft Azure
Otimizações de Projetos de Big Data, Dw e AI no Microsoft AzureOtimizações de Projetos de Big Data, Dw e AI no Microsoft Azure
Otimizações de Projetos de Big Data, Dw e AI no Microsoft Azure
 
TechDay - Toronto 2016 - Hyperconvergence and OpenNebula
TechDay - Toronto 2016 - Hyperconvergence and OpenNebulaTechDay - Toronto 2016 - Hyperconvergence and OpenNebula
TechDay - Toronto 2016 - Hyperconvergence and OpenNebula
 
Cluster Computers
Cluster ComputersCluster Computers
Cluster Computers
 
Maginatics @ SDC 2013: Architecting An Enterprise Storage Platform Using Obje...
Maginatics @ SDC 2013: Architecting An Enterprise Storage Platform Using Obje...Maginatics @ SDC 2013: Architecting An Enterprise Storage Platform Using Obje...
Maginatics @ SDC 2013: Architecting An Enterprise Storage Platform Using Obje...
 
Flexible compute
Flexible computeFlexible compute
Flexible compute
 
Sanger, upcoming Openstack for Bio-informaticians
Sanger, upcoming Openstack for Bio-informaticiansSanger, upcoming Openstack for Bio-informaticians
Sanger, upcoming Openstack for Bio-informaticians
 
Sql interview question part 10
Sql interview question part 10Sql interview question part 10
Sql interview question part 10
 
Ebook10
Ebook10Ebook10
Ebook10
 
CC -Unit4.pptx
CC -Unit4.pptxCC -Unit4.pptx
CC -Unit4.pptx
 
AZURE Data Related Services
AZURE Data Related ServicesAZURE Data Related Services
AZURE Data Related Services
 

Recently uploaded

Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
Roshan Dwivedi
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 

Recently uploaded (20)

Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 

Apache ignite v1.3

  • 1. æHow to make your DBMS 1000x faster 19/12/2017 –City College
  • 2. Presentation’s Overview Part 1 – Theory • What is the problem with RDBMS and NoSQL solutions • What is Apache Ignite • Main Features of Apache Ignite • Use cases and Integrations • Supported platforms Part 2 – Examples from Apache Ignite’s repository
  • 3. Scaling relational Databases is hard • RDBMS mainly scale up / vertically (bigger/faster machines) • Limited scalability compared with Big Data requirements • Shared all approach • Same data files are available to all nodes (instances) • Distributed locks required • Distributed network search is required when the data of an instance is not yet persisted into the file system. In these cases a network search is required for recent committed values. This approach is not scalable. Source: http://www.marklogic.com/blog/relational-databases-scale/
  • 4. NoSQL databases as a solution • Provide horizontal scalability with the use of shared nothing architectures and partitioning. • But the following functionalities are not easily supported in most NoSQL platforms: • Joins • Set operations (union/interest/minus) • Transactions • Full ANSI SQL support • Constraints as we know from the RDBMS
  • 5. What is Apache Ignite Apache Ignite is the in-memory computing platform that is durable, strongly consistent, and highly available with powerful SQL, key-value and processing APIs  Durable Memory  Ignite Persistence  ACID Compliance  Complete SQL Support  Key-Value  Collocated Processing  Scalability and Durability
  • 6. What you can do with Apache Ignite? Apache Ignite, is an in-memory computing platform that enables you to dramatically accelerate and scale out your existing data-intensive applications without ripping and replacing your existing databases. It can reduce query times by 1,000x versus disk-based systems. You can scale out by adding new nodes to your cluster, which can handle hundreds of terabytes of data from multiple databases.
  • 7. What you can do with Apache Ignite? (cont.) You can modernize your existing data-intensive architecture by inserting Apache Ignite between your existing application and database layers. Apache Ignite integrates seamlessly with RDBMS, NoSQL and Apache® Hadoop™ databases. It features a unified API which supports SQL, C++, .NET, PHP, MapReduce, JAVA/Scala/Groovy, and Node.js protocols for the application layer. Your Apache Ignite cluster, applications, and databases can run on premise, in a hybrid environment, or on a cloud platform such as AWS® or Microsoft Azure.
  • 8. Nikita Ivanov Founder and CTO at GridGain systems “You can buy a 10-blade server that has a terabyte of RAM for less than $25,000 (~year 2015). RAM does push up the initial price but because RAM’s lower power and cooling costs, and no moving parts to break, analysts say that the TCO (Total Cost of Ownership) for using RAM instead of rotating or solid- state storage as primary storage breaks even in about three years. And that's just looking at TCO, not including the delivered value from getting much faster processing performance.” Source: https://www.linux.com/news/gridgain-memory-data-fabric-becomes-apache- ignite
  • 9. Source: https://gist.github.com/jboner/2841832 Latency Comparison Numbers -------------------------- L1 cache reference 0.5 ns Branch mispredict 5 ns L2 cache reference 7 ns 14x L1 cache Mutex lock/unlock 25 ns Main memory reference 100 ns 20x L2 cache, 200x L1 cache Compress 1K bytes with Zippy 3,000 ns 3 us Send 1K bytes over 1 Gbps network 10,000 ns 10 us Read 4K randomly from SSD* 150,000 ns 150 us ~1GB/sec SSD Read 1 MB sequentially from memory 250,000 ns 250 us Round trip within same datacenter 500,000 ns 500 us Read 1 MB sequentially from SSD* 1,000,000 ns 1,000 us 1 ms ~1GB/sec SSD, 4X memory Disk seek 10,000,000 ns 10,000 us 10 ms 20x datacenter roundtrip Read 1 MB sequentially from disk 20,000,000 ns 20,000 us 20 ms 80x memory, 20X SSD Send packet CA->Netherlands->CA 150,000,000 ns 150,000 us 150 ms
  • 11. In-Memory Database (IMDB) Apache Ignite can be used as a distributed and horizontally scalable in-memory database (IMDB) that supports ACID transactions and can be used with SQL, key-value, compute, machine learning and other data processing APIs. One of the distinguishing characteristics of Ignite SQL is the support for distributed SQL JOINs, which works in both, collocated and non- collocated fashions. When collocated, the JOINs are executed on the local data available on each node without having to move large data sets across the network. Such collocated approach provides the best scalability and performance in distributed clusters. More information about the IMDB can be found here.
  • 12. Quiz 1 1. How many times is RAM faster than an SSD disk for 1MB sequential read? 1. 4 2. 10 3. 8 2. How many times is RAM faster than a typical HDD for 1MB sequential read? 1. 80 2. 100 3. 1000
  • 13. Quiz 2 1. Apache Ignite supports transactions? 1. Yes 2. No 2. Apache Ignite supports distributed SQL joins? 1. Yes 2. No
  • 14. Distributed SQL Database Apache Ignite is fully complaint with ANSI- 99 compliant, horizontally scalable and fault-tolerant distributed SQL database. The distribution is provided either by partitioning the data across cluster nodes or by full replication, depending on the use case. You can interact with Ignite as you would with any other SQL storage, using standard JDBC or ODBC connectivity. Ignite also provides native SQL APIs for Java, .NET and C++ developers for better performance. More information about the Distributed SQl DBs can be found here. Distributed Collocated SQL Query
  • 15. In-Memory Data Grid (IMDG) – Key-Value store The data grid has been built from the ground up to linearly scale to hundreds of nodes with strong semantics for data locality and affinity data routing to reduce redundant data noise. It can be viewed as a distributed partitioned hash map with every cluster node owning a portion of the overall data. This way the more cluster nodes we add, the more data we can cache. More information about the IMDG can be found here.
  • 16. Compute Grid Distributed computations are performed in parallel fashion to gain high performance, low latency, and linear scalability. Ignite compute grid provides a set of simple APIs that allow users distribute computations and data processing across multiple computers in the cluster. Distributed parallel processing is based on the ability to take any computation and execute it on any set of cluster nodes and return the results back. More information about the Compute grid can be found here.
  • 17. • Continuous availability of deployed services regardless of topology changes or crashes. • Automatically deploy any number of distributed service instances in the cluster. • Automatically deploy singletons, including cluster-singleton, node-singleton, or key-affinity- singleton. • Automatically deploy distributed services on node start-up by specifying them in the configuration. • Undeploy any of the deployed services. • Get information about service deployment topology within the cluster. • Create service proxy for accessing remotely deployed distributed services Service Grid Service Grid allows for deployments of arbitrary user-defined services on the cluster. You can implement and deploy any service, such as custom counters, ID generators, hierarchical maps, etc. More information about the Service grid can be found here.
  • 18. Distributed Data Structures Ignite allows for most of the data structures from java.util.concurrent framework to be used in a distributed fashion. Ignite gives you the capability to take a data structure you are familiar with and use it in a clustered fashion. For example, you can take java.util.concurrent.BlockingDeque and add something to it on one node and poll it from another node. Or have a distributed primary key generator which would guarantee uniqueness on all nodes. More information about the Distributed data Strucutres can be found here. • Queue and Set • Atomic Types • CountDownLatch • ID Generator • Semaphore
  • 19. Quiz 3 1. Apache Ignite is able to scale up and down by simply adding/removing nodes from the cluster? 1. Yes 2. No 2. Does Apache Ignite has the concept of servers and clients? 1. Yes 2. No 3. Is it possible to manage an Apache Ignite cluster remotely? 1. Yes 2. No
  • 20. Data Streamers 1. Client nodes inject finite or continuous streams of data into Ignite caches using Ignite Data Streamers. 2. Data is automatically partitioned between Ignite data nodes, and each node gets equal amount of data. 3. Streamed data can be concurrently processed directly on the Ignite data nodes in collocated fashion. 4. Clients can also perform concurrent SQL queries on the streamed data. More information about the Data Streamers can be found here.
  • 21. Integration with major streaming technologies Apache Ignite integrates with major streaming technologies and frameworks in order to bring even more advanced streaming capabilities to Ignite-based architectures: 1. Kafka Streamer 2. Camel Streamer 3. JMS Streamer 4. MQTT Streamer 5. Storm Streamer 6. Flink streamer 7. Twitter Streamer 8. Flume Streamer 9. Zero MQ 10. Rocket MQ More information about Integrating Ignite with Data Streamers can be found here.
  • 22. Messaging & Events Exchange custom messages between nodes across the cluster. Ignite distributed messaging allows for topic based cluster-wide communication between all nodes. Messages with a specified message topic can be distributed to all or sub- group of nodes that have subscribed to that topic. Ignite messaging is based on publish-subscribe paradigm where publishers and subscribers are connected together by a common topic. When one of the nodes sends a message A for topic T, it is published on all nodes that have subscribed to T. More information about Messaging & Events can be found here.
  • 23. Sliding Windows More information about Sliding Windows can be found here. Sliding windows are configured as Ignite cache eviction policies, and can be: • Time-based sliding windows • FIFO sliding windows • LRU sliding windows • Querying sliding windows
  • 24. Web Session clustering More information about Web Session Clustering can be found here. Ignite In-Memory Data Fabric is capable of caching web sessions of all Java Servlet containers that follow Java Servlet 3.0 Specification, including Apache Tomcat, Eclipse Jetty, Oracle WebLogic, and others. • No need for sticky sessions provided by the Load Balancer.
  • 25. Hibernate L2 Cache More information about Hibernate L2 cache can be found here. Ignite In-Memory Data Fabric can be used as Hibernate Second-Level cache (or L2 cache), which can significantly speed-up the persistence layer of your application. Hibernate is a well-known and widely used framework for Object-Relational Mapping (ORM). While interacting closely with an SQL database, it performs caching of retrieved data to minimize expensive database requests
  • 26. Spring Caching More information about Spring Cache can be found here. Ignite is shipped with SpringCacheManager - an implementation of Spring Cache Abstraction. It provides an annotation-based way to enable caching for Java methods so that the result of a method execution is stored in the Ignite cache. Later, if the same method is called with the same set of parameter values, the result will be retrieved from the cache instead of actually executing the method. Example: private JdbcTemplate jdbc; @Cacheable("averageSalary") public long averageSalary(int organizationId) { String sql = "SELECT AVG(e.salary) " + "FROM Employee e " + "WHERE e.organizationId = ?"; return jdbc.queryForObject(sql, Long.class, organizationId); }
  • 27. Spring Data More information about Spring Data can be found here. Spring Data Framework provides a unified and widely used API that allows abstracting an underlying data storage from the application layer. Spring Data helps you avoid locking to a specific database vendor, making it easy to switch from one database to another with minimal efforts. Apache Ignite implements Spring Data CrudRepository interface that not only supports basic CRUD operations but also provides access to the Apache Ignite SQL Grid via the unified Spring Data API. @RepositoryConfig(cacheName = "PersonCache") public interface PersonRepository extends IgniteRepository <Person, Long> { /** * Gets all the persons with the given name. * @param name Person name. * @return A list of Persons with the given first name. */ public List<Person> findByFirstName(String name); /** * Returns top Person with the specified surname. * @param name Person surname. * @return Person that satisfy the query. */ public Cache.Entry<Long, Person> findTopByLastNameLike (String name); }
  • 28. Apache Spark More information about Ignite for Spark can be found here. Apache Ignite provides an implementation of Spark RDD (Resilient Distributed Datasets) abstraction which allows to easily share state in memory across Spark jobs. The main difference between native Spark RDD and IgniteRDD is that Ignite RDD provides a shared in-memory view on data across different Spark jobs, workers, or applications, while native Spark RDD cannot be seen by other Spark jobs or applications.
  • 29. Other integrations More information about integrations can be found here. Apache Ignite integrates with: • Hadoop • Apache Cassandra • PHP PDO – Data Objects • MyBatis L2 Cache • OSGi
  • 30. Ignite Native Persistence Ignite native persistence is a distributed, ACID, and SQL-compliant disk store that transparently integrates with Ignite's durable memory. Ignite persistence is optional and can be turned on and off. When turned off Ignite becomes a pure in-memory store. With the native persistence enabled, Ignite always stores a superset of data on disk, and as much as possible in RAM. For example, if there are 100 entries and RAM has the capacity to store only 20, then all 100 will be stored on disk and only 20 will be cached in RAM for better performance. More information about the Ignite Native Persistence can be found here.
  • 31. 3rd Party Persistence JCache specification comes with APIs for javax.cache.integration.CacheLoader and javax.cache.integration.CacheWriter which are used for write-through and read-through to and from an underlying persistent storage respectively (e.g. an RDBMS database like Oracle or MySQL, or NoSQL database like MongoDB or Couchbase). It supports: • Read/Write Through • Write-Behind More information about the 3rd Party Persistence can be found here.
  • 32. Supported platforms & protocols • Java • .NET • C++ • REST API • Memcached • Redis • PHP More information about the Platforms & Protocols can be found here. Apache Ignite has a rich set of APIs that are covered throughout the documentation. The APIs are implemented in the form of native libraries that support major languages such as Java, .NET and C++, as well as a variety of protocols like REST, Memcached, and Redis
  • 33. Automatic RDBMS Integration More information about the Automatic RDBMS Integration can be found here.
  • 34. SqlLine with version 2.3.0 More information about the sqlline tool can can be found here.
  • 35. Typical deployment for Apache Ignite More information can be found here. 1. One or more applications connect to the Apache Ignite cluster in order to manipulate the data in memory. 2. The application never communicates directly with the database. 3. Apache Ignite is responsible to synchronise the data.
  • 36. Legacy systems? More information can be found here. 1. Existing legacy systems updating a database. 2. New systems that rely on Apache Ignite with 3rd Party Persistence enabled. 3. How we guarantee that stale data won’t reside on Ignite cluster for a long time and will be updated as soon as the database receives updated from the legacy application?
  • 37. Legacy systems. Possible solution 1. More information can be found here. Connect the legacy system to the Ignite cluster directly. 1. Development is required in order to make the transition from the existing DB to Apache Ignite. 2. Complex PL/SQL stored procedures needs rewrite. 3. Many legacy applications. 1. Simple solution. 2. No added costs.
  • 38. Legacy systems. Possible solution 2 (Push). Custom logic on the third party database that would propagate the committed changes back to the Apache Ignite cluster. 1. Development cost.1. The data are being replicated on time
  • 39. Legacy systems. Possible solution 3 (Gridgain and Oracle GoldenGate Integrator). Use Gridgain cluster and Oracle GoldenGate Integrator. 1. Licenses cost ($).1. No need to develop complex code More information can be found here.
  • 40. 1. Startup a cluster 2. Run the JdbcExample/modified and show the console online 3. CacheTransactionExample 4. CacheQueryExample 5. CacheDataStreamerExample 6. CacheContinuousQueryExample (Show partitions from the web console) 7. CacheAffinityExample (java 8) 8. ComputeClosureExample (java 8) 9. IgniteAtomicSequenceExample 10. MessagingExample 11. PersistenceStoreExample Examples from Apache Ignite’s github repo
  • 41. Similar products/solutions Hazelcast Oracle Coherence Pivotal GemFire Terracotta Gigaspaces Redis Detailed comparisons between GridGain and the previous products can be found here.
  • 42. Thank you! Useful Resources • https://github.com/apache/ignite • https://www.gridgain.com/resources/documentation • https://github.com/srecon/ignite-book-code-samples

Editor's Notes

  1. sqlline.bat --color=true --verbose=true -u jdbc:ignite:thin://127.0.0.1/ create table city(id long primary key, name varchar) with "template=replicated"; create table person (id long, name varchar, city_id long, primary key(id, city_id)) with "backups=1, affinityKey=city_id"; create index idx_city_name on city(name); create index idx_person_name on Person(name); !tables insert into city (id, name) values(1, 'Forest Hill'); insert into city (id, name) values(2, 'Denver'); insert into city (id, name) values(3, 'St. Petersburg'); insert into person (id, name, city_id) values (1, 'John Doe', 3); insert into person (id, name, city_id) values (2, 'Rob Chen', 2); insert into person (id, name, city_id) values (3, 'Mary Davis', 1); insert into person (id, name, city_id) values (4, 'Richard Miles', 2); select p.name, c.name from Person p, city c where p.city_id = c.id and c.name='Denver';