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)

PDF
YaJug - Cassandra for Java Developers
Michaël Figuière
 
PDF
Geneva JUG - Cassandra for Java Developers
Michaël Figuière
 
PDF
Staying Ahead of the Curve with Spring and Cassandra 4 (SpringOne 2020)
Alexandre Dutra
 
PDF
Staying Ahead of the Curve with Spring and Cassandra 4
VMware Tanzu
 
PDF
Cassandra 2.0 to 2.1
Johnny Miller
 
PDF
Going native with Apache Cassandra
Johnny Miller
 
PDF
DataStax | DataStax Tools for Developers (Alex Popescu) | Cassandra Summit 2016
DataStax
 
PPTX
DataStax NYC Java Meetup: Cassandra with Java
carolinedatastax
 
PDF
Cassandra drivers and libraries
Duyhai Doan
 
PDF
Top 10 Best Practices for Apache Cassandra and DataStax Enterprise
DataStax
 
PDF
Cassandra Day Atlanta 2015: Software Development with Apache Cassandra: A Wal...
DataStax Academy
 
PDF
The Top 5 Factors to Consider When Choosing a Big Data Solution
DATAVERSITY
 
PDF
Top 5 Considerations for a Big Data Solution
DataStax
 
PDF
Cassandra: An Alien Technology That's not so Alien
Brian Hess
 
PDF
Developing with Cassandra
Sperasoft
 
PPTX
Getting Big Value from Big Data
DataStax
 
PDF
Equinix Big Data Platform and Cassandra - A view into the journey
Praveen Kumar
 
PDF
Paris Cassandra Meetup - Cassandra for Developers
Michaël Figuière
 
PPTX
Webinar: Get On-Demand Education Anytime, Anywhere with Coursera and DataStax
DataStax
 
PDF
Cassandra Drivers and Tools
Duyhai Doan
 
YaJug - Cassandra for Java Developers
Michaël Figuière
 
Geneva JUG - Cassandra for Java Developers
Michaël Figuière
 
Staying Ahead of the Curve with Spring and Cassandra 4 (SpringOne 2020)
Alexandre Dutra
 
Staying Ahead of the Curve with Spring and Cassandra 4
VMware Tanzu
 
Cassandra 2.0 to 2.1
Johnny Miller
 
Going native with Apache Cassandra
Johnny Miller
 
DataStax | DataStax Tools for Developers (Alex Popescu) | Cassandra Summit 2016
DataStax
 
DataStax NYC Java Meetup: Cassandra with Java
carolinedatastax
 
Cassandra drivers and libraries
Duyhai Doan
 
Top 10 Best Practices for Apache Cassandra and DataStax Enterprise
DataStax
 
Cassandra Day Atlanta 2015: Software Development with Apache Cassandra: A Wal...
DataStax Academy
 
The Top 5 Factors to Consider When Choosing a Big Data Solution
DATAVERSITY
 
Top 5 Considerations for a Big Data Solution
DataStax
 
Cassandra: An Alien Technology That's not so Alien
Brian Hess
 
Developing with Cassandra
Sperasoft
 
Getting Big Value from Big Data
DataStax
 
Equinix Big Data Platform and Cassandra - A view into the journey
Praveen Kumar
 
Paris Cassandra Meetup - Cassandra for Developers
Michaël Figuière
 
Webinar: Get On-Demand Education Anytime, Anywhere with Coursera and DataStax
DataStax
 
Cassandra Drivers and Tools
Duyhai Doan
 
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
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
PDF
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
PDF
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PPTX
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
PPTX
Digital Circuits, important subject in CS
contactparinay1
 
PDF
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
PPTX
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PPT
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
PDF
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PPTX
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
PDF
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
Digital Circuits, important subject in CS
contactparinay1
 
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 

Successful Software Development with Apache Cassandra