Application Development with Apache Cassandra as a ServicePresentation Transcript
Application Development with Apache Cassandra as a Service By Deependra Ariyadewa
WSO2• Founded in 2005 by acknowledged leaders in XML, Web Services Technologies & Standards and Open Source. Primary contributors to Apache Web Services projects started in 2001• Producing entire middleware platform 100% open source under Apache license• Business model is to sell comprehensive support & maintenance for our products• Technology OEM’d by IBM, Progress, Software AG, Alcatel, EMC,• and CA• Venture funded by Intel Capital and Quest Software.• Global corporation with offices in Palo Alto, USA Portsmouth, UK & Colombo, Sri Lanka• 150+ employees and growing.
Attendees will learn• When to select a NoSQL column store database• The advantages of WSO2 Column Store Service – (CSS), particularly in a cloud deployment• How to create and manage a Cassandra keyspace using WSO2 CSS• How to develop and deploy an application with the WSO2 CSS
Introduction to Data Problem• Rapid growth of published data.• Managing large amounts of data is difficult Difficulties include o Capture o Storage o Search o Sharing o Analytics o Visualization
The Well Known Data Solution• Relational Database Management Systems - RDBMS Oracle, DB2, Postgress, MySQL• Object-oriented Databases VelocityDB, Wakanda, Zope• NoSQL Databases Cassandra, CouchDB, MongoDB
Limitations in Relational Model• Relational model should maintain ACID properties.• Hard to scale up keeping Consistency and Isolation due to Node Failures and distributed locking.• less scalable SQL. o Distributed JOIN
An alternative to ACID is BASE• Basic Availability• Soft-state• Eventual consistency
CAP Theorem• In distributed systems it is only possible to have two properties out of the properties Consistency, Availability and Partition Tolerance at any given time.
NoSQL Data Solutions• Tunable Consistency• Fault Tolerant• Decentralized• Runs on Cheap Commodity Hardware• Flexible Data Models
NoSQL Database Types• Wide Column Store / Column Families o Cassandra, HBase• Document Store o MongoDB, CouchDB• Key Value / Tuple Store o Riak, Redis• Graph Databases o Neo4J, FlockDBsource:http://nosql-database.org/
When to Select NoSQL Column Store• Structured Data• Highly Scalable Systems with Primary Key Retrieval• Highly scalable systems with WHERE clause Support
Apache Cassandra Features• Fault Tolerant Data is automatically replicated to multiple node / across multiple data centers for fault tolerance.• Decentralized Every node in the cluster is identical.• Rich Data Model support key/value systems and column families.• Elastic Read and write throughput both increase linearly as new machines are added, with no downtime or interruption to applications.
WSO2 Data Solutions• Data Service Server - DSS• Relational Storage Service - RSS• Column Store Service - CSS• File System as a service ( FSaaS) - HDFS
Cassandra Deployment Diagram
WSO2 Column Store • User requests are authenticated and • authorized with Carbon User manager. Cassandra service listens on port 9160 for thrift calls. • Port 7000 uses as the default gossip channel.
WSO2 Column Store as a Service (CSS)
How to Install Cassandra feature• Install Cassandra feature from p2 repository.
Expand the Cassandra Cluster• Decide on a Key partitioner• partitioner: org.apache.cassandra.dht.RandomPartitioner Set Seeds• - seeds: "192.168.0.102", "192.168.0.103" Set Listen address to an IP• listen_address: 192.168.0.10 Plug WSO2 authentication / authorization system. authenticator: org.wso2.carbon.cassandra.server.CarbonCassandraAuthenticator authority: org.wso2.carbon.cassandra.server.CarbonCassandraAuthority