blob: e8796f0e68882fd8a24d71e7ab0702d9728ad464 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-61232409-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-61232409-1');
</script>
<meta charset="UTF-8">
<meta name="ignite-version" content="2.9.1" />
<title>Ignite Cassandra Integration Usage Examples | Ignite Documentation</title>
<link rel="canonical" href="/docs/latest/extensions-and-integrations/cassandra/usage-examples" />
<link rel="stylesheet" href="/assets/css/styles.css?1609302721">
<link rel="stylesheet" href="/assets/css/asciidoc-pygments.css">
<link rel="shortcut icon" href="/favicon.ico">
<meta name='viewport' content='width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0'>
<script type="text/javascript" src="/assets/js/anchor.min.js?1609302721"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
</head>
<body>
<header>
<!--#include virtual="/includes/promotion_banner.html" -->
<div class="container">
<button type='button' class='menu' title='Docs menu'>
<img src="/assets/images/menu-icon.svg"/>
</button>
<div class='home'>
<a href="/" class='home' title='Apache Ignite home'>
<img src="/assets/images/apache_ignite_logo.svg" alt="Apache Ignite logo" width="103" >
</a>
</div>
<select id="version-selector">
<option value="2.9.1">2.9.1</option>
</select>
<nav id="api-docs">
<li><a href="#">APIs</a>
<nav class='dropdown'>
<li class="dropdown-item"><a href="/releases/latest/javadoc/index.html">Java</a></li>
<li class="dropdown-item"><a href="/releases/latest/dotnetdoc/api/">C#/.NET</a></li>
<li class="dropdown-item"><a href="/releases/latest/cppdoc/index.html">C++</a></li>
<li class="dropdown-item"><a href="/releases/latest/scaladoc/scalar/index.html#org.apache.ignite.scalar.scalar$">Scala</a></li>
</nav>
</li>
<li><a href="#">Examples</a>
<nav class="dropdown">
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/examples" target="_blank" rel="noopener" title="Apache Ignite Java examples">Java</a></li>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/dotnet/examples" target="_blank" rel="noopener" title="Apache Ignite C#/.NET examples">C#/.NET</a></li>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/cpp/examples" target="_blank" rel="noopener" title="Apache Ignite C++ examples">C++</a></li>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/python/examples" target="_blank" rel="noopener" title="Apache Ignite Python examples">Python</a></li>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/nodejs/examples" target="_blank" rel="noopener" title="Apache Ignite NodeJS examples">NodeJS</a></li>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/php/examples" target="_blank" rel="noopener" title="Apache Ignite PHP examples">PHP</a></li>
</nav>
</li>
</nav>
<form class='search'>
<button class="search-close" type='button'><img src='/assets/images/cancel.svg'></button>
<input type="search" placeholder="Search…" id="search-input">
</form>
<button type='button' class='search-toggle'><img src='/assets/images/search.svg'></button>
<nav id="lang-selector">
<li><a href="#"><img src="/assets/images/icon_lang_en.png" alt="English language icon" /><span></span></a>
<nav class="dropdown">
<li class="dropdown-item"><a href="/docs/latest/" ><img src="/assets/images/icon_lang_en.png" alt="English language icon" /><span>English</span></a></li>
<li class="dropdown-item"><a href="https://www.ignite-service.cn/doc/java/" target="_blank" rel="noopener"><img src="/assets/images/icon_lang_cn.png" alt="Chinese language icon" /><span>Chinese</span></a></li>
</nav>
</li>
</nav>
<button type='button' class='top-nav-toggle'></button>
</div>
</header>
<link rel="stylesheet" href="/assets/css/docs.css">
<section class='page-docs'>
<nav class='left-nav' data-swiftype-index='false'>
<li>
<a href="/docs/latest/index" class='' >Documentation Overview</a>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Quick Start Guides<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/quick-start/java"
class=''
>Java</a>
</li>
<li>
<a href="/docs/latest/quick-start/dotnet"
class=''
>.NET/C#</a>
</li>
<li>
<a href="/docs/latest/quick-start/cpp"
class=''
>C++</a>
</li>
<li>
<a href="/docs/latest/quick-start/python"
class=''
>Python</a>
</li>
<li>
<a href="/docs/latest/quick-start/nodejs"
class=''
>Node.JS</a>
</li>
<li>
<a href="/docs/latest/quick-start/sql"
class=''
>SQL</a>
</li>
<li>
<a href="/docs/latest/quick-start/php"
class=''
>PHP</a>
</li>
<li>
<a href="/docs/latest/quick-start/restapi"
class=''
>REST API</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Installation<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/installation/installing-using-zip"
class=''
>Installing Using ZIP Archive</a>
</li>
<li>
<a href="/docs/latest/installation/installing-using-docker"
class=''
>Installing Using Docker</a>
</li>
<li>
<a href="/docs/latest/installation/deb-rpm"
class=''
>Installing DEB or RPM package</a>
</li>
<li>
<button
type='button'
class='collapsed '>Kubernetes<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/installation/kubernetes/amazon-eks-deployment" class=''>Amazon EKS</a></li>
<li><a href="/docs/latest/installation/kubernetes/azure-deployment" class=''>Azure Kubernetes Service</a></li>
<li><a href="/docs/latest/installation/kubernetes/gke-deployment" class=''>Google Kubernetes Engine</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/installation/vmware-installation"
class=''
>VMWare</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Setting Up<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/understanding-configuration"
class=''
>Understanding Configuration</a>
</li>
<li>
<a href="/docs/latest/setup"
class=''
>Setting Up</a>
</li>
<li>
<a href="/docs/latest/logging"
class=''
>Configuring Logging</a>
</li>
<li>
<a href="/docs/latest/resources-injection"
class=''
>Resources Injection</a>
</li>
</nav>
</li>
<li>
<a href="/docs/latest/starting-nodes" class='' >Starting and Stopping Nodes</a>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Clustering<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/clustering/clustering"
class=''
>Overview</a>
</li>
<li>
<a href="/docs/latest/clustering/tcp-ip-discovery"
class=''
>TCP/IP Discovery</a>
</li>
<li>
<a href="/docs/latest/clustering/zookeeper-discovery"
class=''
>ZooKeeper Discovery</a>
</li>
<li>
<a href="/docs/latest/clustering/discovery-in-the-cloud"
class=''
>Discovery in the Cloud</a>
</li>
<li>
<a href="/docs/latest/clustering/network-configuration"
class=''
>Network Configuration</a>
</li>
<li>
<a href="/docs/latest/clustering/connect-client-nodes"
class=''
>Connecting Client Nodes</a>
</li>
<li>
<a href="/docs/latest/clustering/baseline-topology"
class=''
>Baseline Topology</a>
</li>
<li>
<a href="/docs/latest/clustering/running-client-nodes-behind-nat"
class=''
>Running Client Nodes Behind NAT</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Thin Clients<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/thin-clients/getting-started-with-thin-clients"
class=''
>Thin Clients Overview</a>
</li>
<li>
<a href="/docs/latest/thin-clients/java-thin-client"
class=''
>Java Thin Client</a>
</li>
<li>
<a href="/docs/latest/thin-clients/dotnet-thin-client"
class=''
>.NET Thin Client</a>
</li>
<li>
<a href="/docs/latest/thin-clients/cpp-thin-client"
class=''
>C++ Thin Client</a>
</li>
<li>
<a href="/docs/latest/thin-clients/python-thin-client"
class=''
>Python Thin Client</a>
</li>
<li>
<a href="/docs/latest/thin-clients/php-thin-client"
class=''
>PHP Thin Client</a>
</li>
<li>
<a href="/docs/latest/thin-clients/nodejs-thin-client"
class=''
>Node.js Thin Client</a>
</li>
<li>
<button
type='button'
class='collapsed '>Binary Client Protocol<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/binary-client-protocol/binary-client-protocol" class=''>Binary Client Protocol</a></li>
<li><a href="/docs/latest/binary-client-protocol/data-format" class=''>Data Format</a></li>
<li><a href="/docs/latest/binary-client-protocol/key-value-queries" class=''>Key-Value Queries</a></li>
<li><a href="/docs/latest/binary-client-protocol/sql-and-scan-queries" class=''>SQL and Scan Queries</a></li>
<li><a href="/docs/latest/binary-client-protocol/binary-type-metadata" class=''>Binary Types Metadata</a></li>
<li><a href="/docs/latest/binary-client-protocol/cache-configuration" class=''>Cache Configuration</a></li>
</nav>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Data Modeling<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/data-modeling/data-modeling"
class=''
>Introduction</a>
</li>
<li>
<a href="/docs/latest/data-modeling/data-partitioning"
class=''
>Data Partitioning</a>
</li>
<li>
<a href="/docs/latest/data-modeling/affinity-collocation"
class=''
>Affinity Colocation</a>
</li>
<li>
<a href="/docs/latest/data-modeling/binary-marshaller"
class=''
>Binary Marshaller</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Configuring Memory<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/memory-architecture"
class=''
>Memory Architecture</a>
</li>
<li>
<a href="/docs/latest/memory-configuration/data-regions"
class=''
>Configuring Data Regions</a>
</li>
<li>
<a href="/docs/latest/memory-configuration/eviction-policies"
class=''
>Eviction Policies</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Configuring Persistence<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/persistence/native-persistence"
class=''
>Ignite Persistence</a>
</li>
<li>
<a href="/docs/latest/persistence/external-storage"
class=''
>External Storage</a>
</li>
<li>
<a href="/docs/latest/persistence/swap"
class=''
>Swapping</a>
</li>
<li>
<a href="/docs/latest/persistence/custom-cache-store"
class=''
>Implementing Custom Cache Store</a>
</li>
<li>
<a href="/docs/latest/persistence/snapshots"
class=''
>Cluster Snapshots</a>
</li>
<li>
<a href="/docs/latest/persistence/disk-compression"
class=''
>Disk Compression</a>
</li>
<li>
<a href="/docs/latest/persistence/persistence-tuning"
class=''
>Tuning Persistence</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Configuring Caches<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/configuring-caches/configuration-overview"
class=''
>Cache Configuration</a>
</li>
<li>
<a href="/docs/latest/configuring-caches/configuring-backups"
class=''
>Configuring Partition Backups</a>
</li>
<li>
<a href="/docs/latest/configuring-caches/partition-loss-policy"
class=''
>Partition Loss Policy</a>
</li>
<li>
<a href="/docs/latest/configuring-caches/atomicity-modes"
class=''
>Atomicity Modes</a>
</li>
<li>
<a href="/docs/latest/configuring-caches/expiry-policies"
class=''
>Expiry Policy</a>
</li>
<li>
<a href="/docs/latest/configuring-caches/on-heap-caching"
class=''
>On-Heap Caching</a>
</li>
<li>
<a href="/docs/latest/configuring-caches/cache-groups"
class=''
>Cache Groups</a>
</li>
<li>
<a href="/docs/latest/configuring-caches/near-cache"
class=''
>Near Caches</a>
</li>
</nav>
</li>
<li>
<a href="/docs/latest/data-rebalancing" class='' >Data Rebalancing</a>
</li>
<li>
<a href="/docs/latest/data-streaming" class='' >Data Streaming</a>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Using Key-Value API<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/key-value-api/basic-cache-operations"
class=''
>Basic Cache Operations</a>
</li>
<li>
<a href="/docs/latest/key-value-api/binary-objects"
class=''
>Working with Binary Objects</a>
</li>
<li>
<a href="/docs/latest/key-value-api/using-scan-queries"
class=''
>Using Scan Queries</a>
</li>
<li>
<a href="/docs/latest/read-repair"
class=''
>Read Repair</a>
</li>
</nav>
</li>
<li>
<a href="/docs/latest/key-value-api/transactions" class='' >Performing Transactions</a>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Working with SQL<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/SQL/sql-introduction"
class=''
>Introduction</a>
</li>
<li>
<a href="/docs/latest/SQL/schemas"
class=''
>Understanding Schemas</a>
</li>
<li>
<a href="/docs/latest/SQL/indexes"
class=''
>Defining Indexes</a>
</li>
<li>
<a href="/docs/latest/SQL/sql-api"
class=''
>Using SQL API</a>
</li>
<li>
<a href="/docs/latest/SQL/distributed-joins"
class=''
>Distributed Joins</a>
</li>
<li>
<a href="/docs/latest/SQL/sql-transactions"
class=''
>SQL Transactions</a>
</li>
<li>
<a href="/docs/latest/SQL/custom-sql-func"
class=''
>Custom SQL Functions</a>
</li>
<li>
<a href="/docs/latest/SQL/JDBC/jdbc-driver"
class=''
>JDBC Driver</a>
</li>
<li>
<a href="/docs/latest/SQL/JDBC/jdbc-client-driver"
class=''
>JDBC Client Driver</a>
</li>
<li>
<button
type='button'
class='collapsed '>ODBC Driver<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/SQL/ODBC/odbc-driver" class=''>ODBC Driver</a></li>
<li><a href="/docs/latest//SQL/ODBC/connection-string-dsn" class=''>Connection String and DSN</a></li>
<li><a href="/docs/latest/SQL/ODBC/querying-modifying-data" class=''>Querying and Modifying Data</a></li>
<li><a href="/docs/latest/SQL/ODBC/specification" class=''>Specification</a></li>
<li><a href="/docs/latest/SQL/ODBC/data-types" class=''>Data Types</a></li>
<li><a href="/docs/latest/SQL/ODBC/error-codes" class=''>Error Codes</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/transactions/mvcc"
class=''
>Multiversion Concurrency Control</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>SQL Reference<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/sql-reference/sql-conformance"
class=''
>SQL Conformance</a>
</li>
<li>
<a href="/docs/latest/sql-reference/ddl"
class=''
>Data Definition Language (DDL)</a>
</li>
<li>
<a href="/docs/latest/sql-reference/dml"
class=''
>Data Manipulation Language (DML)</a>
</li>
<li>
<a href="/docs/latest/sql-reference/transactions"
class=''
>Transactions</a>
</li>
<li>
<a href="/docs/latest/sql-reference/operational-commands"
class=''
>Operational Commands</a>
</li>
<li>
<a href="/docs/latest/sql-reference/aggregate-functions"
class=''
>Aggregate functions</a>
</li>
<li>
<a href="/docs/latest/sql-reference/numeric-functions"
class=''
>Numeric Functions</a>
</li>
<li>
<a href="/docs/latest/sql-reference/string-functions"
class=''
>String Functions</a>
</li>
<li>
<a href="/docs/latest/sql-reference/date-time-functions"
class=''
>Data and Time Functions</a>
</li>
<li>
<a href="/docs/latest/sql-reference/system-functions"
class=''
>System Functions</a>
</li>
<li>
<a href="/docs/latest/sql-reference/data-types"
class=''
>Data Types</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Distributed Computing<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/distributed-computing/distributed-computing"
class=''
>Distributed Computing API</a>
</li>
<li>
<a href="/docs/latest/distributed-computing/cluster-groups"
class=''
>Cluster Groups</a>
</li>
<li>
<a href="/docs/latest/distributed-computing/executor-service"
class=''
>Executor Service</a>
</li>
<li>
<a href="/docs/latest/distributed-computing/map-reduce"
class=''
>MapReduce API</a>
</li>
<li>
<a href="/docs/latest/distributed-computing/load-balancing"
class=''
>Load Balancing</a>
</li>
<li>
<a href="/docs/latest/distributed-computing/fault-tolerance"
class=''
>Fault Tolerance</a>
</li>
<li>
<a href="/docs/latest/distributed-computing/job-scheduling"
class=''
>Job Scheduling</a>
</li>
<li>
<a href="/docs/latest/distributed-computing/collocated-computations"
class=''
>Colocating Computations with Data</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Code Deployment<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/code-deployment/deploying-user-code"
class=''
>Deploying User Code</a>
</li>
<li>
<a href="/docs/latest/code-deployment/peer-class-loading"
class=''
>Peer Class Loading</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Machine Learning<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/machine-learning/machine-learning"
class=''
>Machine Learning</a>
</li>
<li>
<a href="/docs/latest/machine-learning/partition-based-dataset"
class=''
>Partition Based Dataset</a>
</li>
<li>
<a href="/docs/latest/machine-learning/updating-trained-models"
class=''
>Updating Trained Models</a>
</li>
<li>
<button
type='button'
class='collapsed '>Binary Classification<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/machine-learning/binary-classification/introduction" class=''>Introduction</a></li>
<li><a href="/docs/latest/machine-learning/binary-classification/linear-svm" class=''>Linear SVM (Support Vector Machine)</a></li>
<li><a href="/docs/latest/machine-learning/binary-classification/decision-trees" class=''>Decision Trees</a></li>
<li><a href="/docs/latest/machine-learning/binary-classification/multilayer-perceptron" class=''>Multilayer Perceptron</a></li>
<li><a href="/docs/latest/machine-learning/binary-classification/logistic-regression" class=''>Logistic Regression</a></li>
<li><a href="/docs/latest/machine-learning/binary-classification/knn-classification" class=''>k-NN Classification</a></li>
<li><a href="/docs/latest/machine-learning/binary-classification/ann" class=''>ANN (Approximate Nearest Neighbor)</a></li>
<li><a href="/docs/latest/machine-learning/binary-classification/naive-bayes" class=''>Naive Bayes</a></li>
</nav>
</li>
<li>
<button
type='button'
class='collapsed '>Regression<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/machine-learning/regression/introduction" class=''>Introduction</a></li>
<li><a href="/docs/latest/machine-learning/regression/linear-regression" class=''>Linear Regression</a></li>
<li><a href="/docs/latest/machine-learning/regression/decision-trees-regression" class=''>Decision Trees Regression</a></li>
<li><a href="/docs/latest/machine-learning/regression/knn-regression" class=''>k-NN Regression</a></li>
</nav>
</li>
<li>
<button
type='button'
class='collapsed '>Clustering<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/machine-learning/clustering/introduction" class=''>Introduction</a></li>
<li><a href="/docs/latest/machine-learning/clustering/k-means-clustering" class=''>K-Means Clustering</a></li>
<li><a href="/docs/latest/machine-learning/clustering/gaussian-mixture" class=''>Gaussian mixture (GMM)</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/machine-learning/preprocessing"
class=''
>Preprocessing</a>
</li>
<li>
<button
type='button'
class='collapsed '>Model Selection<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/machine-learning/model-selection/introduction" class=''>Introduction</a></li>
<li><a href="/docs/latest/machine-learning/model-selection/evaluator" class=''>Evaluator</a></li>
<li><a href="/docs/latest/machine-learning/model-selection/split-the-dataset-on-test-and-train-datasets" class=''>Split the dataset on test and train datasets</a></li>
<li><a href="/docs/latest/machine-learning/model-selection/hyper-parameter-tuning" class=''>Hyper-parameter tuning</a></li>
<li><a href="/docs/latest/machine-learning/model-selection/pipeline-api" class=''>Pipeline API</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/machine-learning/multiclass-classification"
class=''
>Multiclass Classification</a>
</li>
<li>
<button
type='button'
class='collapsed '>Ensemble Methods<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/machine-learning/ensemble-methods/introduction" class=''></a></li>
<li><a href="/docs/latest/machine-learning/ensemble-methods/stacking" class=''>Stacking</a></li>
<li><a href="/docs/latest/machine-learning/ensemble-methods/baggin" class=''>Bagging</a></li>
<li><a href="/docs/latest/machine-learning/ensemble-methods/random-forest" class=''>Random Forest</a></li>
<li><a href="/docs/latest/machine-learning/ensemble-methods/gradient-boosting" class=''>Gradient Boosting</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/machine-learning/recommendation-systems"
class=''
>Recommendation Systems</a>
</li>
<li>
<button
type='button'
class='collapsed '>Importing Model<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/machine-learning/importing-model/introduction" class=''>Introduction</a></li>
<li><a href="/docs/latest/machine-learning/importing-model/model-import-from-gxboost" class=''>Import Model from XGBoost</a></li>
<li><a href="/docs/latest/machine-learning/importing-model/model-import-from-apache-spark" class=''>Import Model from Apache Spark</a></li>
</nav>
</li>
</nav>
</li>
<li>
<a href="/docs/latest/key-value-api/continuous-queries" class='' >Using Continuous Queries</a>
</li>
<li>
<a href="/docs/latest/services/services" class='' >Using Ignite Services</a>
</li>
<li>
<a href="/docs/latest/messaging" class='' >Using Ignite Messaging</a>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Distributed Data Structures<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/data-structures/queue-and-set"
class=''
>Queue and Set</a>
</li>
<li>
<a href="/docs/latest/data-structures/atomic-types"
class=''
>Atomic Types</a>
</li>
<li>
<a href="/docs/latest/data-structures/countdownlatch"
class=''
>CountDownLatch</a>
</li>
<li>
<a href="/docs/latest/data-structures/atomic-sequence"
class=''
>Atomic Sequence</a>
</li>
<li>
<a href="/docs/latest/data-structures/semaphore"
class=''
>Semaphore</a>
</li>
<li>
<a href="/docs/latest/data-structures/id-generator"
class=''
>ID Generator</a>
</li>
</nav>
</li>
<li>
<a href="/docs/latest/distributed-locks" class='' >Distributed Locks</a>
</li>
<li>
<a href="/docs/latest/restapi" class='' >REST API</a>
</li>
<li>
<button type='button' class='group-toggle collapsed '>.NET Specific<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/net-specific/net-configuration-options"
class=''
>Configuration Options</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-deployment-options"
class=''
>Deployment Options</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-standalone-nodes"
class=''
>Standalone Nodes</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-logging"
class=''
>Logging</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-linq"
class=''
>LINQ</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-java-services-execution"
class=''
>Java Services Execution</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-platform-cache"
class=''
>.NET Platform Cache</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-plugins"
class=''
>Plugins</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-serialization"
class=''
>Serialization</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-cross-platform-support"
class=''
>Cross-Platform Support</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-platform-interoperability"
class=''
>Platform Interoperability</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-remote-assembly-loading"
class=''
>Remote Assembly Loading</a>
</li>
<li>
<a href="/docs/latest/net-specific/net-troubleshooting"
class=''
>Troubleshooting</a>
</li>
<li>
<button
type='button'
class='collapsed '>Integrations<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/net-specific/asp-net-output-caching" class=''>ASP.NET Output Caching</a></li>
<li><a href="/docs/latest/net-specific/asp-net-session-state-caching" class=''>ASP.NET Session State Caching</a></li>
<li><a href="/docs/latest/net-specific/net-entity-framework-cache" class=''>Entity Framework 2nd Level Cache</a></li>
</nav>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>C++ Specific<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/cpp-specific/cpp-serialization"
class=''
>Serialization</a>
</li>
<li>
<a href="/docs/latest/cpp-specific/cpp-platform-interoperability"
class=''
>Platform Interoperability</a>
</li>
<li>
<a href="/docs/latest/cpp-specific/cpp-objects-lifetime"
class=''
>Objects Lifetime</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Monitoring<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/monitoring-metrics/intro"
class=''
>Introduction</a>
</li>
<li>
<a href="/docs/latest/monitoring-metrics/cluster-id"
class=''
>Cluster ID and Tag</a>
</li>
<li>
<a href="/docs/latest/monitoring-metrics/cluster-states"
class=''
>Cluster States</a>
</li>
<li>
<button
type='button'
class='collapsed '>Metrics<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/monitoring-metrics/configuring-metrics" class=''>Configuring Metrics</a></li>
<li><a href="/docs/latest/monitoring-metrics/metrics" class=''>JMX Metrics</a></li>
</nav>
</li>
<li>
<button
type='button'
class='collapsed '>New Metrics System<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/monitoring-metrics/new-metrics-system" class=''>Introduction</a></li>
<li><a href="/docs/latest/monitoring-metrics/new-metrics" class=''>Metrics</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/monitoring-metrics/system-views"
class=''
>System Views</a>
</li>
<li>
<a href="/docs/latest/monitoring-metrics/tracing"
class=''
>Tracing</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Working with Events<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/events/listening-to-events"
class=''
>Enabling and Listenting to Events</a>
</li>
<li>
<a href="/docs/latest/events/events"
class=''
>Events</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Tools<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/tools/control-script"
class=''
>Control Script</a>
</li>
<li>
<a href="/docs/latest/tools/visor-cmd"
class=''
>Visor CMD</a>
</li>
<li>
<a href="/docs/latest/tools/gg-control-center"
class=''
>GridGain Control Center</a>
</li>
<li>
<a href="/docs/latest/tools/sqlline"
class=''
>SQLLine</a>
</li>
<li>
<a href="/docs/latest/tools/tableau"
class=''
>Tableau</a>
</li>
<li>
<a href="/docs/latest/tools/informatica"
class=''
>Informatica</a>
</li>
<li>
<a href="/docs/latest/tools/pentaho"
class=''
>Pentaho</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Security<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/security/authentication"
class=''
>Authentication</a>
</li>
<li>
<a href="/docs/latest/security/ssl-tls"
class=''
>SSL/TLS</a>
</li>
<li>
<button
type='button'
class='collapsed '>Transparent Data Encryption<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/security/tde" class=''>Introduction</a></li>
<li><a href="/docs/latest/security/master-key-rotation" class=''>Master key rotation</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/security/sandbox"
class=''
>Sandbox</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle expanded '>Extensions and Integrations<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group expanded'>
<li>
<button
type='button'
class='collapsed '>Spring<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/extensions-and-integrations/spring/spring-boot" class=''>Spring Boot</a></li>
<li><a href="/docs/latest/extensions-and-integrations/spring/spring-data" class=''>Spring Data</a></li>
<li><a href="/docs/latest/extensions-and-integrations/spring/spring-caching" class=''>Spring Caching</a></li>
</nav>
</li>
<li>
<button
type='button'
class='collapsed '>Ignite for Spark<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/extensions-and-integrations/ignite-for-spark/overview" class=''>Overview</a></li>
<li><a href="/docs/latest/extensions-and-integrations/ignite-for-spark/ignitecontext-and-rdd" class=''>IgniteContext and IgniteRDD</a></li>
<li><a href="/docs/latest/extensions-and-integrations/ignite-for-spark/ignite-dataframe" class=''>Ignite DataFrame</a></li>
<li><a href="/docs/latest/extensions-and-integrations/ignite-for-spark/installation" class=''>Installation</a></li>
<li><a href="/docs/latest/extensions-and-integrations/ignite-for-spark/spark-shell" class=''>Test Ignite with Spark-shell</a></li>
<li><a href="/docs/latest/extensions-and-integrations/ignite-for-spark/troubleshooting" class=''>Troubleshooting</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/extensions-and-integrations/hibernate-l2-cache"
class=''
>Hibernate L2 Cache</a>
</li>
<li>
<a href="/docs/latest/extensions-and-integrations/mybatis-l2-cache"
class=''
>MyBatis L2 Cache</a>
</li>
<li>
<button
type='button'
class='collapsed '>Streaming<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/latest/extensions-and-integrations/streaming/kafka-streamer" class=''>Kafka Streamer</a></li>
<li><a href="/docs/latest/extensions-and-integrations/streaming/camel-streamer" class=''>Camel Streamer</a></li>
<li><a href="/docs/latest/extensions-and-integrations/streaming/flink-streamer" class=''>Flink Streamer</a></li>
<li><a href="/docs/latest/extensions-and-integrations/streaming/flume-sink" class=''>Flume Sink</a></li>
<li><a href="/docs/latest/extensions-and-integrations/streaming/jms-streamer" class=''>JMS Streamer</a></li>
<li><a href="/docs/latest/extensions-and-integrations/streaming/mqtt-streamer" class=''>MQTT Streamer</a></li>
<li><a href="/docs/latest/extensions-and-integrations/streaming/rocketmq-streamer" class=''>RocketMQ Streamer</a></li>
<li><a href="/docs/latest/extensions-and-integrations/streaming/storm-streamer" class=''>Storm Streamer</a></li>
<li><a href="/docs/latest/extensions-and-integrations/streaming/zeromq-streamer" class=''>ZeroMQ Streamer</a></li>
<li><a href="/docs/latest/extensions-and-integrations/streaming/twitter-streamer" class=''>Twitter Streamer</a></li>
</nav>
</li>
<li>
<button
type='button'
class='expanded parent '>Cassandra Integration<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class="sub_pages expanded parent">
<li><a href="/docs/latest/extensions-and-integrations/cassandra/overview" class=''>Overview</a></li>
<li><a href="/docs/latest/extensions-and-integrations/cassandra/configuration" class=''>Configuration</a></li>
<li><a href="/docs/latest/extensions-and-integrations/cassandra/usage-examples" class='active'>Usage Examples</a></li>
<li><a href="/docs/latest/extensions-and-integrations/cassandra/ddl-generator" class=''>DDL Generator</a></li>
</nav>
</li>
<li>
<a href="/docs/latest/extensions-and-integrations/php-pdo"
class=''
>PHP PDO</a>
</li>
</nav>
</li>
<li>
<a href="/docs/latest/plugins" class='' >Plugins</a>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Performance and Troubleshooting<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/latest/perf-and-troubleshooting/general-perf-tips"
class=''
>General Performance Tips</a>
</li>
<li>
<a href="/docs/latest/perf-and-troubleshooting/memory-tuning"
class=''
>Memory and JVM Tuning</a>
</li>
<li>
<a href="/docs/latest/perf-and-troubleshooting/persistence-tuning"
class=''
>Persistence Tuning</a>
</li>
<li>
<a href="/docs/latest/perf-and-troubleshooting/sql-tuning"
class=''
>SQL Tuning</a>
</li>
<li>
<a href="/docs/latest/perf-and-troubleshooting/thread-pools-tuning"
class=''
>Thread Pools Tuning</a>
</li>
<li>
<a href="/docs/latest/perf-and-troubleshooting/troubleshooting"
class=''
>Troubleshooting and Debugging</a>
</li>
<li>
<a href="/docs/latest/perf-and-troubleshooting/handling-exceptions"
class=''
>Handling Exceptions</a>
</li>
<li>
<a href="/docs/latest/perf-and-troubleshooting/yardstick-benchmarking"
class=''
>Benchmarking With Yardstick</a>
</li>
</nav>
</li>
</nav>
<div class="left-nav__overlay"></div>
<article data-swiftype-index='true'>
<a class='edit-link' href="https://github.com/apache/ignite/tree/IGNITE-7595/docs/_docs/extensions-and-integrations/cassandra/usage-examples.adoc" target="_blank">Edit</a>
<h1>Ignite Cassandra Integration Usage Examples</h1>
<div class="sect1">
<h2 id="overview">Overview</h2>
<div class="sectionbody">
<div class="paragraph">
<p>As described in <a href="/docs/latest/extensions-and-integrations/cassandra/configuration">configuration section</a>, to configure Cassandra
as a cache store you need to set <code>CacheStoreFactory</code> for your Ignite caches to <code>org.apache.ignite.cache.store.cassandra.CassandraCacheStoreFactory</code>.</p>
</div>
<div class="paragraph">
<p>Below is an example of a typical configuration for Ignite cache to use Cassandra as a cache store. We will go step-by-step
through all the configuration items, further down. The example is taken from the unit tests resource file
<code>store/src/test/resources/org/apache/ignite/tests/persistence/blob/ignite-config.xml</code> of the Cassandra module source code.</p>
</div>
<code-tabs><code-tab data-tab='XML'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="xml"><span class="cp">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</span>
<span class="nt">&lt;beans</span> <span class="na">xmlns=</span><span class="s">"http://www.springframework.org/schema/beans"</span>
<span class="na">xmlns:xsi=</span><span class="s">"http://www.w3.org/2001/XMLSchema-instance"</span>
<span class="na">xsi:schemaLocation=</span><span class="s">"
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"</span><span class="nt">&gt;</span>
<span class="c">&lt;!-- Cassandra connection settings --&gt;</span>
<span class="nt">&lt;import</span> <span class="na">resource=</span><span class="s">"classpath:org/apache/ignite/tests/cassandra/connection-settings.xml"</span> <span class="nt">/&gt;</span>
<span class="c">&lt;!-- Persistence settings for 'cache1' --&gt;</span>
<span class="nt">&lt;bean</span> <span class="na">id=</span><span class="s">"cache1_persistence_settings"</span> <span class="na">class=</span><span class="s">"org.apache.ignite.cache.store.cassandra.persistence.KeyValuePersistenceSettings"</span><span class="nt">&gt;</span>
<span class="nt">&lt;constructor-arg</span> <span class="na">type=</span><span class="s">"org.springframework.core.io.Resource"</span> <span class="na">value=</span><span class="s">"classpath:org/apache/ignite/tests/persistence/blob/persistence-settings-1.xml"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;/bean&gt;</span>
<span class="c">&lt;!-- Persistence settings for 'cache2' --&gt;</span>
<span class="nt">&lt;bean</span> <span class="na">id=</span><span class="s">"cache2_persistence_settings"</span> <span class="na">class=</span><span class="s">"org.apache.ignite.cache.store.cassandra.persistence.KeyValuePersistenceSettings"</span><span class="nt">&gt;</span>
<span class="nt">&lt;constructor-arg</span> <span class="na">type=</span><span class="s">"org.springframework.core.io.Resource"</span> <span class="na">value=</span><span class="s">"classpath:org/apache/ignite/tests/persistence/blob/persistence-settings-3.xml"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;/bean&gt;</span>
<span class="c">&lt;!-- Ignite configuration --&gt;</span>
<span class="nt">&lt;bean</span> <span class="na">id=</span><span class="s">"ignite.cfg"</span> <span class="na">class=</span><span class="s">"org.apache.ignite.configuration.IgniteConfiguration"</span><span class="nt">&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"cacheConfiguration"</span><span class="nt">&gt;</span>
<span class="nt">&lt;list&gt;</span>
<span class="c">&lt;!-- Configuring persistence for "cache1" cache --&gt;</span>
<span class="nt">&lt;bean</span> <span class="na">class=</span><span class="s">"org.apache.ignite.configuration.CacheConfiguration"</span><span class="nt">&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"name"</span> <span class="na">value=</span><span class="s">"cache1"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"readThrough"</span> <span class="na">value=</span><span class="s">"true"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"writeThrough"</span> <span class="na">value=</span><span class="s">"true"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"cacheStoreFactory"</span><span class="nt">&gt;</span>
<span class="nt">&lt;bean</span> <span class="na">class=</span><span class="s">"org.apache.ignite.cache.store.cassandra.CassandraCacheStoreFactory"</span><span class="nt">&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"dataSourceBean"</span> <span class="na">value=</span><span class="s">"cassandraAdminDataSource"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"persistenceSettingsBean"</span> <span class="na">value=</span><span class="s">"cache1_persistence_settings"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/bean&gt;</span>
<span class="nt">&lt;/property&gt;</span>
<span class="nt">&lt;/bean&gt;</span>
<span class="c">&lt;!-- Configuring persistence for "cache2" cache --&gt;</span>
<span class="nt">&lt;bean</span> <span class="na">class=</span><span class="s">"org.apache.ignite.configuration.CacheConfiguration"</span><span class="nt">&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"name"</span> <span class="na">value=</span><span class="s">"cache2"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"readThrough"</span> <span class="na">value=</span><span class="s">"true"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"writeThrough"</span> <span class="na">value=</span><span class="s">"true"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"cacheStoreFactory"</span><span class="nt">&gt;</span>
<span class="nt">&lt;bean</span> <span class="na">class=</span><span class="s">"org.apache.ignite.cache.store.cassandra.CassandraCacheStoreFactory"</span><span class="nt">&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"dataSourceBean"</span> <span class="na">value=</span><span class="s">"cassandraAdminDataSource"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"persistenceSettingsBean"</span> <span class="na">value=</span><span class="s">"cache2_persistence_settings"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/bean&gt;</span>
<span class="nt">&lt;/property&gt;</span>
<span class="nt">&lt;/bean&gt;</span>
<span class="nt">&lt;/list&gt;</span>
<span class="nt">&lt;/property&gt;</span>
<span class="c">&lt;!-- Explicitly configure TCP discovery SPI to provide list of initial nodes. --&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"discoverySpi"</span><span class="nt">&gt;</span>
<span class="nt">&lt;bean</span> <span class="na">class=</span><span class="s">"org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi"</span><span class="nt">&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"ipFinder"</span><span class="nt">&gt;</span>
<span class="c">&lt;!--
Ignite provides several options for automatic discovery that can be used
instead os static IP based discovery. For information on all options refer
to our documentation: https://ignite.apache.org/docs/latest/clustering/clustering
--&gt;</span>
<span class="c">&lt;!-- Uncomment static IP finder to enable static-based discovery of initial nodes. --&gt;</span>
<span class="c">&lt;!--&lt;bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder"&gt;--&gt;</span>
<span class="nt">&lt;bean</span> <span class="na">class=</span><span class="s">"org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder"</span><span class="nt">&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"addresses"</span><span class="nt">&gt;</span>
<span class="nt">&lt;list&gt;</span>
<span class="c">&lt;!-- In distributed environment, replace with actual host IP address. --&gt;</span>
<span class="nt">&lt;value&gt;</span>127.0.0.1:47500..47509<span class="nt">&lt;/value&gt;</span>
<span class="nt">&lt;/list&gt;</span>
<span class="nt">&lt;/property&gt;</span>
<span class="nt">&lt;/bean&gt;</span>
<span class="nt">&lt;/property&gt;</span>
<span class="nt">&lt;/bean&gt;</span>
<span class="nt">&lt;/property&gt;</span>
<span class="nt">&lt;/bean&gt;</span>
<span class="nt">&lt;/beans&gt;</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>In the specified example we have two Ignite caches configured: <code>cache1</code> and <code>cache2</code>. So lets look at the configuration details.</p>
</div>
<div class="paragraph">
<p>Lets start from the cache configuration details. They are pretty similar for both caches (<code>cache1</code> and <code>cache2</code>) and looks like that:</p>
</div>
<code-tabs><code-tab data-tab='XML'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="xml"><span class="nt">&lt;bean</span> <span class="na">class=</span><span class="s">"org.apache.ignite.configuration.CacheConfiguration"</span><span class="nt">&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"name"</span> <span class="na">value=</span><span class="s">"cache1"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"readThrough"</span> <span class="na">value=</span><span class="s">"true"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"writeThrough"</span> <span class="na">value=</span><span class="s">"true"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"cacheStoreFactory"</span><span class="nt">&gt;</span>
<span class="nt">&lt;bean</span> <span class="na">class=</span><span class="s">"org.apache.ignite.cache.store.cassandra.CassandraCacheStoreFactory"</span><span class="nt">&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"dataSourceBean"</span> <span class="na">value=</span><span class="s">"cassandraAdminDataSource"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"persistenceSettingsBean"</span> <span class="na">value=</span><span class="s">"cache1_persistence_settings"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/bean&gt;</span>
<span class="nt">&lt;/property&gt;</span>
<span class="nt">&lt;/bean&gt;</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>First of all we can see that <code>read-through</code> and <code>write-through</code> options are enabled:</p>
</div>
<code-tabs><code-tab data-tab='XML'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="xml"><span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"readThrough"</span> <span class="na">value=</span><span class="s">"true"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"writeThrough"</span> <span class="na">value=</span><span class="s">"true"</span><span class="nt">/&gt;</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>which is required for Ignite cache, if you plan to use a persistent store for cache entries which expired.</p>
</div>
<div class="paragraph">
<p>You can optionally specify the <code>write-behind</code> setting if you prefer persistent store to be updated asynchronously:</p>
</div>
<code-tabs><code-tab data-tab='XML'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="xml"><span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"readThrough"</span> <span class="na">value=</span><span class="s">"true"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"writeThrough"</span> <span class="na">value=</span><span class="s">"true"</span><span class="nt">/&gt;</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>The next important thing is <code>CacheStoreFactory</code> configuration:</p>
</div>
<code-tabs><code-tab data-tab='XML'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="xml"><span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"cacheStoreFactory"</span><span class="nt">&gt;</span>
<span class="nt">&lt;bean</span> <span class="na">class=</span><span class="s">"org.apache.ignite.cache.store.cassandra.CassandraCacheStoreFactory"</span><span class="nt">&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"dataSourceBean"</span> <span class="na">value=</span><span class="s">"cassandraAdminDataSource"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"persistenceSettingsBean"</span> <span class="na">value=</span><span class="s">"cache1_persistence_settings"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/bean&gt;</span>
<span class="nt">&lt;/property&gt;</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>You should use <code>org.apache.ignite.cache.store.cassandra.CassandraCacheStoreFactory</code> as a <code>CacheStoreFactory</code> for your
Ignite caches to utilize Cassandra as a persistent store. For <code>CassandraCacheStoreFactory</code> you should specify two required properties:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>dataSourceBean</code> - name of the Spring bean, which specifies all the details about Cassandra database connection.</p>
</li>
<li>
<p><code>persistenceSettingsBean</code> - name of the Spring bean, which specifies all the details about how objects should be persisted into Cassandra database.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>In the specified example <code>cassandraAdminDataSource</code> is a data source bean, which is imported into Ignite cache config file using this directive:</p>
</div>
<code-tabs><code-tab data-tab='XML'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="xml"><span class="nt">&lt;import</span> <span class="na">resource=</span><span class="s">"classpath:org/apache/ignite/tests/cassandra/connection-settings.xml"</span> <span class="nt">/&gt;</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>and <code>cache1_persistence_settings</code> is a persistence settings bean, which is defined in Ignite cache config file using such directive:</p>
</div>
<code-tabs><code-tab data-tab='XML'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="xml"><span class="nt">&lt;bean</span> <span class="na">id=</span><span class="s">"cache1_persistence_settings"</span> <span class="na">class=</span><span class="s">"org.apache.ignite.cache.store.cassandra.utils.persistence.KeyValuePersistenceSettings"</span><span class="nt">&gt;</span>
<span class="nt">&lt;constructor-arg</span> <span class="na">type=</span><span class="s">"org.springframework.core.io.Resource"</span> <span class="na">value=</span><span class="s">"classpath:org/apache/ignite/tests/persistence/blob/persistence-settings-1.xml"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;/bean&gt;</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>Now lets look at the specification of <code>cassandraAdminDataSource</code> from <code>store/src/test/resources/org/apache/ignite/tests/cassandra/connection-settings.xml</code>
test resource.</p>
</div>
<div class="paragraph">
<p>Specifically,<code>CassandraAdminCredentials</code> and <code>CassandraRegularCredentials</code> are classes which extend
<code>org.apache.ignite.cache.store.cassandra.datasource.Credentials</code>. You are welcome to implement these classes and reference them afterwards.</p>
</div>
<code-tabs><code-tab data-tab='XML'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="xml"><span class="cp">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</span>
<span class="nt">&lt;beans</span> <span class="na">xmlns=</span><span class="s">"http://www.springframework.org/schema/beans"</span>
<span class="na">xmlns:xsi=</span><span class="s">"http://www.w3.org/2001/XMLSchema-instance"</span>
<span class="na">xsi:schemaLocation=</span><span class="s">"
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"</span><span class="nt">&gt;</span>
<span class="nt">&lt;bean</span> <span class="na">id=</span><span class="s">"cassandraAdminCredentials"</span> <span class="na">class=</span><span class="s">"org.my.project.CassandraAdminCredentials"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;bean</span> <span class="na">id=</span><span class="s">"cassandraRegularCredentials"</span> <span class="na">class=</span><span class="s">"org.my.project.CassandraRegularCredentials"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;bean</span> <span class="na">id=</span><span class="s">"loadBalancingPolicy"</span> <span class="na">class=</span><span class="s">"com.datastax.driver.core.policies.TokenAwarePolicy"</span><span class="nt">&gt;</span>
<span class="nt">&lt;constructor-arg</span> <span class="na">type=</span><span class="s">"com.datastax.driver.core.policies.LoadBalancingPolicy"</span><span class="nt">&gt;</span>
<span class="nt">&lt;bean</span> <span class="na">class=</span><span class="s">"com.datastax.driver.core.policies.RoundRobinPolicy"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/constructor-arg&gt;</span>
<span class="nt">&lt;/bean&gt;</span>
<span class="nt">&lt;bean</span> <span class="na">id=</span><span class="s">"contactPoints"</span> <span class="na">class=</span><span class="s">"org.apache.ignite.tests.utils.CassandraHelper"</span> <span class="na">factory-method=</span><span class="s">"getContactPointsArray"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;bean</span> <span class="na">id=</span><span class="s">"cassandraAdminDataSource"</span> <span class="na">class=</span><span class="s">"org.apache.ignite.cache.store.cassandra.datasource.DataSource"</span><span class="nt">&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"credentials"</span> <span class="na">ref=</span><span class="s">"cassandraAdminCredentials"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"contactPoints"</span> <span class="na">ref=</span><span class="s">"contactPoints"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"readConsistency"</span> <span class="na">value=</span><span class="s">"ONE"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"writeConsistency"</span> <span class="na">value=</span><span class="s">"ONE"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"loadBalancingPolicy"</span> <span class="na">ref=</span><span class="s">"loadBalancingPolicy"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/bean&gt;</span>
<span class="nt">&lt;bean</span> <span class="na">id=</span><span class="s">"cassandraRegularDataSource"</span> <span class="na">class=</span><span class="s">"org.apache.ignite.cache.store.cassandra.datasource.DataSource"</span><span class="nt">&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"credentials"</span> <span class="na">ref=</span><span class="s">"cassandraRegularCredentials"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"contactPoints"</span> <span class="na">ref=</span><span class="s">"contactPoints"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"readConsistency"</span> <span class="na">value=</span><span class="s">"ONE"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"writeConsistency"</span> <span class="na">value=</span><span class="s">"ONE"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;property</span> <span class="na">name=</span><span class="s">"loadBalancingPolicy"</span> <span class="na">ref=</span><span class="s">"loadBalancingPolicy"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/bean&gt;</span>
<span class="nt">&lt;/beans&gt;</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>For more details about Cassandra data source connection configuration visit the <a href="/docs/latest/extensions-and-integrations/cassandra/configuration">integration configuration page</a>.</p>
</div>
<div class="paragraph">
<p>Finally, the last piece which wasn&#8217;t still described is persistence settings configuration. Lets look at the
<code>cache1_persistence_settings</code> from the <code>org/apache/ignite/tests/persistence/blob/persistence-settings-1.xml</code> test resource.</p>
</div>
<code-tabs><code-tab data-tab='XML'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="xml"><span class="nt">&lt;persistence</span> <span class="na">keyspace=</span><span class="s">"test1"</span> <span class="na">table=</span><span class="s">"blob_test1"</span><span class="nt">&gt;</span>
<span class="nt">&lt;keyPersistence</span> <span class="na">class=</span><span class="s">"java.lang.Integer"</span> <span class="na">strategy=</span><span class="s">"PRIMITIVE"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;valuePersistence</span> <span class="na">strategy=</span><span class="s">"BLOB"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/persistence&gt;</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>In the configuration above, we can see that Cassandra <code>test1.blob_test1</code> table will be used to store key/value objects for
<strong>cache1</strong> cache. Key objects of the cache will be stored as <strong>integer</strong> in <code>key</code> column. Value objects of the cache will be
stored as <strong>blob</strong> in <code>value</code> column. For more information about persistence settings configuration visit the
<a href="/docs/latest/extensions-and-integrations/cassandra/configuration">integration configuration page</a>.</p>
</div>
<div class="paragraph">
<p>Next sections will provide examples of persistence settings configuration for different kind of persistence strategies
(see more details about persistence strategies on the <a href="/docs/latest/extensions-and-integrations/cassandra/configuration">integration configuration page</a>.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="example-1">Example 1</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Persistence setting for Ignite cache with keys of <code>Integer</code> type to be persisted as <code>int</code> in Cassandra and values of
<code>String</code> type to be persisted as <code>text</code> in Cassandra.</p>
</div>
<code-tabs><code-tab data-tab='XML'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="xml"><span class="nt">&lt;persistence</span> <span class="na">keyspace=</span><span class="s">"test1"</span> <span class="na">table=</span><span class="s">"my_table"</span><span class="nt">&gt;</span>
<span class="nt">&lt;keyPersistence</span> <span class="na">class=</span><span class="s">"java.lang.Integer"</span> <span class="na">strategy=</span><span class="s">"PRIMITIVE"</span> <span class="na">column=</span><span class="s">"my_key"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;valuePersistence</span> <span class="na">class=</span><span class="s">"java.lang.String"</span> <span class="na">strategy=</span><span class="s">"PRIMITIVE"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;/persistence&gt;</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>Keys will be stored in <code>my_key</code> column. Values will be stored in <code>value</code> column (which is used by default if <code>column</code> attribute wasn&#8217;t specified).</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="example-2">Example 2</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Persistence setting for Ignite cache with keys of <code>Integer</code> type to be persisted as <code>int</code> in Cassandra and values of <code>any</code>
type (you don&#8217;t need to specify the type for <strong>BLOB</strong> persistence strategy) to be persisted as <code>blob</code> in Cassandra.
The only solution for this situation is to store value as a <code>BLOB</code> in Cassandra table.</p>
</div>
<code-tabs><code-tab data-tab='XML'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="xml"><span class="nt">&lt;persistence</span> <span class="na">keyspace=</span><span class="s">"test1"</span> <span class="na">table=</span><span class="s">"my_table"</span><span class="nt">&gt;</span>
<span class="nt">&lt;keyPersistence</span> <span class="na">class=</span><span class="s">"java.lang.Integer"</span> <span class="na">strategy=</span><span class="s">"PRIMITIVE"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;valuePersistence</span> <span class="na">strategy=</span><span class="s">"BLOB"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/persistence&gt;</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>Keys will be stored in <code>key</code> column (which is used by default if <code>column</code> attribute wasn&#8217;t specified). Values will be stored in <code>value</code> column.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="example-3">Example 3</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Persistence setting for Ignite cache with keys of <code>Integer</code> type and values of <strong>any</strong> type, both to be persisted as <code>BLOB</code> in Cassandra.</p>
</div>
<code-tabs><code-tab data-tab='XML'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="xml"><span class="nt">&lt;persistence</span> <span class="na">keyspace=</span><span class="s">"test1"</span> <span class="na">table=</span><span class="s">"my_table"</span><span class="nt">&gt;</span>
<span class="c">&lt;!-- By default Java standard serialization is going to be used --&gt;</span>
<span class="nt">&lt;keyPersistence</span> <span class="na">class=</span><span class="s">"java.lang.Integer"</span>
<span class="na">strategy=</span><span class="s">"BLOB"</span><span class="nt">/&gt;</span>
<span class="c">&lt;!-- Kryo serialization specified to be used --&gt;</span>
<span class="nt">&lt;valuePersistence</span> <span class="na">class=</span><span class="s">"org.apache.ignite.tests.pojos.Person"</span>
<span class="na">strategy=</span><span class="s">"BLOB"</span>
<span class="na">serializer=</span><span class="s">"org.apache.ignite.cache.store.cassandra.serializer.KryoSerializer"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/persistence&gt;</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>Keys will be stored in <code>key</code> column having <code>blob</code> type and using
<a href="https://docs.oracle.com/javase/tutorial/jndi/objects/serial.html" target="_blank" rel="noopener">Java standard serialization</a>. Values will be stored in
<code>value</code> column having <code>blob</code> type and using <a href="https://github.com/EsotericSoftware/kryo" target="_blank" rel="noopener">Kryo serialization</a>.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="example-4">Example 4</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Persistence setting for Ignite cache with keys of <code>Integer</code> type to be persisted as <code>int</code> in Cassandra and values of custom
POJO <code>org.apache.ignite.tests.pojos.Person</code> type to be dynamically analyzed and persisted into a set of table columns,
so that each POJO field will be mapped to appropriate table column. For more details about dynamic POJO fields discovery
refer to <a href="/docs/latest/extensions-and-integrations/cassandra/configuration#persistencesettingsbean">PersistenceSettingsBean</a> documentation section.</p>
</div>
<code-tabs><code-tab data-tab='XML'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="xml"><span class="nt">&lt;persistence</span> <span class="na">keyspace=</span><span class="s">"test1"</span> <span class="na">table=</span><span class="s">"my_table"</span><span class="nt">&gt;</span>
<span class="nt">&lt;keyPersistence</span> <span class="na">class=</span><span class="s">"java.lang.Integer"</span> <span class="na">strategy=</span><span class="s">"PRIMITIVE"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;valuePersistence</span> <span class="na">class=</span><span class="s">"org.apache.ignite.tests.pojos.Person"</span> <span class="na">strategy=</span><span class="s">"POJO"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/persistence&gt;</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>Keys will be stored in <code>key</code> column having <code>int</code> type.</p>
</div>
<div class="paragraph">
<p>Now lets imagine that the <code>org.apache.ignite.tests.pojos.Person</code> class has such an implementation:</p>
</div>
<code-tabs><code-tab data-tab='Java'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="java"><span class="kd">public</span> <span class="kd">class</span> <span class="nc">Person</span> <span class="o">{</span>
<span class="kd">private</span> <span class="nc">String</span> <span class="n">firstName</span><span class="o">;</span>
<span class="kd">private</span> <span class="nc">String</span> <span class="n">lastName</span><span class="o">;</span>
<span class="kd">private</span> <span class="kt">int</span> <span class="n">age</span><span class="o">;</span>
<span class="kd">private</span> <span class="kt">boolean</span> <span class="n">married</span><span class="o">;</span>
<span class="kd">private</span> <span class="kt">long</span> <span class="n">height</span><span class="o">;</span>
<span class="kd">private</span> <span class="kt">float</span> <span class="n">weight</span><span class="o">;</span>
<span class="kd">private</span> <span class="nc">Date</span> <span class="n">birthDate</span><span class="o">;</span>
<span class="kd">private</span> <span class="nc">List</span><span class="o">&lt;</span><span class="nc">String</span><span class="o">&gt;</span> <span class="n">phones</span><span class="o">;</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">setFirstName</span><span class="o">(</span><span class="nc">String</span> <span class="n">name</span><span class="o">)</span> <span class="o">{</span>
<span class="n">firstName</span> <span class="o">=</span> <span class="n">name</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="nc">String</span> <span class="nf">getFirstName</span><span class="o">()</span> <span class="o">{</span>
<span class="k">return</span> <span class="n">firstName</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">setLastName</span><span class="o">(</span><span class="nc">String</span> <span class="n">name</span><span class="o">)</span> <span class="o">{</span>
<span class="n">lastName</span> <span class="o">=</span> <span class="n">name</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="nc">String</span> <span class="nf">getLastName</span><span class="o">()</span> <span class="o">{</span>
<span class="k">return</span> <span class="n">lastName</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">setAge</span><span class="o">(</span><span class="kt">int</span> <span class="n">age</span><span class="o">)</span> <span class="o">{</span>
<span class="k">this</span><span class="o">.</span><span class="na">age</span> <span class="o">=</span> <span class="n">age</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kt">int</span> <span class="nf">getAge</span><span class="o">()</span> <span class="o">{</span>
<span class="k">return</span> <span class="n">age</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">setMarried</span><span class="o">(</span><span class="kt">boolean</span> <span class="n">married</span><span class="o">)</span> <span class="o">{</span>
<span class="k">this</span><span class="o">.</span><span class="na">married</span> <span class="o">=</span> <span class="n">married</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kt">boolean</span> <span class="nf">getMarried</span><span class="o">()</span> <span class="o">{</span>
<span class="k">return</span> <span class="n">married</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">setHeight</span><span class="o">(</span><span class="kt">long</span> <span class="n">height</span><span class="o">)</span> <span class="o">{</span>
<span class="k">this</span><span class="o">.</span><span class="na">height</span> <span class="o">=</span> <span class="n">height</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kt">long</span> <span class="nf">getHeight</span><span class="o">()</span> <span class="o">{</span>
<span class="k">return</span> <span class="n">height</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">setWeight</span><span class="o">(</span><span class="kt">float</span> <span class="n">weight</span><span class="o">)</span> <span class="o">{</span>
<span class="k">this</span><span class="o">.</span><span class="na">weight</span> <span class="o">=</span> <span class="n">weight</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kt">float</span> <span class="nf">getWeight</span><span class="o">()</span> <span class="o">{</span>
<span class="k">return</span> <span class="n">weight</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">setBirthDate</span><span class="o">(</span><span class="nc">Date</span> <span class="n">date</span><span class="o">)</span> <span class="o">{</span>
<span class="n">birthDate</span> <span class="o">=</span> <span class="n">date</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="nc">Date</span> <span class="nf">getBirthDate</span><span class="o">()</span> <span class="o">{</span>
<span class="k">return</span> <span class="n">birthDate</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">setPhones</span><span class="o">(</span><span class="nc">List</span><span class="o">&lt;</span><span class="nc">String</span><span class="o">&gt;</span> <span class="n">phones</span><span class="o">)</span> <span class="o">{</span>
<span class="k">this</span><span class="o">.</span><span class="na">phones</span> <span class="o">=</span> <span class="n">phones</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="nc">List</span><span class="o">&lt;</span><span class="nc">String</span><span class="o">&gt;</span> <span class="nf">getPhones</span><span class="o">()</span> <span class="o">{</span>
<span class="k">return</span> <span class="n">phones</span><span class="o">;</span>
<span class="o">}</span>
<span class="o">}</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>In this case Ignite cache values of the <code>org.apache.ignite.tests.pojos.Person</code> type will be persisted into a set of
Cassandra table columns using such dynamically configured mapping rule:</p>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">POJO field</th>
<th class="tableblock halign-left valign-top">Table column</th>
<th class="tableblock halign-left valign-top">Column type</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">firstName</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">firstname</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">text</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">lastName</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">lastname</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">text</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">age</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">age</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">married</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">married</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">height</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">height</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">bigint</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">weight</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">weight</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">float</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">birthDate</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">birthdate</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">timestamp</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>As you can see from the table above, <code>phones</code> field will not be persisted into table. That&#8217;s because it&#8217;s not of simple
java type which could be directly mapped to <a href="http://docs.datastax.com/en/developer/java-driver/1.0/java-driver/reference/javaClass2Cql3Datatypes_r.html" target="_blank" rel="noopener">appropriate</a> Cassandra type.
Such kind of fields could be persisted into Cassandra only if you manually specify all mapping details for the object type
and if field type itself is implementing <code>java.io.Serializable</code> interface. In a such case field will be persisted into a
separate table column as <code>blob</code>. See more details in the next example.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="example-5">Example 5</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Persistence setting for Ignite cache with keys of custom POJO <code>org.apache.ignite.tests.pojos.PersonId</code> and values of
custom POJO <code>org.apache.ignite.tests.pojos.Person</code> types, both to be persisted into a set of table columns based on
manually specified mapping rules.</p>
</div>
<code-tabs><code-tab data-tab='XML'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="xml"><span class="nt">&lt;persistence</span> <span class="na">keyspace=</span><span class="s">"test1"</span> <span class="na">table=</span><span class="s">"my_table"</span> <span class="na">ttl=</span><span class="s">"86400"</span><span class="nt">&gt;</span>
<span class="c">&lt;!-- Cassandra keyspace options which should be used to create provided keyspace if it doesn't exist --&gt;</span>
<span class="nt">&lt;keyspaceOptions&gt;</span>
REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor' : 3}
AND DURABLE_WRITES = true
<span class="nt">&lt;/keyspaceOptions&gt;</span>
<span class="c">&lt;!-- Cassandra table options which should be used to create provided table if it doesn't exist --&gt;</span>
<span class="nt">&lt;tableOptions&gt;</span>
comment = 'A most excellent and useful table'
AND read_repair_chance = 0.2
<span class="nt">&lt;/tableOptions&gt;</span>
<span class="c">&lt;!-- Persistent settings for Ignite cache keys --&gt;</span>
<span class="nt">&lt;keyPersistence</span> <span class="na">class=</span><span class="s">"org.apache.ignite.tests.pojos.PersonId"</span> <span class="na">strategy=</span><span class="s">"POJO"</span><span class="nt">&gt;</span>
<span class="c">&lt;!-- Partition key fields if POJO strategy used --&gt;</span>
<span class="nt">&lt;partitionKey&gt;</span>
<span class="c">&lt;!-- Mapping from POJO field to Cassandra table column --&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"companyCode"</span> <span class="na">column=</span><span class="s">"company"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"departmentCode"</span> <span class="na">column=</span><span class="s">"department"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;/partitionKey&gt;</span>
<span class="c">&lt;!-- Cluster key fields if POJO strategy used --&gt;</span>
<span class="nt">&lt;clusterKey&gt;</span>
<span class="c">&lt;!-- Mapping from POJO field to Cassandra table column --&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"personNumber"</span> <span class="na">column=</span><span class="s">"number"</span> <span class="na">sort=</span><span class="s">"desc"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/clusterKey&gt;</span>
<span class="nt">&lt;/keyPersistence&gt;</span>
<span class="c">&lt;!-- Persistent settings for Ignite cache values --&gt;</span>
<span class="nt">&lt;valuePersistence</span> <span class="na">class=</span><span class="s">"org.apache.ignite.tests.pojos.Person"</span>
<span class="na">strategy=</span><span class="s">"POJO"</span>
<span class="na">serializer=</span><span class="s">"org.apache.ignite.cache.store.cassandra.serializer.KryoSerializer"</span><span class="nt">&gt;</span>
<span class="c">&lt;!-- Mapping from POJO field to Cassandra table column --&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"firstName"</span> <span class="na">column=</span><span class="s">"first_name"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"lastName"</span> <span class="na">column=</span><span class="s">"last_name"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"age"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"married"</span> <span class="na">index=</span><span class="s">"true"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"height"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"weight"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"birthDate"</span> <span class="na">column=</span><span class="s">"birth_date"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"phones"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;/valuePersistence&gt;</span>
<span class="nt">&lt;/persistence&gt;</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>These persistence settings looks rather complicated. Lets go step by step and analyse them.</p>
</div>
<div class="paragraph">
<p>Lets first look at the root tag:</p>
</div>
<code-tabs><code-tab data-tab='XML'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="xml"><span class="nt">&lt;persistence</span> <span class="na">keyspace=</span><span class="s">"test1"</span> <span class="na">table=</span><span class="s">"my_table"</span> <span class="na">ttl=</span><span class="s">"86400"</span><span class="nt">&gt;</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>It specifies that Ignite cache keys and values should be stored in <code>test1.my_table</code> table and that data in each row
<a href="http://docs.datastax.com/en/cql/3.1/cql/cql_using/use_expire_c.html" target="_blank" rel="noopener">expires</a> after <code>86400</code> sec which is <code>24</code> hours.</p>
</div>
<div class="paragraph">
<p>Then we can see the advanced settings for Cassandra keyspace. The setting will be used to create keyspace if it&#8217;s not exist.</p>
</div>
<code-tabs><code-tab data-tab='XML'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="xml"><span class="nt">&lt;keyspaceOptions&gt;</span>
REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor' : 3}
AND DURABLE_WRITES = true
<span class="nt">&lt;/keyspaceOptions&gt;</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>Then by analogy to keyspace setting we can see table advanced setting, which will be used only for table creation.</p>
</div>
<code-tabs><code-tab data-tab='XML'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="xml"><span class="nt">&lt;tableOptions&gt;</span>
comment = 'A most excellent and useful table'
AND read_repair_chance = 0.2
<span class="nt">&lt;/tableOptions&gt;</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>Next section specifies how Ignite cache keys should be persisted:</p>
</div>
<code-tabs><code-tab data-tab='XML'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="xml"><span class="nt">&lt;keyPersistence</span> <span class="na">class=</span><span class="s">"org.apache.ignite.tests.pojos.PersonId"</span> <span class="na">strategy=</span><span class="s">"POJO"</span><span class="nt">&gt;</span>
<span class="c">&lt;!-- Partition key fields if POJO strategy used --&gt;</span>
<span class="nt">&lt;partitionKey&gt;</span>
<span class="c">&lt;!-- Mapping from POJO field to Cassandra table column --&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"companyCode"</span> <span class="na">column=</span><span class="s">"company"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"departmentCode"</span> <span class="na">column=</span><span class="s">"department"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;/partitionKey&gt;</span>
<span class="c">&lt;!-- Cluster key fields if POJO strategy used --&gt;</span>
<span class="nt">&lt;clusterKey&gt;</span>
<span class="c">&lt;!-- Mapping from POJO field to Cassandra table column --&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"personNumber"</span> <span class="na">column=</span><span class="s">"number"</span> <span class="na">sort=</span><span class="s">"desc"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/clusterKey&gt;</span>
<span class="nt">&lt;/keyPersistence&gt;</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>Lets assume that <code>org.apache.ignite.tests.pojos.PersonId</code> has such implementation:</p>
</div>
<code-tabs><code-tab data-tab='Java'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="java"><span class="kd">public</span> <span class="kd">class</span> <span class="nc">PersonId</span> <span class="o">{</span>
<span class="kd">private</span> <span class="nc">String</span> <span class="n">companyCode</span><span class="o">;</span>
<span class="kd">private</span> <span class="nc">String</span> <span class="n">departmentCode</span><span class="o">;</span>
<span class="kd">private</span> <span class="kt">int</span> <span class="n">personNumber</span><span class="o">;</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">setCompanyCode</span><span class="o">(</span><span class="nc">String</span> <span class="n">code</span><span class="o">)</span> <span class="o">{</span>
<span class="n">companyCode</span> <span class="o">=</span> <span class="n">code</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="nc">String</span> <span class="nf">getCompanyCode</span><span class="o">()</span> <span class="o">{</span>
<span class="k">return</span> <span class="n">companyCode</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">setDepartmentCode</span><span class="o">(</span><span class="nc">String</span> <span class="n">code</span><span class="o">)</span> <span class="o">{</span>
<span class="n">departmentCode</span> <span class="o">=</span> <span class="n">code</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="nc">String</span> <span class="nf">getDepartmentCode</span><span class="o">()</span> <span class="o">{</span>
<span class="k">return</span> <span class="n">departmentCode</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">setPersonNumber</span><span class="o">(</span><span class="kt">int</span> <span class="n">number</span><span class="o">)</span> <span class="o">{</span>
<span class="n">personNumber</span> <span class="o">=</span> <span class="n">number</span><span class="o">;</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kt">int</span> <span class="nf">getPersonNumber</span><span class="o">()</span> <span class="o">{</span>
<span class="k">return</span> <span class="n">personNumber</span><span class="o">;</span>
<span class="o">}</span>
<span class="o">}</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>In such case Ignite cache keys of <code>org.apache.ignite.tests.pojos.PersonId</code> type will be persisted into a set of Cassandra
table columns representing <code>PARTITION</code> and <code>CLUSTER</code> key using this mapping rule:</p>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">POJO field</th>
<th class="tableblock halign-left valign-top">Table column</th>
<th class="tableblock halign-left valign-top">Column type</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">companyCode</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">company</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">text</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">departmentCode</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">department</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">text</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">personNumber</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">number</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>In addition to that, combination of columns <code>(company, department)</code> will be used as Cassandra <code>PARTITION</code> key and column
<code>number</code> will be used as a <code>CLUSTER</code> key sorted in descending order.</p>
</div>
<div class="paragraph">
<p>Finally lets move to the last section, which specifies persistence settings for Ignite cache values:</p>
</div>
<code-tabs><code-tab data-tab='XML'><div class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="xml"><span class="nt">&lt;valuePersistence</span> <span class="na">class=</span><span class="s">"org.apache.ignite.tests.pojos.Person"</span>
<span class="na">strategy=</span><span class="s">"POJO"</span>
<span class="na">serializer=</span><span class="s">"org.apache.ignite.cache.store.cassandra.serializer.KryoSerializer"</span><span class="nt">&gt;</span>
<span class="c">&lt;!-- Mapping from POJO field to Cassandra table column --&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"firstName"</span> <span class="na">column=</span><span class="s">"first_name"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"lastName"</span> <span class="na">column=</span><span class="s">"last_name"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"age"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"married"</span> <span class="na">index=</span><span class="s">"true"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"height"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"weight"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"birthDate"</span> <span class="na">column=</span><span class="s">"birth_date"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;field</span> <span class="na">name=</span><span class="s">"phones"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;/valuePersistence&gt;</span></code></pre>
</div>
</div></code-tab></code-tabs>
<div class="paragraph">
<p>Lets assume <code>that org.apache.ignite.tests.pojos.Person</code> class has the same implementation like in <a href="/docs/latest/extensions-and-integrations/cassandra/usage-examples#example-4">Example 4</a>.
In this case Ignite cache values of <code>org.apache.ignite.tests.pojos.Person</code> type will be persisted into a set of Cassandra
table columns using such mapping rule:</p>
</div>
<table class="tableblock frame-all grid-all stripes-even stretch">
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">POJO field</th>
<th class="tableblock halign-left valign-top">Table column</th>
<th class="tableblock halign-left valign-top">Column type</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">firstName</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">first_name</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">text</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">lastName</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">last_name</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">text</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">age</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">age</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">married</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">married</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">height</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">height</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">bigint</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">weight</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">weight</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">float</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">birthDate</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">birth_date</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">timestamp</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">phones</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">phones</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">blob</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>Comparing to <a href="/docs/latest/extensions-and-integrations/cassandra/usage-examples#example-4">Example 4</a> we can see that now <code>phones</code>
field will be serialized to <code>phones</code> column of <code>blob</code> type using <a href="https://github.com/EsotericSoftware/kryo" target="_blank" rel="noopener">Kryo</a> serializer.
In addition to that, Cassandra secondary index will be created for the <code>married</code> column.</p>
</div>
</div>
</div>
<div class="copyright">
© 2020 The Apache Software Foundation.<br/>
Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation.
</div>
</article>
<nav class="right-nav" data-swiftype-index='false'>
<ul class="sectlevel1">
<li><a href="#overview">Overview</a></li>
<li><a href="#example-1">Example 1</a></li>
<li><a href="#example-2">Example 2</a></li>
<li><a href="#example-3">Example 3</a></li>
<li><a href="#example-4">Example 4</a></li>
<li><a href="#example-5">Example 5</a></li>
</ul>
<footer>
</footer>
</nav>
</section>
<script type='module' src='/assets/js/code-copy-to-clipboard.js' async crossorigin></script>
<script>
// inits deep anchors -- needs to be done here because of https://www.bryanbraun.com/anchorjs/#dont-run-it-too-late
anchors.add('.page-docs h1, .page-docs h2, .page-docs h3:not(.discrete), .page-docs h4, .page-docs h5');
anchors.options = {
placement: 'right',
visible: 'always'
};
</script>
<!-- load google fonts async -->
<script type="text/javascript">
WebFontConfig = {
google: { families: [ 'Open+Sans:300,400,600,700&display=swap' ] }
};
(function() {
var wf = document.createElement('script');
wf.src = 'https://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
wf.type = 'text/javascript';
wf.async = 'true';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(wf, s);
})(); </script>
<script src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
<script>
docsearch({
// Your apiKey and indexName will be given to you once
// we create your config
apiKey: '3eee686c0ebe39eff3baeb18c56fa5f8',
indexName: 'apache_ignite',
// Replace inputSelector with a CSS selector
// matching your search input
inputSelector: '#search-input',
// algoliaOptions: { 'facetFilters': ["version:$VERSION"] },
// Set debug to true to inspect the dropdown
debug: false,
});
</script>
<script type='module' src='/assets/js/index.js?1609302721' async crossorigin></script>
<script type='module' src='/assets/js/versioning.js?1609302721' async crossorigin></script>
</body>
</html>