SlideShare a Scribd company logo
Staying Ahead of the Curve
with Spring and Cassandra 4
2020-09-02 @ SpringOne
Alex Dutra, DataStax @alexdut
Mark Paluch, VMware @mp911de
Latest & Greatest in the Spring + Cassandra Ecosystem
What's new in...
1. Apache Cassandra™ 4.0 & DataStax Astra
2. Cassandra Driver 4.x
3. Spring Data Cassandra 3.0
4. Spring Boot 2.3
2 © 2020 Datastax, Inc. All rights reserved.
Apache Cassandra™ &
DataStax Astra
Latest & Greatest
3 © 2020 Datastax, Inc. All rights reserved.
Apache Cassandra™ 4.0 in a Nutshell
• Introducing Apache Cassandra 4.0 Beta
• Approaching GA
• First major release since 2016
• Large cross-industry effort
• Most stable Apache Cassandra version in history
© 2020 Datastax, Inc. All rights reserved.4
Apache Cassandra 4.0 Highlights
• Zero Copy Streaming
• Audit Logging
• Improved incremental repair
• Virtual tables
• Support for Java 11 and ZGC (experimental)
• Configurable ports per node
© 2020 Datastax, Inc. All rights reserved.5
Try It Out!
• 4.0-beta2 released in September 2020
• No more API changes expected
• Already stable
© 2020 Datastax, Inc. All rights reserved.6
docker run cassandra:4.0
cassandra.apache.org/download
or
DataStax Astra in a Nutshell
• Cloud-Native Cassandra as a Service
• Zero Lock-In: deploy on AWS or GCP
• REST and GraphQL endpoints
• Fully managed
• Auto-scaling
• Easy data modeling
© 2020 Datastax, Inc. All rights reserved.7
Try It Out!
• astra.datastax.com/register
• 10GB free tier!!
• Spring Boot + Spring Data + Docker example app:
github.com/DataStax-Examples/spring-data-starter
• Try it on GitPod!
© 2020 Datastax, Inc. All rights reserved.8
Cassandra Driver
Latest & Greatest
9 © 2020 Datastax, Inc. All rights reserved.
Cassandra Driver 4 in a Nutshell
• 4.0 released in 2019, latest release 4.9.0
• Major rewrite from 3.x
• Asynchronous, non-blocking engine
• Execution profiles
• Global timeouts
• Improved load balancing policy
• Improved metrics
• Improved Object Mapper
• Support for Cassandra 4 and DataStax Astra
www.datastax.com/blog/2019/03/introducing-java-driver-4
© 2020 Datastax, Inc. All rights reserved.10
Upgrading to Cassandra Driver 4
• Maven coordinates changed
• Package names changed
com.datastax.driver -> com.datastax.oss.driver
• Having trouble migrating to driver 4? We can help!
• Follow the Upgrade guide:
docs.datastax.com/en/developer/java-driver/latest/upgrade_guide
• Ask questions at community.datastax.com
• Driver mailing list:
groups.google.com/a/lists.datastax.com/g/java-driver-user
© 2020 Datastax, Inc. All rights reserved.11
New:
<dependency>
<groupId>com.datastax.oss</groupId>
<artifactId>java-driver-core</artifactId>
<version>4.8.0</version>
</dependency>
Old:
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.10.1</version>
</dependency>
Upgrading to Cassandra Driver 4
• Cluster + Session = CqlSession
© 2020 Datastax, Inc. All rights reserved.12
Cluster cluster = null;
try {
cluster = Cluster.builder()
.addContactPoints(...)
.build();
Session session = cluster.connect();
session.execute(...);
} finally {
if (cluster != null) cluster.close();
}
try (CqlSession session =
CqlSession
.builder()
.addContactPoint(...)
.build()) {
session.execute(...);
}
Old: New:
Upgrading to Cassandra Driver 4
• No more Guava!
© 2020 Datastax, Inc. All rights reserved.13
Futures.addCallback(
session.executeAsync(...), // Guava future
new FutureCallback<ResultSet>() {
public void onSuccess(ResultSet rs) {
Row row = rs.one();
process(row);
}
public void onFailure(Throwable t) {
t.printStackTrace();
}
});
session
.executeAsync(...) // Java 8 future
.thenApply(rs -> rs.one())
.whenComplete(
(row, error) -> {
if (error == null) {
process(row);
} else {
error.printStackTrace();
}
});
Old: New:
�� ��
Upgrading to Cassandra Driver 4
• Immutability by default, except for builders
© 2020 Datastax, Inc. All rights reserved.14
PreparedStatement ps = ...;
BoundStatement bs = ps.bind();
bs.setInt("k", 42);
PreparedStatement ps = ...;
BoundStatement bs = ps.bind();
bs = bs.setInt("k", 42); // bs is immutable!!
Old: New:
⚠
BoundStatementBuilder builder =
ps.boundStatementBuilder();
builder.setInt("k", 42); // OK, mutable
bs = builder.build();
Alternatively, switch to builders (new):
Upgrading to Cassandra Driver 4
• Configure your IDE to detect @CheckReturnValue!
© 2020 Datastax, Inc. All rights reserved.15
Upgrading to Cassandra Driver 4
• New asynchronous pagination API
© 2020 Datastax, Inc. All rights reserved.16
ResultSetFuture rs = session.executeAsync(...);
ListenableFuture<Void> done =
Futures.transform(rs, process(1));
AsyncFunction<ResultSet, Void> process(int page) {
return rs -> {
// process current page
int remaining = rs.getAvailableWithoutFetching();
for (Row row : rs) {
...; if (--remaining == 0) break;
}
// process next page, if any
boolean hasMorePages =
rs.getExecutionInfo().getPagingState() != null;
return hasMorePages
? Futures.transform(
rs.fetchMoreResults(), process(page + 1))
: Futures.immediateFuture(null);
};
}
��
��
��
CompletionStage<AsyncResultSet> rs =
session.executeAsync(...);
CompletionStage<Void> done =
rs.thenCompose(this::process);
CompletionStage<Void> process(AsyncResultSet rs) {
// process current page
rs.currentPage().forEach(row -> ...);
// process next page, if any
return rs.hasMorePages()
? rs.fetchNextPage().thenCompose(this::process)
: CompletableFuture.completedFuture(null);
}
Old: New:
��
��
��
Cassandra Driver 4 Highlights
• New Reactive API
© 2020 Datastax, Inc. All rights reserved.17
// ReactiveResultSet extends Publisher<ReactiveRow>
ReactiveResultSet rs = session.executeReactive("SELECT ...");
// Wrap with Reactor (or RxJava)
Flux.from(rs)
.doOnNext(System.out::println)
.blockLast(); // query execution happens here
docs.datastax.com/en/developer/java-driver/latest/manual/core/reactive
Cassandra 4 Support
• Multiple ports per node
• Contact points now must be entered with a port number
• Virtual tables
• Can be queried like normal tables
• New methods:
KeyspaceMetadata.isVirtual()
TableMetadata.isVirtual()
© 2020 Datastax, Inc. All rights reserved.18
Spring Data Cassandra 3.0
19 © 2020 Datastax, Inc. All rights reserved.
Spring Data Cassandra 3.0
• Upgraded to Cassandra driver 4 in Neumann release train (3.0)
• Embedded Objects (@Embedded(prefix = …))
• @Value support for object creation
• Customizable NamingStrategy API
© 2020 Datastax, Inc. All rights reserved.20
Upgrading to Spring Data Cassandra 3.0
• Your mileage varies depending on level of data access abstraction,
meaning:
• Repository vs. CassandraOperations usage
• Usage of CqlOperations and async CqlOperations Statement
API requires special attention
• Driver Statement objects are now immutable
• Migration guide shipped with reference documentation
• Lots of internal changes as consequence of driver design
© 2020 Datastax, Inc. All rights reserved.21
Upgrade Tasks
• Dependency Upgrades (Driver, Spring Data)
• Adapt mapped entities to
• changed DATE type (com.datastax.driver.core.LocalDate ->
java.time.LocalDate)
• Changes in @CassandraType (CassandraType.Name enum)
• forceQuote in annotations deprecated now
• Review and adapt configuration
© 2020 Datastax, Inc. All rights reserved.22
Configuration
• Recommended: Use Spring Boot
• Still using XML: cassandra:cluster and cassandra:session now
cassandra:session and cassandra:session-factory namespace
elements
• Programmatic configuration mostly remains the same (YMMV!)
© 2020 Datastax, Inc. All rights reserved.23
Execution Profiles
© 2020 Datastax, Inc. All rights reserved.24
datastax-java-driver {
profiles {
oltp {
basic.request.timeout = 100 milliseconds
basic.request.consistency = ONE
}
olap {
basic.request.timeout = 5 seconds
basic.request.consistency = QUORUM
}
}
• Associate Statement with settings
• Driver configuration referenced by Statement API objects
Execution Profiles (Code)
© 2020 Datastax, Inc. All rights reserved.25
CqlTemplate template = new CqlTemplate();
SimpleStatement simpleStatement = QueryBuilder.….build();
SimpleStatement newStatement = simpleStatement.setExecutionProfileName("olap");
template.queryForList(newStatement);
CqlTemplate olapTemplate = new CqlTemplate();
olapTemplate.setExecutionProfile("olap");
CassandraTemplate cassandraTemplate = …
InsertOptions options = InsertOptions.builder().executionProfile("oltp").build();
cassandraTemplate.insert(person, options);
Embedded Objects
© 2020 Datastax, Inc. All rights reserved.26
public class Customer {
@Id
UUID id;
@Embedded.Nullable(prefix = "billing_")
Address billing;
@Embedded.Nullable(prefix = "shipping_")
Address shipping;
static class Address {
String street;
String city;
String zip;
}
}
Embedded Objects
• Flattened when persisted
• Materialized as nested object
• Allow for namespacing through prefix
• Can be null or empty
© 2020 Datastax, Inc. All rights reserved.27
Spring Boot 2.3
28 © 2020 Datastax, Inc. All rights reserved.
Spring Boot 2.3
• Upgraded to Cassandra driver 4 in 2.3
• Configuration must be done either:
• In application.properties or application.yaml
• Under spring.data.cassandra prefix
• Or programmatically
• Changes to spring.data.cassandra properties:
• Some properties were renamed
• Contact points must now contain a port (host:port)
• Local datacenter is now required
• Except for Astra
© 2020 Datastax, Inc. All rights reserved.29
Configuration Upgrade Example
Old:
spring.data.cassandra:
cluster-name: prod1
contact-points: 127.0.0.1
port: 9042
keyspace-name: ks1
read-timeout: 10s
consistency-level: LOCAL_QUORUM
fetch-size: 1000
30 © 2020 Datastax, Inc. All rights reserved.
New:
spring.data.cassandra:
session-name: prod1
contact-points: 127.0.0.1:9042
local-datacenter: dc1
keyspace-name: ks1
request:
timeout: 10s
consistency: LOCAL_QUORUM
page-size: 1000
Upgrading Application Properties
31 © 2020 Datastax, Inc. All rights reserved.
docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html
Old property New property
spring.data.cassandra.cluster-name spring.data.cassandra.session-name
N/A spring.data.cassandra.local-datacenter
spring.data.cassandra.read-timeout
spring.data.cassandra.connect-timeout
spring.data.cassandra.request.timeout
spring.data.cassandra.connection.connect-timeout
spring.data.cassandra.connection.init-query-timeout
spring.data.cassandra.consistency-level
spring.data.cassandra.serial-consistency-level
spring.data.cassandra.request.consistency
spring.data.cassandra.request.serial-consistency
spring.data.cassandra.fetch-size spring.data.cassandra.request.page-size
spring.data.cassandra.jmx-enabled N/A (driver JMX config)
Customizing the Cassandra Session
• Avoid declaring your own CqlSession bean!
• You would lose Spring Boot's auto-configuration support
• Customizers FTW!
• Callbacks that can be easily implemented by users
• Spring Boot 2.3+ customizers:
• SessionBuilderCustomizer (High-level)
• DriverConfigLoaderBuilderCustomizer (Low-level,
execution profiles)
• Declare as regular beans
© 2020 Datastax, Inc. All rights reserved.32
Customizing the Cassandra Session
• Session customization examples
© 2020 Datastax, Inc. All rights reserved.33
@Bean
public CqlSessionBuilderCustomizer sslCustomizer() {
return builder -> builder.withSslContext(…);
}
@Bean
public CqlSessionBuilderCustomizer credentialsCustomizer() {
return builder -> builder.withAuthCredentials(…);
}
@Bean
public DriverConfigLoaderBuilderCustomizer oltpProfile() {
return builder -> builder.startProfile("oltp"). … .endProfile();
}
Connecting to Astra
• Typical configuration
© 2020 Datastax, Inc. All rights reserved.34
spring.data.cassandra:
username: <astra user>
password: <astra password>
keyspace-name: <astra keyspace>
# no contact-points and no local-datacenter for Astra!
datastax.astra:
secure-connect-bundle: </path/to/secure-connect-bundle.zip>
docs.datastax.com/en/developer/java-driver/latest/manual/cloud
Connecting to Astra
• Passing the secure connect bundle: with a customizer bean
© 2020 Datastax, Inc. All rights reserved.35
@Value("${datastax.astra.secure-connect-bundle}")
private String astraBundle;
@Bean
public CqlSessionBuilderCustomizer sessionBuilderCustomizer() {
return builder ->
builder.withCloudSecureConnectBundle(Paths.get(astraBundle));
}
docs.datastax.com/en/developer/java-driver/latest/manual/cloud
Compatibility Matrix
36 © 2020 Datastax, Inc. All rights reserved.
Your driver version works with...
Cassandra Driver Spring Data Cassandra Spring Boot
3.x 2.2 and older 2.2 and older
4.x 3.0 and newer 2.3 and newer
• Can't mix versions from different lines
Thank You!
37 © 2020 Datastax, Inc. All rights reserved.
Ad

More Related Content

What's hot (20)

Alphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et ConfigurationAlphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et Configuration
Alphorm
 
PostgreSQL Disaster Recovery with Barman
PostgreSQL Disaster Recovery with BarmanPostgreSQL Disaster Recovery with Barman
PostgreSQL Disaster Recovery with Barman
Gabriele Bartolini
 
Easy, scalable, fault tolerant stream processing with structured streaming - ...
Easy, scalable, fault tolerant stream processing with structured streaming - ...Easy, scalable, fault tolerant stream processing with structured streaming - ...
Easy, scalable, fault tolerant stream processing with structured streaming - ...
Databricks
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
SANG WON PARK
 
Centralized Logging System Using ELK Stack
Centralized Logging System Using ELK StackCentralized Logging System Using ELK Stack
Centralized Logging System Using ELK Stack
Rohit Sharma
 
Change data capture with MongoDB and Kafka.
Change data capture with MongoDB and Kafka.Change data capture with MongoDB and Kafka.
Change data capture with MongoDB and Kafka.
Dan Harvey
 
並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ
Kohei KaiGai
 
OpenStack Architecture and Use Cases
OpenStack Architecture and Use CasesOpenStack Architecture and Use Cases
OpenStack Architecture and Use Cases
Jalal Mostafa
 
NGINX Back to Basics: Ingress Controller (Japanese Webinar)
NGINX Back to Basics: Ingress Controller (Japanese Webinar)NGINX Back to Basics: Ingress Controller (Japanese Webinar)
NGINX Back to Basics: Ingress Controller (Japanese Webinar)
NGINX, Inc.
 
Terraform
TerraformTerraform
Terraform
Pathum Fernando ☁
 
Ten reasons to choose Apache Pulsar over Apache Kafka for Event Sourcing_Robe...
Ten reasons to choose Apache Pulsar over Apache Kafka for Event Sourcing_Robe...Ten reasons to choose Apache Pulsar over Apache Kafka for Event Sourcing_Robe...
Ten reasons to choose Apache Pulsar over Apache Kafka for Event Sourcing_Robe...
StreamNative
 
Apache Kafka Introduction
Apache Kafka IntroductionApache Kafka Introduction
Apache Kafka Introduction
Amita Mirajkar
 
From Zero to Hero with Kafka Connect
From Zero to Hero with Kafka ConnectFrom Zero to Hero with Kafka Connect
From Zero to Hero with Kafka Connect
confluent
 
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & PartitioningApache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Guido Schmutz
 
Creating Beautiful Dashboards with Grafana and ClickHouse
Creating Beautiful Dashboards with Grafana and ClickHouseCreating Beautiful Dashboards with Grafana and ClickHouse
Creating Beautiful Dashboards with Grafana and ClickHouse
Altinity Ltd
 
Entity Framework Core
Entity Framework CoreEntity Framework Core
Entity Framework Core
Kiran Shahi
 
Introduction to Docker Containers - Docker Captain
Introduction to Docker Containers - Docker CaptainIntroduction to Docker Containers - Docker Captain
Introduction to Docker Containers - Docker Captain
Ajeet Singh Raina
 
Reactive Microservices with Spring 5: WebFlux
Reactive Microservices with Spring 5: WebFlux Reactive Microservices with Spring 5: WebFlux
Reactive Microservices with Spring 5: WebFlux
Trayan Iliev
 
Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...
Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...
Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...
confluent
 
Prometheus - basics
Prometheus - basicsPrometheus - basics
Prometheus - basics
Juraj Hantak
 
Alphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et ConfigurationAlphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et Configuration
Alphorm
 
PostgreSQL Disaster Recovery with Barman
PostgreSQL Disaster Recovery with BarmanPostgreSQL Disaster Recovery with Barman
PostgreSQL Disaster Recovery with Barman
Gabriele Bartolini
 
Easy, scalable, fault tolerant stream processing with structured streaming - ...
Easy, scalable, fault tolerant stream processing with structured streaming - ...Easy, scalable, fault tolerant stream processing with structured streaming - ...
Easy, scalable, fault tolerant stream processing with structured streaming - ...
Databricks
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
SANG WON PARK
 
Centralized Logging System Using ELK Stack
Centralized Logging System Using ELK StackCentralized Logging System Using ELK Stack
Centralized Logging System Using ELK Stack
Rohit Sharma
 
Change data capture with MongoDB and Kafka.
Change data capture with MongoDB and Kafka.Change data capture with MongoDB and Kafka.
Change data capture with MongoDB and Kafka.
Dan Harvey
 
並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ
Kohei KaiGai
 
OpenStack Architecture and Use Cases
OpenStack Architecture and Use CasesOpenStack Architecture and Use Cases
OpenStack Architecture and Use Cases
Jalal Mostafa
 
NGINX Back to Basics: Ingress Controller (Japanese Webinar)
NGINX Back to Basics: Ingress Controller (Japanese Webinar)NGINX Back to Basics: Ingress Controller (Japanese Webinar)
NGINX Back to Basics: Ingress Controller (Japanese Webinar)
NGINX, Inc.
 
Ten reasons to choose Apache Pulsar over Apache Kafka for Event Sourcing_Robe...
Ten reasons to choose Apache Pulsar over Apache Kafka for Event Sourcing_Robe...Ten reasons to choose Apache Pulsar over Apache Kafka for Event Sourcing_Robe...
Ten reasons to choose Apache Pulsar over Apache Kafka for Event Sourcing_Robe...
StreamNative
 
Apache Kafka Introduction
Apache Kafka IntroductionApache Kafka Introduction
Apache Kafka Introduction
Amita Mirajkar
 
From Zero to Hero with Kafka Connect
From Zero to Hero with Kafka ConnectFrom Zero to Hero with Kafka Connect
From Zero to Hero with Kafka Connect
confluent
 
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & PartitioningApache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Apache Kafka - Event Sourcing, Monitoring, Librdkafka, Scaling & Partitioning
Guido Schmutz
 
Creating Beautiful Dashboards with Grafana and ClickHouse
Creating Beautiful Dashboards with Grafana and ClickHouseCreating Beautiful Dashboards with Grafana and ClickHouse
Creating Beautiful Dashboards with Grafana and ClickHouse
Altinity Ltd
 
Entity Framework Core
Entity Framework CoreEntity Framework Core
Entity Framework Core
Kiran Shahi
 
Introduction to Docker Containers - Docker Captain
Introduction to Docker Containers - Docker CaptainIntroduction to Docker Containers - Docker Captain
Introduction to Docker Containers - Docker Captain
Ajeet Singh Raina
 
Reactive Microservices with Spring 5: WebFlux
Reactive Microservices with Spring 5: WebFlux Reactive Microservices with Spring 5: WebFlux
Reactive Microservices with Spring 5: WebFlux
Trayan Iliev
 
Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...
Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...
Disaster Recovery with MirrorMaker 2.0 (Ryanne Dolan, Cloudera) Kafka Summit ...
confluent
 
Prometheus - basics
Prometheus - basicsPrometheus - basics
Prometheus - basics
Juraj Hantak
 

Similar to Staying Ahead of the Curve with Spring and Cassandra 4 (20)

20170126 big data processing
20170126 big data processing20170126 big data processing
20170126 big data processing
Vienna Data Science Group
 
Koalas: How Well Does Koalas Work?
Koalas: How Well Does Koalas Work?Koalas: How Well Does Koalas Work?
Koalas: How Well Does Koalas Work?
Databricks
 
NYC Cassandra Day - Java Intro
NYC Cassandra Day - Java IntroNYC Cassandra Day - Java Intro
NYC Cassandra Day - Java Intro
Christopher Batey
 
Caerusone
CaerusoneCaerusone
Caerusone
tech caersusoft
 
Building a High-Performance Database with Scala, Akka, and Spark
Building a High-Performance Database with Scala, Akka, and SparkBuilding a High-Performance Database with Scala, Akka, and Spark
Building a High-Performance Database with Scala, Akka, and Spark
Evan Chan
 
WSO2 Quarterly Technical Update
WSO2 Quarterly Technical UpdateWSO2 Quarterly Technical Update
WSO2 Quarterly Technical Update
WSO2
 
Johnny Miller – Cassandra + Spark = Awesome- NoSQL matters Barcelona 2014
Johnny Miller – Cassandra + Spark = Awesome- NoSQL matters Barcelona 2014Johnny Miller – Cassandra + Spark = Awesome- NoSQL matters Barcelona 2014
Johnny Miller – Cassandra + Spark = Awesome- NoSQL matters Barcelona 2014
NoSQLmatters
 
Webinar | Better Together: Apache Cassandra and Apache Kafka
Webinar  |  Better Together: Apache Cassandra and Apache KafkaWebinar  |  Better Together: Apache Cassandra and Apache Kafka
Webinar | Better Together: Apache Cassandra and Apache Kafka
DataStax
 
20161029 py con-mysq-lv3
20161029 py con-mysq-lv320161029 py con-mysq-lv3
20161029 py con-mysq-lv3
Ivan Ma
 
Coherence RoadMap 2018
Coherence RoadMap 2018Coherence RoadMap 2018
Coherence RoadMap 2018
harvraja
 
Django deployment with PaaS
Django deployment with PaaSDjango deployment with PaaS
Django deployment with PaaS
Appsembler
 
StackMate - CloudFormation for CloudStack
StackMate - CloudFormation for CloudStackStackMate - CloudFormation for CloudStack
StackMate - CloudFormation for CloudStack
Chiradeep Vittal
 
Witsml data processing with kafka and spark streaming
Witsml data processing with kafka and spark streamingWitsml data processing with kafka and spark streaming
Witsml data processing with kafka and spark streaming
Mark Kerzner
 
Couchbase Orchestration and Scaling a Caching Infrastructure At LinkedIn.
Couchbase Orchestration and Scaling a Caching Infrastructure At LinkedIn.Couchbase Orchestration and Scaling a Caching Infrastructure At LinkedIn.
Couchbase Orchestration and Scaling a Caching Infrastructure At LinkedIn.
Issa Fattah
 
GraphConnect 2014 SF: From Zero to Graph in 120: Scale
GraphConnect 2014 SF: From Zero to Graph in 120: ScaleGraphConnect 2014 SF: From Zero to Graph in 120: Scale
GraphConnect 2014 SF: From Zero to Graph in 120: Scale
Neo4j
 
Deploying windows containers with kubernetes
Deploying windows containers with kubernetesDeploying windows containers with kubernetes
Deploying windows containers with kubernetes
Ben Hall
 
Owning time series with team apache Strata San Jose 2015
Owning time series with team apache   Strata San Jose 2015Owning time series with team apache   Strata San Jose 2015
Owning time series with team apache Strata San Jose 2015
Patrick McFadin
 
Real time Analytics with Apache Kafka and Apache Spark
Real time Analytics with Apache Kafka and Apache SparkReal time Analytics with Apache Kafka and Apache Spark
Real time Analytics with Apache Kafka and Apache Spark
Rahul Jain
 
Case Study: Using Terraform and Packer to deploy go applications to AWS
Case Study: Using Terraform and Packer to deploy go applications to AWSCase Study: Using Terraform and Packer to deploy go applications to AWS
Case Study: Using Terraform and Packer to deploy go applications to AWS
Patrick Bolduan
 
Apache Spark v3.0.0
Apache Spark v3.0.0Apache Spark v3.0.0
Apache Spark v3.0.0
Jean-Georges Perrin
 
Koalas: How Well Does Koalas Work?
Koalas: How Well Does Koalas Work?Koalas: How Well Does Koalas Work?
Koalas: How Well Does Koalas Work?
Databricks
 
NYC Cassandra Day - Java Intro
NYC Cassandra Day - Java IntroNYC Cassandra Day - Java Intro
NYC Cassandra Day - Java Intro
Christopher Batey
 
Building a High-Performance Database with Scala, Akka, and Spark
Building a High-Performance Database with Scala, Akka, and SparkBuilding a High-Performance Database with Scala, Akka, and Spark
Building a High-Performance Database with Scala, Akka, and Spark
Evan Chan
 
WSO2 Quarterly Technical Update
WSO2 Quarterly Technical UpdateWSO2 Quarterly Technical Update
WSO2 Quarterly Technical Update
WSO2
 
Johnny Miller – Cassandra + Spark = Awesome- NoSQL matters Barcelona 2014
Johnny Miller – Cassandra + Spark = Awesome- NoSQL matters Barcelona 2014Johnny Miller – Cassandra + Spark = Awesome- NoSQL matters Barcelona 2014
Johnny Miller – Cassandra + Spark = Awesome- NoSQL matters Barcelona 2014
NoSQLmatters
 
Webinar | Better Together: Apache Cassandra and Apache Kafka
Webinar  |  Better Together: Apache Cassandra and Apache KafkaWebinar  |  Better Together: Apache Cassandra and Apache Kafka
Webinar | Better Together: Apache Cassandra and Apache Kafka
DataStax
 
20161029 py con-mysq-lv3
20161029 py con-mysq-lv320161029 py con-mysq-lv3
20161029 py con-mysq-lv3
Ivan Ma
 
Coherence RoadMap 2018
Coherence RoadMap 2018Coherence RoadMap 2018
Coherence RoadMap 2018
harvraja
 
Django deployment with PaaS
Django deployment with PaaSDjango deployment with PaaS
Django deployment with PaaS
Appsembler
 
StackMate - CloudFormation for CloudStack
StackMate - CloudFormation for CloudStackStackMate - CloudFormation for CloudStack
StackMate - CloudFormation for CloudStack
Chiradeep Vittal
 
Witsml data processing with kafka and spark streaming
Witsml data processing with kafka and spark streamingWitsml data processing with kafka and spark streaming
Witsml data processing with kafka and spark streaming
Mark Kerzner
 
Couchbase Orchestration and Scaling a Caching Infrastructure At LinkedIn.
Couchbase Orchestration and Scaling a Caching Infrastructure At LinkedIn.Couchbase Orchestration and Scaling a Caching Infrastructure At LinkedIn.
Couchbase Orchestration and Scaling a Caching Infrastructure At LinkedIn.
Issa Fattah
 
GraphConnect 2014 SF: From Zero to Graph in 120: Scale
GraphConnect 2014 SF: From Zero to Graph in 120: ScaleGraphConnect 2014 SF: From Zero to Graph in 120: Scale
GraphConnect 2014 SF: From Zero to Graph in 120: Scale
Neo4j
 
Deploying windows containers with kubernetes
Deploying windows containers with kubernetesDeploying windows containers with kubernetes
Deploying windows containers with kubernetes
Ben Hall
 
Owning time series with team apache Strata San Jose 2015
Owning time series with team apache   Strata San Jose 2015Owning time series with team apache   Strata San Jose 2015
Owning time series with team apache Strata San Jose 2015
Patrick McFadin
 
Real time Analytics with Apache Kafka and Apache Spark
Real time Analytics with Apache Kafka and Apache SparkReal time Analytics with Apache Kafka and Apache Spark
Real time Analytics with Apache Kafka and Apache Spark
Rahul Jain
 
Case Study: Using Terraform and Packer to deploy go applications to AWS
Case Study: Using Terraform and Packer to deploy go applications to AWSCase Study: Using Terraform and Packer to deploy go applications to AWS
Case Study: Using Terraform and Packer to deploy go applications to AWS
Patrick Bolduan
 
Ad

More from VMware Tanzu (20)

Spring into AI presented by Dan Vega 5/14
Spring into AI presented by Dan Vega 5/14Spring into AI presented by Dan Vega 5/14
Spring into AI presented by Dan Vega 5/14
VMware Tanzu
 
What AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About ItWhat AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About It
VMware Tanzu
 
Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023
VMware Tanzu
 
Enhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at ScaleEnhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at Scale
VMware Tanzu
 
Spring Update | July 2023
Spring Update | July 2023Spring Update | July 2023
Spring Update | July 2023
VMware Tanzu
 
Platforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a ProductPlatforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a Product
VMware Tanzu
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready Apps
VMware Tanzu
 
Spring Boot 3 And Beyond
Spring Boot 3 And BeyondSpring Boot 3 And Beyond
Spring Boot 3 And Beyond
VMware Tanzu
 
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfSpring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
VMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
VMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
VMware Tanzu
 
tanzu_developer_connect.pptx
tanzu_developer_connect.pptxtanzu_developer_connect.pptx
tanzu_developer_connect.pptx
VMware Tanzu
 
Tanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - FrenchTanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - French
VMware Tanzu
 
Tanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishTanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - English
VMware Tanzu
 
Virtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVirtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - English
VMware Tanzu
 
Tanzu Developer Connect - French
Tanzu Developer Connect - FrenchTanzu Developer Connect - French
Tanzu Developer Connect - French
VMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
VMware Tanzu
 
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootSpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
VMware Tanzu
 
SpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software EngineerSpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software Engineer
VMware Tanzu
 
SpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs PracticeSpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs Practice
VMware Tanzu
 
Spring into AI presented by Dan Vega 5/14
Spring into AI presented by Dan Vega 5/14Spring into AI presented by Dan Vega 5/14
Spring into AI presented by Dan Vega 5/14
VMware Tanzu
 
What AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About ItWhat AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About It
VMware Tanzu
 
Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023
VMware Tanzu
 
Enhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at ScaleEnhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at Scale
VMware Tanzu
 
Spring Update | July 2023
Spring Update | July 2023Spring Update | July 2023
Spring Update | July 2023
VMware Tanzu
 
Platforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a ProductPlatforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a Product
VMware Tanzu
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready Apps
VMware Tanzu
 
Spring Boot 3 And Beyond
Spring Boot 3 And BeyondSpring Boot 3 And Beyond
Spring Boot 3 And Beyond
VMware Tanzu
 
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfSpring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
VMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
VMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
VMware Tanzu
 
tanzu_developer_connect.pptx
tanzu_developer_connect.pptxtanzu_developer_connect.pptx
tanzu_developer_connect.pptx
VMware Tanzu
 
Tanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - FrenchTanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - French
VMware Tanzu
 
Tanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishTanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - English
VMware Tanzu
 
Virtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVirtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - English
VMware Tanzu
 
Tanzu Developer Connect - French
Tanzu Developer Connect - FrenchTanzu Developer Connect - French
Tanzu Developer Connect - French
VMware Tanzu
 
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
VMware Tanzu
 
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootSpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
VMware Tanzu
 
SpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software EngineerSpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software Engineer
VMware Tanzu
 
SpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs PracticeSpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs Practice
VMware Tanzu
 
Ad

Recently uploaded (20)

Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Andre Hora
 
Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 
Maxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINKMaxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINK
younisnoman75
 
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New VersionPixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
saimabibi60507
 
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfMicrosoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
TechSoup
 
Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025
kashifyounis067
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
FL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full VersionFL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full Version
tahirabibi60507
 
EASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License CodeEASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License Code
aneelaramzan63
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
Andre Hora
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
University of Hawai‘i at Mānoa
 
The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Andre Hora
 
Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 
Maxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINKMaxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINK
younisnoman75
 
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New VersionPixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
Pixologic ZBrush Crack Plus Activation Key [Latest 2025] New Version
saimabibi60507
 
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfMicrosoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
TechSoup
 
Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025
kashifyounis067
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
FL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full VersionFL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full Version
tahirabibi60507
 
EASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License CodeEASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License Code
aneelaramzan63
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
Andre Hora
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
University of Hawai‘i at Mānoa
 
The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 

Staying Ahead of the Curve with Spring and Cassandra 4

  • 1. Staying Ahead of the Curve with Spring and Cassandra 4 2020-09-02 @ SpringOne Alex Dutra, DataStax @alexdut Mark Paluch, VMware @mp911de Latest & Greatest in the Spring + Cassandra Ecosystem
  • 2. What's new in... 1. Apache Cassandra™ 4.0 & DataStax Astra 2. Cassandra Driver 4.x 3. Spring Data Cassandra 3.0 4. Spring Boot 2.3 2 © 2020 Datastax, Inc. All rights reserved.
  • 3. Apache Cassandra™ & DataStax Astra Latest & Greatest 3 © 2020 Datastax, Inc. All rights reserved.
  • 4. Apache Cassandra™ 4.0 in a Nutshell • Introducing Apache Cassandra 4.0 Beta • Approaching GA • First major release since 2016 • Large cross-industry effort • Most stable Apache Cassandra version in history © 2020 Datastax, Inc. All rights reserved.4
  • 5. Apache Cassandra 4.0 Highlights • Zero Copy Streaming • Audit Logging • Improved incremental repair • Virtual tables • Support for Java 11 and ZGC (experimental) • Configurable ports per node © 2020 Datastax, Inc. All rights reserved.5
  • 6. Try It Out! • 4.0-beta2 released in September 2020 • No more API changes expected • Already stable © 2020 Datastax, Inc. All rights reserved.6 docker run cassandra:4.0 cassandra.apache.org/download or
  • 7. DataStax Astra in a Nutshell • Cloud-Native Cassandra as a Service • Zero Lock-In: deploy on AWS or GCP • REST and GraphQL endpoints • Fully managed • Auto-scaling • Easy data modeling © 2020 Datastax, Inc. All rights reserved.7
  • 8. Try It Out! • astra.datastax.com/register • 10GB free tier!! • Spring Boot + Spring Data + Docker example app: github.com/DataStax-Examples/spring-data-starter • Try it on GitPod! © 2020 Datastax, Inc. All rights reserved.8
  • 9. Cassandra Driver Latest & Greatest 9 © 2020 Datastax, Inc. All rights reserved.
  • 10. Cassandra Driver 4 in a Nutshell • 4.0 released in 2019, latest release 4.9.0 • Major rewrite from 3.x • Asynchronous, non-blocking engine • Execution profiles • Global timeouts • Improved load balancing policy • Improved metrics • Improved Object Mapper • Support for Cassandra 4 and DataStax Astra www.datastax.com/blog/2019/03/introducing-java-driver-4 © 2020 Datastax, Inc. All rights reserved.10
  • 11. Upgrading to Cassandra Driver 4 • Maven coordinates changed • Package names changed com.datastax.driver -> com.datastax.oss.driver • Having trouble migrating to driver 4? We can help! • Follow the Upgrade guide: docs.datastax.com/en/developer/java-driver/latest/upgrade_guide • Ask questions at community.datastax.com • Driver mailing list: groups.google.com/a/lists.datastax.com/g/java-driver-user © 2020 Datastax, Inc. All rights reserved.11 New: <dependency> <groupId>com.datastax.oss</groupId> <artifactId>java-driver-core</artifactId> <version>4.8.0</version> </dependency> Old: <dependency> <groupId>com.datastax.cassandra</groupId> <artifactId>cassandra-driver-core</artifactId> <version>3.10.1</version> </dependency>
  • 12. Upgrading to Cassandra Driver 4 • Cluster + Session = CqlSession © 2020 Datastax, Inc. All rights reserved.12 Cluster cluster = null; try { cluster = Cluster.builder() .addContactPoints(...) .build(); Session session = cluster.connect(); session.execute(...); } finally { if (cluster != null) cluster.close(); } try (CqlSession session = CqlSession .builder() .addContactPoint(...) .build()) { session.execute(...); } Old: New:
  • 13. Upgrading to Cassandra Driver 4 • No more Guava! © 2020 Datastax, Inc. All rights reserved.13 Futures.addCallback( session.executeAsync(...), // Guava future new FutureCallback<ResultSet>() { public void onSuccess(ResultSet rs) { Row row = rs.one(); process(row); } public void onFailure(Throwable t) { t.printStackTrace(); } }); session .executeAsync(...) // Java 8 future .thenApply(rs -> rs.one()) .whenComplete( (row, error) -> { if (error == null) { process(row); } else { error.printStackTrace(); } }); Old: New: �� ��
  • 14. Upgrading to Cassandra Driver 4 • Immutability by default, except for builders © 2020 Datastax, Inc. All rights reserved.14 PreparedStatement ps = ...; BoundStatement bs = ps.bind(); bs.setInt("k", 42); PreparedStatement ps = ...; BoundStatement bs = ps.bind(); bs = bs.setInt("k", 42); // bs is immutable!! Old: New: ⚠ BoundStatementBuilder builder = ps.boundStatementBuilder(); builder.setInt("k", 42); // OK, mutable bs = builder.build(); Alternatively, switch to builders (new):
  • 15. Upgrading to Cassandra Driver 4 • Configure your IDE to detect @CheckReturnValue! © 2020 Datastax, Inc. All rights reserved.15
  • 16. Upgrading to Cassandra Driver 4 • New asynchronous pagination API © 2020 Datastax, Inc. All rights reserved.16 ResultSetFuture rs = session.executeAsync(...); ListenableFuture<Void> done = Futures.transform(rs, process(1)); AsyncFunction<ResultSet, Void> process(int page) { return rs -> { // process current page int remaining = rs.getAvailableWithoutFetching(); for (Row row : rs) { ...; if (--remaining == 0) break; } // process next page, if any boolean hasMorePages = rs.getExecutionInfo().getPagingState() != null; return hasMorePages ? Futures.transform( rs.fetchMoreResults(), process(page + 1)) : Futures.immediateFuture(null); }; } �� �� �� CompletionStage<AsyncResultSet> rs = session.executeAsync(...); CompletionStage<Void> done = rs.thenCompose(this::process); CompletionStage<Void> process(AsyncResultSet rs) { // process current page rs.currentPage().forEach(row -> ...); // process next page, if any return rs.hasMorePages() ? rs.fetchNextPage().thenCompose(this::process) : CompletableFuture.completedFuture(null); } Old: New: �� �� ��
  • 17. Cassandra Driver 4 Highlights • New Reactive API © 2020 Datastax, Inc. All rights reserved.17 // ReactiveResultSet extends Publisher<ReactiveRow> ReactiveResultSet rs = session.executeReactive("SELECT ..."); // Wrap with Reactor (or RxJava) Flux.from(rs) .doOnNext(System.out::println) .blockLast(); // query execution happens here docs.datastax.com/en/developer/java-driver/latest/manual/core/reactive
  • 18. Cassandra 4 Support • Multiple ports per node • Contact points now must be entered with a port number • Virtual tables • Can be queried like normal tables • New methods: KeyspaceMetadata.isVirtual() TableMetadata.isVirtual() © 2020 Datastax, Inc. All rights reserved.18
  • 19. Spring Data Cassandra 3.0 19 © 2020 Datastax, Inc. All rights reserved.
  • 20. Spring Data Cassandra 3.0 • Upgraded to Cassandra driver 4 in Neumann release train (3.0) • Embedded Objects (@Embedded(prefix = …)) • @Value support for object creation • Customizable NamingStrategy API © 2020 Datastax, Inc. All rights reserved.20
  • 21. Upgrading to Spring Data Cassandra 3.0 • Your mileage varies depending on level of data access abstraction, meaning: • Repository vs. CassandraOperations usage • Usage of CqlOperations and async CqlOperations Statement API requires special attention • Driver Statement objects are now immutable • Migration guide shipped with reference documentation • Lots of internal changes as consequence of driver design © 2020 Datastax, Inc. All rights reserved.21
  • 22. Upgrade Tasks • Dependency Upgrades (Driver, Spring Data) • Adapt mapped entities to • changed DATE type (com.datastax.driver.core.LocalDate -> java.time.LocalDate) • Changes in @CassandraType (CassandraType.Name enum) • forceQuote in annotations deprecated now • Review and adapt configuration © 2020 Datastax, Inc. All rights reserved.22
  • 23. Configuration • Recommended: Use Spring Boot • Still using XML: cassandra:cluster and cassandra:session now cassandra:session and cassandra:session-factory namespace elements • Programmatic configuration mostly remains the same (YMMV!) © 2020 Datastax, Inc. All rights reserved.23
  • 24. Execution Profiles © 2020 Datastax, Inc. All rights reserved.24 datastax-java-driver { profiles { oltp { basic.request.timeout = 100 milliseconds basic.request.consistency = ONE } olap { basic.request.timeout = 5 seconds basic.request.consistency = QUORUM } } • Associate Statement with settings • Driver configuration referenced by Statement API objects
  • 25. Execution Profiles (Code) © 2020 Datastax, Inc. All rights reserved.25 CqlTemplate template = new CqlTemplate(); SimpleStatement simpleStatement = QueryBuilder.….build(); SimpleStatement newStatement = simpleStatement.setExecutionProfileName("olap"); template.queryForList(newStatement); CqlTemplate olapTemplate = new CqlTemplate(); olapTemplate.setExecutionProfile("olap"); CassandraTemplate cassandraTemplate = … InsertOptions options = InsertOptions.builder().executionProfile("oltp").build(); cassandraTemplate.insert(person, options);
  • 26. Embedded Objects © 2020 Datastax, Inc. All rights reserved.26 public class Customer { @Id UUID id; @Embedded.Nullable(prefix = "billing_") Address billing; @Embedded.Nullable(prefix = "shipping_") Address shipping; static class Address { String street; String city; String zip; } }
  • 27. Embedded Objects • Flattened when persisted • Materialized as nested object • Allow for namespacing through prefix • Can be null or empty © 2020 Datastax, Inc. All rights reserved.27
  • 28. Spring Boot 2.3 28 © 2020 Datastax, Inc. All rights reserved.
  • 29. Spring Boot 2.3 • Upgraded to Cassandra driver 4 in 2.3 • Configuration must be done either: • In application.properties or application.yaml • Under spring.data.cassandra prefix • Or programmatically • Changes to spring.data.cassandra properties: • Some properties were renamed • Contact points must now contain a port (host:port) • Local datacenter is now required • Except for Astra © 2020 Datastax, Inc. All rights reserved.29
  • 30. Configuration Upgrade Example Old: spring.data.cassandra: cluster-name: prod1 contact-points: 127.0.0.1 port: 9042 keyspace-name: ks1 read-timeout: 10s consistency-level: LOCAL_QUORUM fetch-size: 1000 30 © 2020 Datastax, Inc. All rights reserved. New: spring.data.cassandra: session-name: prod1 contact-points: 127.0.0.1:9042 local-datacenter: dc1 keyspace-name: ks1 request: timeout: 10s consistency: LOCAL_QUORUM page-size: 1000
  • 31. Upgrading Application Properties 31 © 2020 Datastax, Inc. All rights reserved. docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html Old property New property spring.data.cassandra.cluster-name spring.data.cassandra.session-name N/A spring.data.cassandra.local-datacenter spring.data.cassandra.read-timeout spring.data.cassandra.connect-timeout spring.data.cassandra.request.timeout spring.data.cassandra.connection.connect-timeout spring.data.cassandra.connection.init-query-timeout spring.data.cassandra.consistency-level spring.data.cassandra.serial-consistency-level spring.data.cassandra.request.consistency spring.data.cassandra.request.serial-consistency spring.data.cassandra.fetch-size spring.data.cassandra.request.page-size spring.data.cassandra.jmx-enabled N/A (driver JMX config)
  • 32. Customizing the Cassandra Session • Avoid declaring your own CqlSession bean! • You would lose Spring Boot's auto-configuration support • Customizers FTW! • Callbacks that can be easily implemented by users • Spring Boot 2.3+ customizers: • SessionBuilderCustomizer (High-level) • DriverConfigLoaderBuilderCustomizer (Low-level, execution profiles) • Declare as regular beans © 2020 Datastax, Inc. All rights reserved.32
  • 33. Customizing the Cassandra Session • Session customization examples © 2020 Datastax, Inc. All rights reserved.33 @Bean public CqlSessionBuilderCustomizer sslCustomizer() { return builder -> builder.withSslContext(…); } @Bean public CqlSessionBuilderCustomizer credentialsCustomizer() { return builder -> builder.withAuthCredentials(…); } @Bean public DriverConfigLoaderBuilderCustomizer oltpProfile() { return builder -> builder.startProfile("oltp"). … .endProfile(); }
  • 34. Connecting to Astra • Typical configuration © 2020 Datastax, Inc. All rights reserved.34 spring.data.cassandra: username: <astra user> password: <astra password> keyspace-name: <astra keyspace> # no contact-points and no local-datacenter for Astra! datastax.astra: secure-connect-bundle: </path/to/secure-connect-bundle.zip> docs.datastax.com/en/developer/java-driver/latest/manual/cloud
  • 35. Connecting to Astra • Passing the secure connect bundle: with a customizer bean © 2020 Datastax, Inc. All rights reserved.35 @Value("${datastax.astra.secure-connect-bundle}") private String astraBundle; @Bean public CqlSessionBuilderCustomizer sessionBuilderCustomizer() { return builder -> builder.withCloudSecureConnectBundle(Paths.get(astraBundle)); } docs.datastax.com/en/developer/java-driver/latest/manual/cloud
  • 36. Compatibility Matrix 36 © 2020 Datastax, Inc. All rights reserved. Your driver version works with... Cassandra Driver Spring Data Cassandra Spring Boot 3.x 2.2 and older 2.2 and older 4.x 3.0 and newer 2.3 and newer • Can't mix versions from different lines
  • 37. Thank You! 37 © 2020 Datastax, Inc. All rights reserved.