SlideShare a Scribd company logo
CASSANDRA DAY DALLAS 2015
SOFTWARE DEVELOPMENT
WITH CASSANDRA:
A WALKTHROUGH
Nate McCall
@zznate
Co-Founder & Sr.Technical Consultant
http://www.slideshare.net/zznate/soft-dev-withcassandraawalkthrough
Licensed under a Creative Commons Attribution-NonCommercial 3.0 New Zealand License
AboutThe Last Pickle.
Work with clients to deliver and improve
Apache Cassandra based solutions.
Based in New Zealand,Australia & USA.
OVERVIEW
DATA MODELING
WRITING CODE
TESTING
REVIEWING
MANAGING ENVIRONMENTS
Overview:
What makes
a software development
project successful?
Overview: Successful Software Development
- it ships
- maintainable
- good test coverage
- check out and build
Overview:
Impedance mismatch:
distributed systems
development
on a laptop.
OVERVIEW
DATA MODELING
WRITING CODE
TESTING
REVIEWING
MANAGING ENVIRONMENTS
Data Modeling:
… a topic unto itself.
But quickly:
Data Modeling - Quickly
• It’s Hard
• Do research
• #1 performance problem
• Don’t “port” your schema!
Data Modeling - Using CQL:
• tools support
• easy tracing (and trace discovery)
• documentation*
*Maintained in-tree:
https://github.com/apache/cassandra/blob/cassandra-1.2/doc/cql3/CQL.textile
https://github.com/apache/cassandra/blob/cassandra-2.0/doc/cql3/CQL.textile
https://github.com/apache/cassandra/blob/cassandra-2.1/doc/cql3/CQL.textile
Data Modeling - DevCenter:
Tools:
DataStax DevCenter
http://www.datastax.com/what-we-offer/products-services/devcenter
Successful Software Development with Apache Cassandra
OVERVIEW
DATA MODELING
WRITING CODE
TESTING
REVIEWING
MANAGING ENVIRONMENTS
Writing Code:
use CQL
Writing Code - Java Driver:
Use the Java Driver
• Reference implementation
• Well written, extensive coverage
• Open source
• Dedicated development resources
https://github.com/datastax/java-driver/
Writing Code - Java Driver:
Existing Spring Users:
Spring Data
Integration
http://projects.spring.io/spring-data-cassandra/
Writing Code - Java Driver:
Four rules for Writing Code
• one Cluster for physical cluster
• one Session per app per keyspace
• use PreparedStatements
• use Batches to reduce network IO
Writing Code - Java Driver:
Configuration is Similar to
Other DB Drivers
(with caveats**)
http://www.datastax.com/documentation/developer/java-driver/2.1/common/drivers/reference/clusterConfiguration_c.html
Writing Cluster - Java Driver - Configuration:
Major Difference:
it’s a Cluster!
Writing Code - Java Driver - Configuration:
Two groups of configurations
• policies
• connections
Writing Code - Java Driver - Configuration:
Three Policy Types:
• load balancing
• connection
• retry
Writing Code - Java Driver - Configuration:
Connection Options:
• protocol*
• pooling**
• socket
*https://github.com/apache/cassandra/blob/cassandra-2.1/doc/native_protocol_v3.spec
**https://github.com/datastax/java-driver/tree/2.1/features/pooling
Writing Code - Java Driver - Configuration:
Code sample for
building a Cluster
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
https://github.com/datastax/java-driver/tree/2.1/features/compression
https://github.com/datastax/java-driver/tree/2.1/features/logging
Writing Code - Java Driver - Pagination:
Simple result iteration
CREATE TABLE IF NOT EXISTS transit.vehicle_data (
vehicle_id text,
speed double,
time timeuuid,
PRIMARY KEY ((customer_id), time)
);
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Writing Code - Java Driver - Pagination:
Simple result iteration:
Java 8 style
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Writing Code - Java Driver - Async
Async!
(not so) Simple
result iteration
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Writing Code - Java Driver - Pagination:
Not much to it:
PreparedStatement prepStmt = session.prepare(CQL_STRING);
BoundStatement boundStmt = new BoundStatement(prepStmt);
boundStatement.setFetchSize(100)
https://github.com/datastax/java-driver/tree/2.1/features/paging
Writing Code - Java Driver - Inserts and Updates:
About Inserts
(and updates)
Writing Code - Java Driver - Inserts and Updates:
Batches: three types
- logged
- unlogged
- counter
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Writing Code - Java Driver - Inserts and Updates:
unlogged batch
Successful Software Development with Apache Cassandra
Writing Code - Java Driver - Inserts and Updates:
LWT:
INSERT INTO vehicle
(vehicle_id, make, model, vin)
VALUES
('VHE-101', 'Toyota','Tercel','1234f')
IF NOT EXISTS;
Writing Code - Java Driver - Inserts and Updates:
LWT:
UPDATE vehicle
SET
vin = '123fa'
WHERE
vehichle_id = 'VHE-101'
IF vin = '1234f';
Writing Code:
ORM?
Great for basic
CRUD operations
http://www.datastax.com/documentation/developer/java-driver/2.1/java-driver/reference/crudOperations.html
https://github.com/datastax/java-driver/blob/2.1/driver-mapping/src/test/java/com/datastax/driver/mapping/MapperTest.java
https://github.com/datastax/java-driver/blob/2.1/driver-mapping/src/test/java/com/datastax/driver/mapping/MapperTest.java
https://github.com/datastax/java-driver/blob/2.1/driver-mapping/src/test/java/com/datastax/driver/mapping/MapperTest.java
https://github.com/datastax/java-driver/blob/2.1/driver-mapping/src/test/java/com/datastax/driver/mapping/MapperTest.java
Writing Code - Java Driver:
A note about
User Defined Types (UTDs)
Writing Code - Java Driver - Using UDTs:
Wait.
- serialized as blobs !!?!
- new version already being discussed*
- will be a painful migration path
* https://issues.apache.org/jira/browse/CASSANDRA-7423
OVERVIEW
DATA MODELING
WRITING CODE
TESTING
REVIEWING
MANAGING ENVIRONMENTS
Testing:
Use a Naming Scheme
• *UnitTest.java: no external resources
• *ITest.java: uses external resources
• *PITest.java: safely parallel “ITest”
Testing:
Tip:
wildcards on the CLI
are not
a naming schema.
Testing:
Group tests
into
logical units
(“suites”)
Testing - Suites:
Benefits of Suites:
• share test data
• share Cassandra instance(s)
• build profiles
<profile>
<id>short</id>
<properties>
<env>default</env>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<groups>unit,short</groups>
<useFile>false</useFile>
<systemPropertyVariables>
<cassandra.version>${cassandra.version}</cassandra.version>
<ipprefix>${ipprefix}</ipprefix>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>short</id>
<properties>
<env>default</env>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<groups>unit,short</groups>
<useFile>false</useFile>
<systemPropertyVariables>
<cassandra.version>${cassandra.version}</cassandra.version>
<ipprefix>${ipprefix}</ipprefix>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
</profile>
Testing - Suites:
Using annotations
for suites in code
Successful Software Development with Apache Cassandra
Testing - Suites:
Interesting test plumbing
• [Before|Afer]Suite
• [Before|After]Group
• Listeners
Testing:
Use Mocks
where possible
Testing:
scassandra:
not quite integration
http://www.scassandra.org/
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Successful Software Development with Apache Cassandra
Testing:
Unit Integration Testing
Testing:
Verify Assumptions:
test failure scenarios
explicitly
Testing - Integration:
Runtime Integrations:
• local
• in-process
• forked-process
Testing - Integration - Runtime:
EmbeddedCassandra
https://github.com/jsevellec/cassandra-unit/
Testing - Integration - Runtime:
ProcessBuilder to
fork Cassandra(s)
Testing - Integration - Runtime:
CCMBridge:
delegate to CCM
https://github.com/datastax/java-driver/blob/2.1/driver-core/src/test/java/com/datastax/driver/core/CCMBridge.java
Testing - Integration:
Best Practice:
Jenkins should be able to
manage your cluster
Testing:
Load Testing Goals
• reproducible metrics
• catch regressions
• test to breakage point
Testing - LoadTesting:
Stress.java
(lot’s of changes recently)
https://www.datastax.com/documentation/cassandra/2.1/cassandra/tools/toolsCStress_t.html
http://www.datastax.com/dev/blog/improved-cassandra-2-1-stress-tool-benchmark-any-schema
Testing - LoadTesting:
Workload recording
and playback coming soon
one day
https://issues.apache.org/jira/browse/CASSANDRA-8929
Testing:
Primary testing goal:
Don’t let
cluster behavior
surprise you.
OVERVIEW
DATA MODELING
WRITING CODE
TESTING
REVIEWING
MANAGING ENVIRONMENTS
Writing Code:
Metrics API
for your own code
https://github.com/apache/cassandra/blob/cassandra-2.1/src/java/org/apache/cassandra/metrics/ColumnFamilyMetrics.java
https://dropwizard.github.io/metrics/3.1.0/
Writing Code - Instrumentation via Metrics API:
Run Riemann
locally
http://riemann.io/
Successful Software Development with Apache Cassandra
Reviewing Said Code:
Using Trace
(and doing so frequently)
Writing Code -Tracing:
Trace per query
via DevCenter
http://www.datastax.com/documentation/cql/3.0/cql/cql_reference/tracing_r.html
Writing Code -Tracing:
Trace per query
via cqlsh
http://www.datastax.com/documentation/cql/3.0/cql/cql_reference/tracing_r.html
Writing Code -Tracing:
Trace per query
via Java Driver
http://docs.datastax.com/en/drivers/java/2.0/com/datastax/driver/core/Statement.html#enableTracing()
cqlsh> tracing on;
Now tracing requests.
cqlsh> SELECT doc_version FROM data.documents_by_version
... WHERE application_id = myapp
... AND document_id = foo
... AND chunk_index = 0
... ORDER BY doc_version ASC
... LIMIT 1;
doc_version
-------------
65856
Tracing session: 46211ab0-2702-11e4-9bcf-8d157d448e6b
Preparing statement | 18:05:44,845 | 192.168.1.197 | 22337
Enqueuing data request to /192.168.1.204 | 18:05:44,845 | 192.168.1.197 | 22504
Sending message to /192.168.1.204 | 18:05:44,847 | 192.168.1.197 | 24498
Message received from /192.168.1.197 | 18:05:44,854 | 192.168.1.204 | 872
Executing single-partition query on documents_by_version | 18:05:44,888 | 192.168.1.204 | 35183
Acquiring sstable references | 18:05:44,888 | 192.168.1.204 | 35459
Merging memtable tombstones | 18:05:44,889 | 192.168.1.204 | 35675
Key cache hit for sstable 2867 | 18:05:44,889 | 192.168.1.204 | 35792
Seeking to partition beginning in data file | 18:05:44,889 | 192.168.1.204 | 35817
…
Preparing statement | 18:05:44,845 | 192.168.1.197 | 22337
Enqueuing data request to /192.168.1.204 | 18:05:44,845 | 192.168.1.197 | 22504
Sending message to /192.168.1.204 | 18:05:44,847 | 192.168.1.197 | 24498
Message received from /192.168.1.197 | 18:05:44,854 | 192.168.1.204 | 872
Executing single-partition query on documents_by_version | 18:05:44,888 | 192.168.1.204 | 35183
Acquiring sstable references | 18:05:44,888 | 192.168.1.204 | 35459
Merging memtable tombstones | 18:05:44,889 | 192.168.1.204 | 35675
Key cache hit for sstable 2867 | 18:05:44,889 | 192.168.1.204 | 35792
Seeking to partition beginning in data file | 18:05:44,889 | 192.168.1.204 | 35817
…
…
Merging data from memtables and 8 sstables | 18:05:44,892 | 192.168.1.204 | 38605
Read 1 live and 2667 tombstoned cells | 18:05:54,135 | 192.168.1.204 | 9282428
Enqueuing response to /192.168.1.197 | 18:05:54,136 | 192.168.1.204 | 9283423
Sending message to /192.168.1.197 | 18:05:54,138 | 192.168.1.204 | 9284753
Message received from /192.168.1.204 | 18:05:54,155 | 192.168.1.197 | 9332505
Processing response from /192.168.1.204 | 18:05:54,158 | 192.168.1.197 | 9335372
Request complete | 18:05:54,158 | 192.168.1.197 | 9335592
…
Merging data from memtables and 8 sstables | 18:05:44,892 | 192.168.1.204 | 38605
Read 1 live and 2667 tombstoned cells | 18:05:54,135 | 192.168.1.204 | 9282428
Enqueuing response to /192.168.1.197 | 18:05:54,136 | 192.168.1.204 | 9283423
Sending message to /192.168.1.197 | 18:05:54,138 | 192.168.1.204 | 9284753
Message received from /192.168.1.204 | 18:05:54,155 | 192.168.1.197 | 9332505
Processing response from /192.168.1.204 | 18:05:54,158 | 192.168.1.197 | 9335372
Request complete | 18:05:54,158 | 192.168.1.197 | 9335592
!!?!
…
Merging data from memtables and 8 sstables | 18:05:44,892 | 192.168.1.204 | 38605
Read 1 live and 2667 tombstoned cells | 18:05:54,135 | 192.168.1.204 | 9282428
Enqueuing response to /192.168.1.197 | 18:05:54,136 | 192.168.1.204 | 9283423
Sending message to /192.168.1.197 | 18:05:54,138 | 192.168.1.204 | 9284753
Message received from /192.168.1.204 | 18:05:54,155 | 192.168.1.197 | 9332505
Processing response from /192.168.1.204 | 18:05:54,158 | 192.168.1.197 | 9335372
Request complete | 18:05:54,158 | 192.168.1.197 | 9335592
Writing Code -Tracing:
Enable traces
in the driver
http://www.datastax.com/documentation/developer/java-driver/2.0/java-driver/tracing_t.html
Writing Code -Tracing:
`nodetool settraceprobability`
Writing Code -Tracing:
…then make sure
you try it again
with a node down!
Writing Code -Tracing:
Final note on tracing:
do it sparingly
Writing Code -Tracing:
Enable query latency logging
https://github.com/datastax/java-driver/tree/2.1/features/logging
Writing Code:
LoggingVerbosity
can be changed
dynamically**
** since 0.4rc1
http://www.datastax.com/documentation/cassandra/2.0/cassandra/configuration/configLoggingLevels_r.html
Writing Code:
nodetool for developers
• cfstats
• cfshistograms
• proxyhistograms
Writing Code - nodetool - cfstats:
cfstats:
per-table statistics about size
and performance
(single most useful command)
Writing Code - nodetool - cfhistograms:
cfhistograms:
column count and partition
size vs. latency distribution
Writing Code - nodetool - proxyhistograms:
proxyhistograms:
performance of inter-cluster
requests
OVERVIEW
DATA MODELING
WRITING CODE
TESTING
REVIEWING
MANAGING ENVIRONMENTS
Managing Environments:
Configuration Management
is Essential
Managing Environments:
Laptop to Production
with NO
Manual Modifications!
Managing Environments:
Running Cassandra
during development
Managing Environments - Running Cassandra:
Local Cassandra
• easy to setup
• you control it
• but then you control it!
Managing Environments - Running Cassandra:
CCM
• supports multiple versions
• clusters and datacenters
• up/down individual nodes
https://github.com/pcmanus/ccm
Managing Environments - Running Cassandra:
Docker:
• Official image available with excellent docs*
• Docker Compose for more granular control**
*https://hub.docker.com/_/cassandra/
**https://docs.docker.com/compose/
Managing Environments - Running Cassandra:
Vagrant
• isolated, controlled environment
• configuration mgmt integration
• same CM for production!
http://www.vagrantup.com/
server_count = 3
network = '192.168.2.'
first_ip = 10
servers = []
seeds = []
cassandra_tokens = []
(0..server_count-1).each do |i|
name = 'node' + (i + 1).to_s
ip = network + (first_ip + i).to_s
seeds << ip
servers << {'name' => name,
'ip' => ip,
'initial_token' => (2**64 / server_count * i) - 2**63}
end
server_count = 3
network = '192.168.2.'
first_ip = 10
servers = []
seeds = []
cassandra_tokens = []
(0..server_count-1).each do |i|
name = 'node' + (i + 1).to_s
ip = network + (first_ip + i).to_s
seeds << ip
servers << {'name' => name,
'ip' => ip,
'initial_token' => (2**64 / server_count * i) - 2**63}
end
server_count = 3
network = '192.168.2.'
first_ip = 10
servers = []
seeds = []
cassandra_tokens = []
(0..server_count-1).each do |i|
name = 'node' + (i + 1).to_s
ip = network + (first_ip + i).to_s
seeds << ip
servers << {'name' => name,
'ip' => ip,
'initial_token' => (2**64 / server_count * i) - 2**63}
end
chef.json = {
:cassandra => {'cluster_name' => 'VerifyCluster',
'version' => '2.0.8',
'setup_jna' => false,
'max_heap_size' => '512M',
'heap_new_size' => '100M',
'initial_token' => server['initial_token'],
'seeds' => "192.168.2.10",
'listen_address' => server['ip'],
'broadcast_address' => server['ip'],
'rpc_address' => server['ip'],
'conconcurrent_reads' => "2",
'concurrent_writes' => "2",
'memtable_flush_queue_size' => "2",
'compaction_throughput_mb_per_sec' => "8",
'key_cache_size_in_mb' => "4",
'key_cache_save_period' => "0",
'native_transport_min_threads' => "2",
'native_transport_max_threads' => "4"
},
}
Managing Environments - Running Cassandra:
Mesos?
Compelling features, but not quite there
(though it won't be long)
http://mesosphere.github.io/cassandra-mesos/docs/
http://www.datastax.com/2015/08/a-match-made-in-heaven-cassandra-and-mesos
Summary:
• Cluster-level defaults, override in queries
• Follow existing patterns (it's not that different)
• Segment your tests and use build profiles
• Monitor and Instrument
• Use reference implementation drivers
• Control your environments
• Verify any assumptions about failures
Thanks.
Nate McCall
@zznate
Co-Founder & Sr.Technical Consultant
www.thelastpickle.com
#CassandraDays

More Related Content

What's hot (20)

PPTX
Strata+Hadoop 2017 San Jose: Lessons from a year of supporting Apache Kafka
confluent
 
PDF
Scylla Summit 2016: Outbrain Case Study - Lowering Latency While Doing 20X IO...
ScyllaDB
 
PDF
Introduction to Apache Cassandra™ + What’s New in 4.0
DataStax
 
PPT
Webinar: Getting Started with Apache Cassandra
DataStax
 
PDF
Micro-batching: High-performance Writes (Adam Zegelin, Instaclustr) | Cassand...
DataStax
 
PDF
Advanced Cassandra
DataStax Academy
 
PPTX
Building a Multi-Region Cluster at Target (Aaron Ploetz, Target) | Cassandra ...
DataStax
 
PPTX
How to size up an Apache Cassandra cluster (Training)
DataStax Academy
 
PPTX
Webinar: DataStax Training - Everything you need to become a Cassandra Rockstar
DataStax
 
PDF
Using all of the high availability options in MariaDB
MariaDB plc
 
PPTX
Running 400-node Cassandra + Spark Clusters in Azure (Anubhav Kale, Microsoft...
DataStax
 
PDF
Introduction to Cassandra Architecture
nickmbailey
 
ODP
Intro to cassandra
Aaron Ploetz
 
PDF
Best Practice for Achieving High Availability in MariaDB
MariaDB plc
 
PPTX
Running MariaDB in multiple data centers
MariaDB plc
 
PPTX
Spark Tips & Tricks
Jason Hubbard
 
PDF
Cassandra Summit 2014: Active-Active Cassandra Behind the Scenes
DataStax Academy
 
PDF
Scylla Summit 2016: Scylla at Samsung SDS
ScyllaDB
 
PPTX
Apache Cassandra at the Geek2Geek Berlin
Christian Johannsen
 
PDF
Live traffic capture and replay in cassandra 4.0
Vinay Kumar Chella
 
Strata+Hadoop 2017 San Jose: Lessons from a year of supporting Apache Kafka
confluent
 
Scylla Summit 2016: Outbrain Case Study - Lowering Latency While Doing 20X IO...
ScyllaDB
 
Introduction to Apache Cassandra™ + What’s New in 4.0
DataStax
 
Webinar: Getting Started with Apache Cassandra
DataStax
 
Micro-batching: High-performance Writes (Adam Zegelin, Instaclustr) | Cassand...
DataStax
 
Advanced Cassandra
DataStax Academy
 
Building a Multi-Region Cluster at Target (Aaron Ploetz, Target) | Cassandra ...
DataStax
 
How to size up an Apache Cassandra cluster (Training)
DataStax Academy
 
Webinar: DataStax Training - Everything you need to become a Cassandra Rockstar
DataStax
 
Using all of the high availability options in MariaDB
MariaDB plc
 
Running 400-node Cassandra + Spark Clusters in Azure (Anubhav Kale, Microsoft...
DataStax
 
Introduction to Cassandra Architecture
nickmbailey
 
Intro to cassandra
Aaron Ploetz
 
Best Practice for Achieving High Availability in MariaDB
MariaDB plc
 
Running MariaDB in multiple data centers
MariaDB plc
 
Spark Tips & Tricks
Jason Hubbard
 
Cassandra Summit 2014: Active-Active Cassandra Behind the Scenes
DataStax Academy
 
Scylla Summit 2016: Scylla at Samsung SDS
ScyllaDB
 
Apache Cassandra at the Geek2Geek Berlin
Christian Johannsen
 
Live traffic capture and replay in cassandra 4.0
Vinay Kumar Chella
 

Viewers also liked (20)

PDF
Cassandra: One (is the loneliest number)
DataStax Academy
 
PDF
Getting Started with Graph Databases
DataStax Academy
 
PDF
Analytics with Spark and Cassandra
DataStax Academy
 
PDF
Cassandra Data Maintenance with Spark
DataStax Academy
 
PDF
Coursera's Adoption of Cassandra
DataStax Academy
 
PDF
Production Ready Cassandra (Beginner)
DataStax Academy
 
PDF
New features in 3.0
DataStax Academy
 
PDF
Introduction to .Net Driver
DataStax Academy
 
PPTX
Spark Cassandra Connector: Past, Present and Furure
DataStax Academy
 
PDF
Playlists at Spotify
DataStax Academy
 
PPTX
Lessons Learned with Cassandra and Spark at the US Patent and Trademark Office
DataStax Academy
 
PPTX
Using Event-Driven Architectures with Cassandra
DataStax Academy
 
PDF
Traveler's Guide to Cassandra
DataStax Academy
 
PPTX
Bad Habits Die Hard
DataStax Academy
 
PDF
Standing Up Your First Cluster
DataStax Academy
 
PDF
Cassandra Core Concepts
DataStax Academy
 
PDF
Apache Cassandra and Drivers
DataStax Academy
 
PDF
Introduction to Data Modeling with Apache Cassandra
DataStax Academy
 
PDF
Production Ready Cassandra
DataStax Academy
 
PDF
Coursera Cassandra Driver
DataStax Academy
 
Cassandra: One (is the loneliest number)
DataStax Academy
 
Getting Started with Graph Databases
DataStax Academy
 
Analytics with Spark and Cassandra
DataStax Academy
 
Cassandra Data Maintenance with Spark
DataStax Academy
 
Coursera's Adoption of Cassandra
DataStax Academy
 
Production Ready Cassandra (Beginner)
DataStax Academy
 
New features in 3.0
DataStax Academy
 
Introduction to .Net Driver
DataStax Academy
 
Spark Cassandra Connector: Past, Present and Furure
DataStax Academy
 
Playlists at Spotify
DataStax Academy
 
Lessons Learned with Cassandra and Spark at the US Patent and Trademark Office
DataStax Academy
 
Using Event-Driven Architectures with Cassandra
DataStax Academy
 
Traveler's Guide to Cassandra
DataStax Academy
 
Bad Habits Die Hard
DataStax Academy
 
Standing Up Your First Cluster
DataStax Academy
 
Cassandra Core Concepts
DataStax Academy
 
Apache Cassandra and Drivers
DataStax Academy
 
Introduction to Data Modeling with Apache Cassandra
DataStax Academy
 
Production Ready Cassandra
DataStax Academy
 
Coursera Cassandra Driver
DataStax Academy
 
Ad

Similar to Successful Software Development with Apache Cassandra (20)

PPTX
Lean microservices through ahead of time compilation (Tobias Piper, Loveholid...
London Microservices
 
ODP
DB proxy server test: run tests on tens of virtual machines with Jenkins, Vag...
Timofey Turenko
 
PDF
Taming the Cloud Database with Apache jclouds, ApacheCon Europe 2014
zshoylev
 
PDF
Running your Java EE 6 applications in the Cloud (FISL 12)
Arun Gupta
 
PDF
Cloud-native Java EE-volution
QAware GmbH
 
PDF
Running your Java EE 6 Applications in the Cloud
Arun Gupta
 
PDF
JFokus 2011 - Running your Java EE 6 apps in the Cloud
Arun Gupta
 
PDF
JavaOne 2014: Taming the Cloud Database with jclouds
zshoylev
 
PDF
SamzaSQL QCon'16 presentation
Yi Pan
 
PPTX
GPS Insight on Using Presto with Scylla for Data Analytics and Data Archival
ScyllaDB
 
PPTX
Migrating Existing Open Source Machine Learning to Azure
Revolution Analytics
 
PDF
MongoDB World 2019: Why NBCUniversal Migrated to MongoDB Atlas
MongoDB
 
PDF
Performance Benchmarking of Clouds Evaluating OpenStack
Pradeep Kumar
 
PPTX
Dropwizard Introduction
Anthony Chen
 
PDF
JavaOne India 2011 - Running your Java EE 6 Apps in the Cloud
Arun Gupta
 
PDF
Running your Java EE 6 Apps in the Cloud - JavaOne India 2011
Arun Gupta
 
PDF
Session 3 - CloudStack Test Automation and CI
tcloudcomputing-tw
 
PDF
Scaling up Near Real-time Analytics @Uber &LinkedIn
C4Media
 
PPTX
Tooling for Machine Learning: AWS Products, Open Source Tools, and DevOps Pra...
SQUADEX
 
PPTX
Why NBC Universal Migrated to MongoDB Atlas
Datavail
 
Lean microservices through ahead of time compilation (Tobias Piper, Loveholid...
London Microservices
 
DB proxy server test: run tests on tens of virtual machines with Jenkins, Vag...
Timofey Turenko
 
Taming the Cloud Database with Apache jclouds, ApacheCon Europe 2014
zshoylev
 
Running your Java EE 6 applications in the Cloud (FISL 12)
Arun Gupta
 
Cloud-native Java EE-volution
QAware GmbH
 
Running your Java EE 6 Applications in the Cloud
Arun Gupta
 
JFokus 2011 - Running your Java EE 6 apps in the Cloud
Arun Gupta
 
JavaOne 2014: Taming the Cloud Database with jclouds
zshoylev
 
SamzaSQL QCon'16 presentation
Yi Pan
 
GPS Insight on Using Presto with Scylla for Data Analytics and Data Archival
ScyllaDB
 
Migrating Existing Open Source Machine Learning to Azure
Revolution Analytics
 
MongoDB World 2019: Why NBCUniversal Migrated to MongoDB Atlas
MongoDB
 
Performance Benchmarking of Clouds Evaluating OpenStack
Pradeep Kumar
 
Dropwizard Introduction
Anthony Chen
 
JavaOne India 2011 - Running your Java EE 6 Apps in the Cloud
Arun Gupta
 
Running your Java EE 6 Apps in the Cloud - JavaOne India 2011
Arun Gupta
 
Session 3 - CloudStack Test Automation and CI
tcloudcomputing-tw
 
Scaling up Near Real-time Analytics @Uber &LinkedIn
C4Media
 
Tooling for Machine Learning: AWS Products, Open Source Tools, and DevOps Pra...
SQUADEX
 
Why NBC Universal Migrated to MongoDB Atlas
Datavail
 
Ad

More from DataStax Academy (13)

PDF
Forrester CXNYC 2017 - Delivering great real-time cx is a true craft
DataStax Academy
 
PPTX
Introduction to DataStax Enterprise Graph Database
DataStax Academy
 
PPTX
Introduction to DataStax Enterprise Advanced Replication with Apache Cassandra
DataStax Academy
 
PPTX
Cassandra on Docker @ Walmart Labs
DataStax Academy
 
PDF
Cassandra 3.0 Data Modeling
DataStax Academy
 
PPTX
Cassandra Adoption on Cisco UCS & Open stack
DataStax Academy
 
PDF
Data Modeling for Apache Cassandra
DataStax Academy
 
PDF
Cassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & Python
DataStax Academy
 
PPTX
Cassandra @ Sony: The good, the bad, and the ugly part 1
DataStax Academy
 
PPTX
Cassandra @ Sony: The good, the bad, and the ugly part 2
DataStax Academy
 
PDF
Real Time Analytics with Dse
DataStax Academy
 
PPTX
Enabling Search in your Cassandra Application with DataStax Enterprise
DataStax Academy
 
PDF
Advanced Data Modeling with Apache Cassandra
DataStax Academy
 
Forrester CXNYC 2017 - Delivering great real-time cx is a true craft
DataStax Academy
 
Introduction to DataStax Enterprise Graph Database
DataStax Academy
 
Introduction to DataStax Enterprise Advanced Replication with Apache Cassandra
DataStax Academy
 
Cassandra on Docker @ Walmart Labs
DataStax Academy
 
Cassandra 3.0 Data Modeling
DataStax Academy
 
Cassandra Adoption on Cisco UCS & Open stack
DataStax Academy
 
Data Modeling for Apache Cassandra
DataStax Academy
 
Cassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & Python
DataStax Academy
 
Cassandra @ Sony: The good, the bad, and the ugly part 1
DataStax Academy
 
Cassandra @ Sony: The good, the bad, and the ugly part 2
DataStax Academy
 
Real Time Analytics with Dse
DataStax Academy
 
Enabling Search in your Cassandra Application with DataStax Enterprise
DataStax Academy
 
Advanced Data Modeling with Apache Cassandra
DataStax Academy
 

Recently uploaded (20)

PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
Biography of Daniel Podor.pdf
Daniel Podor
 
PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PDF
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Biography of Daniel Podor.pdf
Daniel Podor
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 

Successful Software Development with Apache Cassandra