SlideShare a Scribd company logo
1 of 34
Download to read offline
Cassandra Storage Engine in MariaDB
MariaDB Cassandra interoperability
Sergei Petrunia
Colin Charles
Who are we
●
Sergei Petrunia
– Principal developer of CassandraSE, optimizer
developer, formerly from MySQL
– psergey@mariadb.org
●
Colin Charles
– Chief Evangelist, MariaDB, formerly from MySQL
– colin@mariadb.org
Agenda
●
An introduction to Cassandra
●
The Cassandra Storage Engine
(Cassandra SE)
●
Data mapping
●
Use cases
●
Benchmarks
●
Conclusion
Background: what is Cassandra
• A distributed NoSQL database
– Key-Value store
●
Limited range scan support
– Optionally flexible schema
●
Pre-defined “static” columns
●
Ad-hoc “dynamic” columns
– Automatic sharding / replication
– Eventual consistency
4
Background: Cassandra's data model
• “Column families” like tables
• Row key → columns
• Somewhat similar to SQL but
some important differences.
• Supercolumns are not
supported
5
CQL – Cassandra Query Language
Looks like SQL at first glance
6
bash$ cqlsh -3
cqlsh> CREATE KEYSPACE mariadbtest
... WITH REPLICATION ={'class':'SimpleStrategy','replication_factor':1};
cqlsh> use mariadbtest;
cqlsh:mariadbtest> create columnfamily cf1 ( pk varchar primary key,
... data1 varchar, data2 bigint
... ) with compact storage;
cqlsh:mariadbtest> insert into cf1 (pk, data1,data2)
... values ('row1', 'data-in-cassandra', 1234);
cqlsh:mariadbtest> select * from cf1;
pk | data1 | data2
------+-------------------+-------
row1 | data-in-cassandra | 1234
CQL is not SQL
Similarity with SQL is superficial
7
cqlsh:mariadbtest> select * from cf1 where pk='row1';
pk | data1 | data2
------+-------------------+-------
row1 | data-in-cassandra | 1234
cqlsh:mariadbtest> select * from cf1 where data2=1234;
Bad Request: No indexed columns present in by-columns clause with Equal
operator
cqlsh:mariadbtest> select * from cf1 where pk='row1' or pk='row2';
Bad Request: line 1:34 missing EOF at 'or'
• No joins or subqueries
• No GROUP BY, ORDER BY must be able to use available
indexes
• WHERE clause must represent an index lookup.
Cassandra Storage Engine
8
Provides a “view” of Cassandra's data
from MariaDB.
Starts a NoCQL movement
1. Load the Cassandra SE plugin
• Get MariaDB 10.0.1+
• Load the Cassandra plugin
– From SQL:
9
MariaDB [(none)]> install plugin cassandra soname 'ha_cassandra.so';
[mysqld]
...
plugin-load=ha_cassandra.so
– Or, add a line to my.cnf:
MariaDB [(none)]> show plugins;
+--------------------+--------+-----------------+-----------------+---------+
| Name | Status | Type | Library | License |
+--------------------+--------+-----------------+-----------------+---------+
...
| CASSANDRA | ACTIVE | STORAGE ENGINE | ha_cassandra.so | GPL |
+--------------------+--------+-----------------+-----------------+---------+
• Check it is loaded
2. Connect to Cassandra
• Create an SQL table which is a view of a column family
1
0
MariaDB [test]> set global cassandra_default_thrift_host='10.196.2.113';
Query OK, 0 rows affected (0.00 sec)
MariaDB [test]> create table t2 (pk varchar(36) primary key,
-> data1 varchar(60),
-> data2 bigint
-> ) engine=cassandra
-> keyspace='mariadbtest'
-> thrift_host='10.196.2.113'
-> column_family='cf1';
Query OK, 0 rows affected (0.01 sec)
– thrift_host can be set per-table
– @@cassandra_default_thrift_host allows to
●
Re-point the table to different node dynamically
●
Not change table DDL when Cassandra IP changes.
Possible gotchas
1
1
• SELinux blocks the connection
MariaDB [test]> create table t1 ( ... ) engine=cassandra ... ;
ERROR 1429 (HY000): Unable to connect to foreign data source: connect()
failed: Permission denied [1]
MariaDB [test]> create table t1 ( ... ) engine=cassandra ... ;
ERROR 1429 (HY000): Unable to connect to foreign data source: Column family
cf1 not found in keyspace mariadbtest
• Cassandra 1.2 and CFs without “COMPACT STORAGE”
– Packaging bug
– To get running quickly: echo 0 >/selinux/enforce
– Caused by a change in Cassandra 1.2
– They broke Pig also
– We intend to update CassandraSE for 1.2
Accessing Cassandra data
●
Can insert data
1
2
MariaDB [test]> insert into t2 values ('row2','data-from-mariadb', 123);
Query OK, 1 row affected (0.00 sec)
cqlsh:mariadbtest> select * from cf1;
pk | data1 | data2
------+-------------------+-------
row1 | data-in-cassandra | 1234
row2 | data-from-mariadb | 123
• Cassandra sees inserted data
MariaDB [test]> select * from t2;
+------+-------------------+-------+
| pk | data1 | data2 |
+------+-------------------+-------+
| row1 | data-in-cassandra | 1234 |
+------+-------------------+-------+
• Can get Cassandra's data
Data mapping between
Cassandra and SQL
Data mapping between Cassandra and SQL
1
4
create table tbl (
pk varchar(36) primary key,
data1 varchar(60),
data2 bigint
) engine=cassandra keyspace='ks1' column_family='cf1'
• MariaDB table represents Cassandra's Column Family
– Can use any table name, column_family=... specifies CF.
Data mapping between Cassandra and SQL
1
5
create table tbl (
pk varchar(36) primary key,
data1 varchar(60),
data2 bigint
) engine=cassandra keyspace='ks1' column_family='cf1'
• MariaDB table represents Cassandra's Column Family
– Can use any table name, column_family=... specifies CF.
• Table must have a primary key
– Name/type must match Cassandra's rowkey
Data mapping between Cassandra and SQL
1
6
create table tbl (
pk varchar(36) primary key,
data1 varchar(60),
data2 bigint
) engine=cassandra keyspace='ks1' column_family='cf1'
• MariaDB table represents Cassandra's Column Family
– Can use any table name, column_family=... specifies CF.
• Table must have a primary key
– Name/type must match Cassandra's rowkey
• Columns map to Cassandra's static columns
– Name must be the same as in Cassandra
– Datatypes must match
– Can any subset of CF's columns
Datatype mapping
Cassandra MariaDB
blob BLOB, VARBINARY(n)
ascii BLOB, VARCHAR(n), use charset=latin1
text BLOB, VARCHAR(n), use charset=utf8
varint VARBINARY(n)
int INT
bigint BIGINT, TINY, SHORT
uuid CHAR(36) (text in MariaDB)
timestamp TIMESTAMP (second precision), TIMESTAMP(6) (microsecond precision),
BIGINT
boolean BOOL
float FLOAT
double DOUBLE
decimal VARBINARY(n)
counter BIGINT
• CF column datatype determines MariaDB datatype
Dynamic columns
• Cassandra supports “dynamic column families”
• Can access ad-hoc columns with MariaDB's dynamic
columns feature
1
8
create table tbl
(
rowkey type PRIMARY KEY
column1 type,
...
dynamic_cols blob DYNAMIC_COLUMN_STORAGE=yes
) engine=cassandra keyspace=... column_family=...;
insert into tbl values
(1, column_create('col1', 1, 'col2', 'value-2'));
select rowkey,
column_get(dynamic_cols, 'uuidcol' as char)
from tbl;
Data mapping is safe
create table t3 (pk varchar(60) primary key, no_such_field int)
engine=cassandra `keyspace`='mariadbtest' `column_family`='cf1';
ERROR 1928 (HY000): Internal error: 'Field `no_such_field` could not
be mapped to any field in Cassandra'
create table t3 (pk varchar(60) primary key, data1 double)
engine=cassandra `keyspace`='mariadbtest' `column_family`='cf1';
ERROR 1928 (HY000): Internal error: 'Failed to map column data1
to datatype org.apache.cassandra.db.marshal.UTF8Type'
• Cassandra SE will refuse incorrect mappings
Command mapping
Command Mapping
● Cassandra commands
– PUT (upsert)
– GET
● Scan
– DELETE (if exists)
● SQL commands
– SELECT → GET/Scan
– INSERT → PUT (upsert)
– UPDATE/DELETE → read+write.
SELECT command mapping
● MariaDB has an SQL interpreter
● Cassandra SE supports lookups and scans
● Can now do
– Arbitrary WHERE clauses
– JOINs between Cassandra tables and
MariaDB tables
● Batched Key Access is supported
DML command mapping
● No SQL semantics
– INSERT overwrites rows
– UPDATE reads, then writes
● Have you updated what you read
– DELETE reads, then deletes
● Can't be sure if/what you have deleted
● Not as bad as it sounds, it's Cassandra
– Cassandra SE doesn't make it SQL.
Cassandra SE use cases
Cassandra use cases
● Collect massive amounts of
data
– Web page hits
– Sensor updates
● Updates are naturally non-conflicting
– Keyed by UUIDs, timestamps
● Reads are served with one lookup
● Good for certain kinds of data
– Moving from SQL entirely may be difficult
Cassandra SE use cases (1)
● Send an update to Cassandra
– Be a sensor
● Grab a piece of data from Cassandra
– “This web page was last viewed by …”
– “Last known position of this user was ...”.
Access Cassandra
data from SQL
Cassandra SE use cases (2)
● Want a special table that is
– auto-replicated
– fault-tolerant
– Very fast?
● Get Cassandra, and create a Cassandra
SE table.
Coming from MySQL/MariaDB side:
Cassandra Storage Engine non-use cases
• Huge, sift-through-all-data joins
– Use Pig
• Bulk data transfer to/from Cassandra
cluster
– Use Sqoop
• A replacement for InnoDB
– No full SQL semantics
2
8
A “benchmark”
• One table
• EC2 environment
– m1.large nodes
– Ephemeral disks
• Stream of single-line INSERTs
• Tried Innodb and Cassandra
• Hardly any tuning
Conclusions
• Cassandra SE can be used to peek at data
in Cassandra from MariaDB.
• It is not a replacement for Pig/Hive
• It is really easy to setup and use
3
0
Going Forward
• Looking for input
• Do you want support for
– Fast counter columns updates?
– Awareness of Cassandra cluster
topology?
– Secondary indexes?
– …?
3
1
Resources
• https://kb.askmonty.org/en/cassandrase/
• http://wiki.apache.org/cassandra/DataModel
• http://cassandra.apache.org/
• http://www.datastax.com/docs/1.1/ddl/column_family
3
2
Thanks!
3
3
Q & A
Extra: Cassandra SE internals
• Developed against Cassandra 1.1
• Uses Thrift API
– cannot stream CQL resultset in 1.1
– Cant use secondary indexes
• Only supports AllowAllAuthenticator
• In Cassandra 1.2
– “CQL Binary Protocol” with streaming
– CASSANDRA-5234: Thrift can only read CFs “WITH
COMPACT STORAGE”
3
4

More Related Content

What's hot

C* Summit 2013: The World's Next Top Data Model by Patrick McFadin
C* Summit 2013: The World's Next Top Data Model by Patrick McFadinC* Summit 2013: The World's Next Top Data Model by Patrick McFadin
C* Summit 2013: The World's Next Top Data Model by Patrick McFadinDataStax Academy
 
Bulk Loading Data into Cassandra
Bulk Loading Data into CassandraBulk Loading Data into Cassandra
Bulk Loading Data into CassandraDataStax
 
Lessons from Cassandra & Spark (Matthias Niehoff & Stephan Kepser, codecentri...
Lessons from Cassandra & Spark (Matthias Niehoff & Stephan Kepser, codecentri...Lessons from Cassandra & Spark (Matthias Niehoff & Stephan Kepser, codecentri...
Lessons from Cassandra & Spark (Matthias Niehoff & Stephan Kepser, codecentri...DataStax
 
Cassandra 3.0 advanced preview
Cassandra 3.0 advanced previewCassandra 3.0 advanced preview
Cassandra 3.0 advanced previewPatrick McFadin
 
Cassandra Summit 2013 Keynote
Cassandra Summit 2013 KeynoteCassandra Summit 2013 Keynote
Cassandra Summit 2013 Keynotejbellis
 
Cassandra Fundamentals - C* 2.0
Cassandra Fundamentals - C* 2.0Cassandra Fundamentals - C* 2.0
Cassandra Fundamentals - C* 2.0Russell Spitzer
 
Cassandra EU - Data model on fire
Cassandra EU - Data model on fireCassandra EU - Data model on fire
Cassandra EU - Data model on firePatrick McFadin
 
Scaling web applications with cassandra presentation
Scaling web applications with cassandra presentationScaling web applications with cassandra presentation
Scaling web applications with cassandra presentationMurat Çakal
 
Cassandra By Example: Data Modelling with CQL3
Cassandra By Example: Data Modelling with CQL3Cassandra By Example: Data Modelling with CQL3
Cassandra By Example: Data Modelling with CQL3Eric Evans
 
Advanced data modeling with apache cassandra
Advanced data modeling with apache cassandraAdvanced data modeling with apache cassandra
Advanced data modeling with apache cassandraPatrick McFadin
 
Time series with apache cassandra strata
Time series with apache cassandra   strataTime series with apache cassandra   strata
Time series with apache cassandra strataPatrick McFadin
 
Cassandra Java APIs Old and New – A Comparison
Cassandra Java APIs Old and New – A ComparisonCassandra Java APIs Old and New – A Comparison
Cassandra Java APIs Old and New – A Comparisonshsedghi
 
Cassandra Community Webinar: Back to Basics with CQL3
Cassandra Community Webinar: Back to Basics with CQL3Cassandra Community Webinar: Back to Basics with CQL3
Cassandra Community Webinar: Back to Basics with CQL3DataStax
 
Cassandra Materialized Views
Cassandra Materialized ViewsCassandra Materialized Views
Cassandra Materialized ViewsCarl Yeksigian
 
MySQL as a Document Store
MySQL as a Document StoreMySQL as a Document Store
MySQL as a Document StoreDave Stokes
 
Cassandra Community Webinar | Become a Super Modeler
Cassandra Community Webinar | Become a Super ModelerCassandra Community Webinar | Become a Super Modeler
Cassandra Community Webinar | Become a Super ModelerDataStax
 
PagerDuty: One Year of Cassandra Failures
PagerDuty: One Year of Cassandra FailuresPagerDuty: One Year of Cassandra Failures
PagerDuty: One Year of Cassandra FailuresDataStax Academy
 
Spark Cassandra Connector: Past, Present and Furure
Spark Cassandra Connector: Past, Present and FurureSpark Cassandra Connector: Past, Present and Furure
Spark Cassandra Connector: Past, Present and FurureDataStax Academy
 

What's hot (20)

C* Summit 2013: The World's Next Top Data Model by Patrick McFadin
C* Summit 2013: The World's Next Top Data Model by Patrick McFadinC* Summit 2013: The World's Next Top Data Model by Patrick McFadin
C* Summit 2013: The World's Next Top Data Model by Patrick McFadin
 
Bulk Loading Data into Cassandra
Bulk Loading Data into CassandraBulk Loading Data into Cassandra
Bulk Loading Data into Cassandra
 
Lessons from Cassandra & Spark (Matthias Niehoff & Stephan Kepser, codecentri...
Lessons from Cassandra & Spark (Matthias Niehoff & Stephan Kepser, codecentri...Lessons from Cassandra & Spark (Matthias Niehoff & Stephan Kepser, codecentri...
Lessons from Cassandra & Spark (Matthias Niehoff & Stephan Kepser, codecentri...
 
Cassandra 3.0
Cassandra 3.0Cassandra 3.0
Cassandra 3.0
 
Cassandra 3.0 advanced preview
Cassandra 3.0 advanced previewCassandra 3.0 advanced preview
Cassandra 3.0 advanced preview
 
Cassandra Summit 2013 Keynote
Cassandra Summit 2013 KeynoteCassandra Summit 2013 Keynote
Cassandra Summit 2013 Keynote
 
Cassandra Fundamentals - C* 2.0
Cassandra Fundamentals - C* 2.0Cassandra Fundamentals - C* 2.0
Cassandra Fundamentals - C* 2.0
 
Cassandra EU - Data model on fire
Cassandra EU - Data model on fireCassandra EU - Data model on fire
Cassandra EU - Data model on fire
 
Scaling web applications with cassandra presentation
Scaling web applications with cassandra presentationScaling web applications with cassandra presentation
Scaling web applications with cassandra presentation
 
Cassandra By Example: Data Modelling with CQL3
Cassandra By Example: Data Modelling with CQL3Cassandra By Example: Data Modelling with CQL3
Cassandra By Example: Data Modelling with CQL3
 
Advanced data modeling with apache cassandra
Advanced data modeling with apache cassandraAdvanced data modeling with apache cassandra
Advanced data modeling with apache cassandra
 
Cassandra NoSQL
Cassandra NoSQLCassandra NoSQL
Cassandra NoSQL
 
Time series with apache cassandra strata
Time series with apache cassandra   strataTime series with apache cassandra   strata
Time series with apache cassandra strata
 
Cassandra Java APIs Old and New – A Comparison
Cassandra Java APIs Old and New – A ComparisonCassandra Java APIs Old and New – A Comparison
Cassandra Java APIs Old and New – A Comparison
 
Cassandra Community Webinar: Back to Basics with CQL3
Cassandra Community Webinar: Back to Basics with CQL3Cassandra Community Webinar: Back to Basics with CQL3
Cassandra Community Webinar: Back to Basics with CQL3
 
Cassandra Materialized Views
Cassandra Materialized ViewsCassandra Materialized Views
Cassandra Materialized Views
 
MySQL as a Document Store
MySQL as a Document StoreMySQL as a Document Store
MySQL as a Document Store
 
Cassandra Community Webinar | Become a Super Modeler
Cassandra Community Webinar | Become a Super ModelerCassandra Community Webinar | Become a Super Modeler
Cassandra Community Webinar | Become a Super Modeler
 
PagerDuty: One Year of Cassandra Failures
PagerDuty: One Year of Cassandra FailuresPagerDuty: One Year of Cassandra Failures
PagerDuty: One Year of Cassandra Failures
 
Spark Cassandra Connector: Past, Present and Furure
Spark Cassandra Connector: Past, Present and FurureSpark Cassandra Connector: Past, Present and Furure
Spark Cassandra Connector: Past, Present and Furure
 

Viewers also liked

Shape Subtract in PowerPoint
Shape Subtract in PowerPoint Shape Subtract in PowerPoint
Shape Subtract in PowerPoint Indezine.com
 
Tweet Tweet Tweet Twitter
Tweet Tweet Tweet TwitterTweet Tweet Tweet Twitter
Tweet Tweet Tweet TwitterJimmy Jay
 
16 things that Panhandlers can teach us about Content Marketing
16 things that Panhandlers can teach us about Content Marketing16 things that Panhandlers can teach us about Content Marketing
16 things that Panhandlers can teach us about Content MarketingBrad Farris
 
Cubicle Ninjas' Code of Honor
Cubicle Ninjas' Code of HonorCubicle Ninjas' Code of Honor
Cubicle Ninjas' Code of HonorCubicle Ninjas
 
Hashtag 101 - All You Need to Know About Hashtags
Hashtag 101 - All You Need to Know About HashtagsHashtag 101 - All You Need to Know About Hashtags
Hashtag 101 - All You Need to Know About HashtagsModicum
 
The Do's and Don'ts of Presentations
The Do's and Don'ts of Presentations The Do's and Don'ts of Presentations
The Do's and Don'ts of Presentations Cubicle Ninjas
 
Using Color to Convey Data in Charts
Using Color to Convey Data in ChartsUsing Color to Convey Data in Charts
Using Color to Convey Data in ChartsZingChart
 
The no bullet bullet slide
The no bullet bullet slideThe no bullet bullet slide
The no bullet bullet slideGavin McMahon
 
Amazing First Slide Picture Templates
Amazing First Slide Picture Templates Amazing First Slide Picture Templates
Amazing First Slide Picture Templates Abhishek Shah
 
Weekly Inspirational Quotes by Fun Team Building
Weekly Inspirational Quotes by Fun Team BuildingWeekly Inspirational Quotes by Fun Team Building
Weekly Inspirational Quotes by Fun Team BuildingFun Team Building
 
Preparing to fail
Preparing to failPreparing to fail
Preparing to failaweyenberg
 
Effective Use of Icons & Images
Effective Use of Icons & ImagesEffective Use of Icons & Images
Effective Use of Icons & ImagesUIEpreviews
 
FontShop - Typography
FontShop - TypographyFontShop - Typography
FontShop - TypographyPoppy Young
 
Create icons in PowerPoint
Create icons in PowerPointCreate icons in PowerPoint
Create icons in PowerPointPresentitude
 

Viewers also liked (15)

Shape Subtract in PowerPoint
Shape Subtract in PowerPoint Shape Subtract in PowerPoint
Shape Subtract in PowerPoint
 
Tweet Tweet Tweet Twitter
Tweet Tweet Tweet TwitterTweet Tweet Tweet Twitter
Tweet Tweet Tweet Twitter
 
16 things that Panhandlers can teach us about Content Marketing
16 things that Panhandlers can teach us about Content Marketing16 things that Panhandlers can teach us about Content Marketing
16 things that Panhandlers can teach us about Content Marketing
 
Cubicle Ninjas' Code of Honor
Cubicle Ninjas' Code of HonorCubicle Ninjas' Code of Honor
Cubicle Ninjas' Code of Honor
 
Email and tomorrow
Email and tomorrowEmail and tomorrow
Email and tomorrow
 
Hashtag 101 - All You Need to Know About Hashtags
Hashtag 101 - All You Need to Know About HashtagsHashtag 101 - All You Need to Know About Hashtags
Hashtag 101 - All You Need to Know About Hashtags
 
The Do's and Don'ts of Presentations
The Do's and Don'ts of Presentations The Do's and Don'ts of Presentations
The Do's and Don'ts of Presentations
 
Using Color to Convey Data in Charts
Using Color to Convey Data in ChartsUsing Color to Convey Data in Charts
Using Color to Convey Data in Charts
 
The no bullet bullet slide
The no bullet bullet slideThe no bullet bullet slide
The no bullet bullet slide
 
Amazing First Slide Picture Templates
Amazing First Slide Picture Templates Amazing First Slide Picture Templates
Amazing First Slide Picture Templates
 
Weekly Inspirational Quotes by Fun Team Building
Weekly Inspirational Quotes by Fun Team BuildingWeekly Inspirational Quotes by Fun Team Building
Weekly Inspirational Quotes by Fun Team Building
 
Preparing to fail
Preparing to failPreparing to fail
Preparing to fail
 
Effective Use of Icons & Images
Effective Use of Icons & ImagesEffective Use of Icons & Images
Effective Use of Icons & Images
 
FontShop - Typography
FontShop - TypographyFontShop - Typography
FontShop - Typography
 
Create icons in PowerPoint
Create icons in PowerPointCreate icons in PowerPoint
Create icons in PowerPoint
 

Similar to MariaDB Cassandra Interoperability

Mysqlconf2013 mariadb-cassandra-interoperability
Mysqlconf2013 mariadb-cassandra-interoperabilityMysqlconf2013 mariadb-cassandra-interoperability
Mysqlconf2013 mariadb-cassandra-interoperabilitySergey Petrunya
 
Maria db cassandra interoperability cassandra storage engine in mariadb
Maria db cassandra interoperability cassandra storage engine in mariadbMaria db cassandra interoperability cassandra storage engine in mariadb
Maria db cassandra interoperability cassandra storage engine in mariadbYUCHENG HU
 
C* Summit 2013: Can't we all just get along? MariaDB and Cassandra by Colin C...
C* Summit 2013: Can't we all just get along? MariaDB and Cassandra by Colin C...C* Summit 2013: Can't we all just get along? MariaDB and Cassandra by Colin C...
C* Summit 2013: Can't we all just get along? MariaDB and Cassandra by Colin C...DataStax Academy
 
MariaDB for developers
MariaDB for developersMariaDB for developers
MariaDB for developersColin Charles
 
Cassandra and Rails at LA NoSQL Meetup
Cassandra and Rails at LA NoSQL MeetupCassandra and Rails at LA NoSQL Meetup
Cassandra and Rails at LA NoSQL MeetupMichael Wynholds
 
Apache Cassandra at the Geek2Geek Berlin
Apache Cassandra at the Geek2Geek BerlinApache Cassandra at the Geek2Geek Berlin
Apache Cassandra at the Geek2Geek BerlinChristian Johannsen
 
[B14] A MySQL Replacement by Colin Charles
[B14] A MySQL Replacement by Colin Charles[B14] A MySQL Replacement by Colin Charles
[B14] A MySQL Replacement by Colin CharlesInsight Technology, Inc.
 
MariaDB for Developers and Operators (DevOps)
MariaDB for Developers and Operators (DevOps)MariaDB for Developers and Operators (DevOps)
MariaDB for Developers and Operators (DevOps)Colin Charles
 
Trivadis TechEvent 2016 Big Data Cassandra, wieso brauche ich das? by Jan Ott
Trivadis TechEvent 2016 Big Data Cassandra, wieso brauche ich das? by Jan OttTrivadis TechEvent 2016 Big Data Cassandra, wieso brauche ich das? by Jan Ott
Trivadis TechEvent 2016 Big Data Cassandra, wieso brauche ich das? by Jan OttTrivadis
 
From Postgres to Cassandra (Rimas Silkaitis, Heroku) | C* Summit 2016
From Postgres to Cassandra (Rimas Silkaitis, Heroku) | C* Summit 2016From Postgres to Cassandra (Rimas Silkaitis, Heroku) | C* Summit 2016
From Postgres to Cassandra (Rimas Silkaitis, Heroku) | C* Summit 2016DataStax
 
Apache cassandra & apache spark for time series data
Apache cassandra & apache spark for time series dataApache cassandra & apache spark for time series data
Apache cassandra & apache spark for time series dataPatrick McFadin
 
Cassandra - A decentralized storage system
Cassandra - A decentralized storage systemCassandra - A decentralized storage system
Cassandra - A decentralized storage systemArunit Gupta
 
Analytics with Cassandra & Spark
Analytics with Cassandra & SparkAnalytics with Cassandra & Spark
Analytics with Cassandra & SparkMatthias Niehoff
 
Developing with Cassandra
Developing with CassandraDeveloping with Cassandra
Developing with CassandraSperasoft
 
Instaclustr Webinar 50,000 Transactions Per Second with Apache Spark on Apach...
Instaclustr Webinar 50,000 Transactions Per Second with Apache Spark on Apach...Instaclustr Webinar 50,000 Transactions Per Second with Apache Spark on Apach...
Instaclustr Webinar 50,000 Transactions Per Second with Apache Spark on Apach...Instaclustr
 
Instaclustr webinar 50,000 transactions per second with Apache Spark on Apach...
Instaclustr webinar 50,000 transactions per second with Apache Spark on Apach...Instaclustr webinar 50,000 transactions per second with Apache Spark on Apach...
Instaclustr webinar 50,000 transactions per second with Apache Spark on Apach...Instaclustr
 
DataSource V2 and Cassandra – A Whole New World
DataSource V2 and Cassandra – A Whole New WorldDataSource V2 and Cassandra – A Whole New World
DataSource V2 and Cassandra – A Whole New WorldDatabricks
 
Introduction to Apache Cassandra
Introduction to Apache CassandraIntroduction to Apache Cassandra
Introduction to Apache CassandraRobert Stupp
 

Similar to MariaDB Cassandra Interoperability (20)

Mysqlconf2013 mariadb-cassandra-interoperability
Mysqlconf2013 mariadb-cassandra-interoperabilityMysqlconf2013 mariadb-cassandra-interoperability
Mysqlconf2013 mariadb-cassandra-interoperability
 
Maria db cassandra interoperability cassandra storage engine in mariadb
Maria db cassandra interoperability cassandra storage engine in mariadbMaria db cassandra interoperability cassandra storage engine in mariadb
Maria db cassandra interoperability cassandra storage engine in mariadb
 
C* Summit 2013: Can't we all just get along? MariaDB and Cassandra by Colin C...
C* Summit 2013: Can't we all just get along? MariaDB and Cassandra by Colin C...C* Summit 2013: Can't we all just get along? MariaDB and Cassandra by Colin C...
C* Summit 2013: Can't we all just get along? MariaDB and Cassandra by Colin C...
 
MariaDB for developers
MariaDB for developersMariaDB for developers
MariaDB for developers
 
Cassandra and Rails at LA NoSQL Meetup
Cassandra and Rails at LA NoSQL MeetupCassandra and Rails at LA NoSQL Meetup
Cassandra and Rails at LA NoSQL Meetup
 
Apache Cassandra at the Geek2Geek Berlin
Apache Cassandra at the Geek2Geek BerlinApache Cassandra at the Geek2Geek Berlin
Apache Cassandra at the Geek2Geek Berlin
 
[B14] A MySQL Replacement by Colin Charles
[B14] A MySQL Replacement by Colin Charles[B14] A MySQL Replacement by Colin Charles
[B14] A MySQL Replacement by Colin Charles
 
MariaDB for Developers and Operators (DevOps)
MariaDB for Developers and Operators (DevOps)MariaDB for Developers and Operators (DevOps)
MariaDB for Developers and Operators (DevOps)
 
Trivadis TechEvent 2016 Big Data Cassandra, wieso brauche ich das? by Jan Ott
Trivadis TechEvent 2016 Big Data Cassandra, wieso brauche ich das? by Jan OttTrivadis TechEvent 2016 Big Data Cassandra, wieso brauche ich das? by Jan Ott
Trivadis TechEvent 2016 Big Data Cassandra, wieso brauche ich das? by Jan Ott
 
From Postgres to Cassandra (Rimas Silkaitis, Heroku) | C* Summit 2016
From Postgres to Cassandra (Rimas Silkaitis, Heroku) | C* Summit 2016From Postgres to Cassandra (Rimas Silkaitis, Heroku) | C* Summit 2016
From Postgres to Cassandra (Rimas Silkaitis, Heroku) | C* Summit 2016
 
Apache cassandra & apache spark for time series data
Apache cassandra & apache spark for time series dataApache cassandra & apache spark for time series data
Apache cassandra & apache spark for time series data
 
Cassandra - A decentralized storage system
Cassandra - A decentralized storage systemCassandra - A decentralized storage system
Cassandra - A decentralized storage system
 
Analytics with Cassandra & Spark
Analytics with Cassandra & SparkAnalytics with Cassandra & Spark
Analytics with Cassandra & Spark
 
Developing with Cassandra
Developing with CassandraDeveloping with Cassandra
Developing with Cassandra
 
Instaclustr Webinar 50,000 Transactions Per Second with Apache Spark on Apach...
Instaclustr Webinar 50,000 Transactions Per Second with Apache Spark on Apach...Instaclustr Webinar 50,000 Transactions Per Second with Apache Spark on Apach...
Instaclustr Webinar 50,000 Transactions Per Second with Apache Spark on Apach...
 
Instaclustr webinar 50,000 transactions per second with Apache Spark on Apach...
Instaclustr webinar 50,000 transactions per second with Apache Spark on Apach...Instaclustr webinar 50,000 transactions per second with Apache Spark on Apach...
Instaclustr webinar 50,000 transactions per second with Apache Spark on Apach...
 
DataSource V2 and Cassandra – A Whole New World
DataSource V2 and Cassandra – A Whole New WorldDataSource V2 and Cassandra – A Whole New World
DataSource V2 and Cassandra – A Whole New World
 
Introduction to Apache Cassandra
Introduction to Apache CassandraIntroduction to Apache Cassandra
Introduction to Apache Cassandra
 
NoSQL Session II
NoSQL Session IINoSQL Session II
NoSQL Session II
 
MySQLinsanity
MySQLinsanityMySQLinsanity
MySQLinsanity
 

More from Colin Charles

Differences between MariaDB 10.3 & MySQL 8.0
Differences between MariaDB 10.3 & MySQL 8.0Differences between MariaDB 10.3 & MySQL 8.0
Differences between MariaDB 10.3 & MySQL 8.0Colin Charles
 
What is MariaDB Server 10.3?
What is MariaDB Server 10.3?What is MariaDB Server 10.3?
What is MariaDB Server 10.3?Colin Charles
 
Databases in the hosted cloud
Databases in the hosted cloud Databases in the hosted cloud
Databases in the hosted cloud Colin Charles
 
MySQL features missing in MariaDB Server
MySQL features missing in MariaDB ServerMySQL features missing in MariaDB Server
MySQL features missing in MariaDB ServerColin Charles
 
The MySQL ecosystem - understanding it, not running away from it!
The MySQL ecosystem - understanding it, not running away from it! The MySQL ecosystem - understanding it, not running away from it!
The MySQL ecosystem - understanding it, not running away from it! Colin Charles
 
Databases in the Hosted Cloud
Databases in the Hosted CloudDatabases in the Hosted Cloud
Databases in the Hosted CloudColin Charles
 
Best practices for MySQL High Availability Tutorial
Best practices for MySQL High Availability TutorialBest practices for MySQL High Availability Tutorial
Best practices for MySQL High Availability TutorialColin Charles
 
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)Colin Charles
 
Capacity planning for your data stores
Capacity planning for your data storesCapacity planning for your data stores
Capacity planning for your data storesColin Charles
 
The Proxy Wars - MySQL Router, ProxySQL, MariaDB MaxScale
The Proxy Wars - MySQL Router, ProxySQL, MariaDB MaxScaleThe Proxy Wars - MySQL Router, ProxySQL, MariaDB MaxScale
The Proxy Wars - MySQL Router, ProxySQL, MariaDB MaxScaleColin Charles
 
Lessons from {distributed,remote,virtual} communities and companies
Lessons from {distributed,remote,virtual} communities and companiesLessons from {distributed,remote,virtual} communities and companies
Lessons from {distributed,remote,virtual} communities and companiesColin Charles
 
Forking Successfully - or is a branch better?
Forking Successfully - or is a branch better?Forking Successfully - or is a branch better?
Forking Successfully - or is a branch better?Colin Charles
 
MariaDB Server Compatibility with MySQL
MariaDB Server Compatibility with MySQLMariaDB Server Compatibility with MySQL
MariaDB Server Compatibility with MySQLColin Charles
 
Securing your MySQL / MariaDB Server data
Securing your MySQL / MariaDB Server dataSecuring your MySQL / MariaDB Server data
Securing your MySQL / MariaDB Server dataColin Charles
 
The MySQL Server Ecosystem in 2016
The MySQL Server Ecosystem in 2016The MySQL Server Ecosystem in 2016
The MySQL Server Ecosystem in 2016Colin Charles
 
The Complete MariaDB Server tutorial
The Complete MariaDB Server tutorialThe Complete MariaDB Server tutorial
The Complete MariaDB Server tutorialColin Charles
 
Best practices for MySQL/MariaDB Server/Percona Server High Availability
Best practices for MySQL/MariaDB Server/Percona Server High AvailabilityBest practices for MySQL/MariaDB Server/Percona Server High Availability
Best practices for MySQL/MariaDB Server/Percona Server High AvailabilityColin Charles
 
Lessons from database failures
Lessons from database failures Lessons from database failures
Lessons from database failures Colin Charles
 
Lessons from database failures
Lessons from database failuresLessons from database failures
Lessons from database failuresColin Charles
 
Lessons from database failures
Lessons from database failuresLessons from database failures
Lessons from database failuresColin Charles
 

More from Colin Charles (20)

Differences between MariaDB 10.3 & MySQL 8.0
Differences between MariaDB 10.3 & MySQL 8.0Differences between MariaDB 10.3 & MySQL 8.0
Differences between MariaDB 10.3 & MySQL 8.0
 
What is MariaDB Server 10.3?
What is MariaDB Server 10.3?What is MariaDB Server 10.3?
What is MariaDB Server 10.3?
 
Databases in the hosted cloud
Databases in the hosted cloud Databases in the hosted cloud
Databases in the hosted cloud
 
MySQL features missing in MariaDB Server
MySQL features missing in MariaDB ServerMySQL features missing in MariaDB Server
MySQL features missing in MariaDB Server
 
The MySQL ecosystem - understanding it, not running away from it!
The MySQL ecosystem - understanding it, not running away from it! The MySQL ecosystem - understanding it, not running away from it!
The MySQL ecosystem - understanding it, not running away from it!
 
Databases in the Hosted Cloud
Databases in the Hosted CloudDatabases in the Hosted Cloud
Databases in the Hosted Cloud
 
Best practices for MySQL High Availability Tutorial
Best practices for MySQL High Availability TutorialBest practices for MySQL High Availability Tutorial
Best practices for MySQL High Availability Tutorial
 
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
 
Capacity planning for your data stores
Capacity planning for your data storesCapacity planning for your data stores
Capacity planning for your data stores
 
The Proxy Wars - MySQL Router, ProxySQL, MariaDB MaxScale
The Proxy Wars - MySQL Router, ProxySQL, MariaDB MaxScaleThe Proxy Wars - MySQL Router, ProxySQL, MariaDB MaxScale
The Proxy Wars - MySQL Router, ProxySQL, MariaDB MaxScale
 
Lessons from {distributed,remote,virtual} communities and companies
Lessons from {distributed,remote,virtual} communities and companiesLessons from {distributed,remote,virtual} communities and companies
Lessons from {distributed,remote,virtual} communities and companies
 
Forking Successfully - or is a branch better?
Forking Successfully - or is a branch better?Forking Successfully - or is a branch better?
Forking Successfully - or is a branch better?
 
MariaDB Server Compatibility with MySQL
MariaDB Server Compatibility with MySQLMariaDB Server Compatibility with MySQL
MariaDB Server Compatibility with MySQL
 
Securing your MySQL / MariaDB Server data
Securing your MySQL / MariaDB Server dataSecuring your MySQL / MariaDB Server data
Securing your MySQL / MariaDB Server data
 
The MySQL Server Ecosystem in 2016
The MySQL Server Ecosystem in 2016The MySQL Server Ecosystem in 2016
The MySQL Server Ecosystem in 2016
 
The Complete MariaDB Server tutorial
The Complete MariaDB Server tutorialThe Complete MariaDB Server tutorial
The Complete MariaDB Server tutorial
 
Best practices for MySQL/MariaDB Server/Percona Server High Availability
Best practices for MySQL/MariaDB Server/Percona Server High AvailabilityBest practices for MySQL/MariaDB Server/Percona Server High Availability
Best practices for MySQL/MariaDB Server/Percona Server High Availability
 
Lessons from database failures
Lessons from database failures Lessons from database failures
Lessons from database failures
 
Lessons from database failures
Lessons from database failuresLessons from database failures
Lessons from database failures
 
Lessons from database failures
Lessons from database failuresLessons from database failures
Lessons from database failures
 

Recently uploaded

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 

Recently uploaded (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 

MariaDB Cassandra Interoperability

  • 1. Cassandra Storage Engine in MariaDB MariaDB Cassandra interoperability Sergei Petrunia Colin Charles
  • 2. Who are we ● Sergei Petrunia – Principal developer of CassandraSE, optimizer developer, formerly from MySQL – psergey@mariadb.org ● Colin Charles – Chief Evangelist, MariaDB, formerly from MySQL – colin@mariadb.org
  • 3. Agenda ● An introduction to Cassandra ● The Cassandra Storage Engine (Cassandra SE) ● Data mapping ● Use cases ● Benchmarks ● Conclusion
  • 4. Background: what is Cassandra • A distributed NoSQL database – Key-Value store ● Limited range scan support – Optionally flexible schema ● Pre-defined “static” columns ● Ad-hoc “dynamic” columns – Automatic sharding / replication – Eventual consistency 4
  • 5. Background: Cassandra's data model • “Column families” like tables • Row key → columns • Somewhat similar to SQL but some important differences. • Supercolumns are not supported 5
  • 6. CQL – Cassandra Query Language Looks like SQL at first glance 6 bash$ cqlsh -3 cqlsh> CREATE KEYSPACE mariadbtest ... WITH REPLICATION ={'class':'SimpleStrategy','replication_factor':1}; cqlsh> use mariadbtest; cqlsh:mariadbtest> create columnfamily cf1 ( pk varchar primary key, ... data1 varchar, data2 bigint ... ) with compact storage; cqlsh:mariadbtest> insert into cf1 (pk, data1,data2) ... values ('row1', 'data-in-cassandra', 1234); cqlsh:mariadbtest> select * from cf1; pk | data1 | data2 ------+-------------------+------- row1 | data-in-cassandra | 1234
  • 7. CQL is not SQL Similarity with SQL is superficial 7 cqlsh:mariadbtest> select * from cf1 where pk='row1'; pk | data1 | data2 ------+-------------------+------- row1 | data-in-cassandra | 1234 cqlsh:mariadbtest> select * from cf1 where data2=1234; Bad Request: No indexed columns present in by-columns clause with Equal operator cqlsh:mariadbtest> select * from cf1 where pk='row1' or pk='row2'; Bad Request: line 1:34 missing EOF at 'or' • No joins or subqueries • No GROUP BY, ORDER BY must be able to use available indexes • WHERE clause must represent an index lookup.
  • 8. Cassandra Storage Engine 8 Provides a “view” of Cassandra's data from MariaDB. Starts a NoCQL movement
  • 9. 1. Load the Cassandra SE plugin • Get MariaDB 10.0.1+ • Load the Cassandra plugin – From SQL: 9 MariaDB [(none)]> install plugin cassandra soname 'ha_cassandra.so'; [mysqld] ... plugin-load=ha_cassandra.so – Or, add a line to my.cnf: MariaDB [(none)]> show plugins; +--------------------+--------+-----------------+-----------------+---------+ | Name | Status | Type | Library | License | +--------------------+--------+-----------------+-----------------+---------+ ... | CASSANDRA | ACTIVE | STORAGE ENGINE | ha_cassandra.so | GPL | +--------------------+--------+-----------------+-----------------+---------+ • Check it is loaded
  • 10. 2. Connect to Cassandra • Create an SQL table which is a view of a column family 1 0 MariaDB [test]> set global cassandra_default_thrift_host='10.196.2.113'; Query OK, 0 rows affected (0.00 sec) MariaDB [test]> create table t2 (pk varchar(36) primary key, -> data1 varchar(60), -> data2 bigint -> ) engine=cassandra -> keyspace='mariadbtest' -> thrift_host='10.196.2.113' -> column_family='cf1'; Query OK, 0 rows affected (0.01 sec) – thrift_host can be set per-table – @@cassandra_default_thrift_host allows to ● Re-point the table to different node dynamically ● Not change table DDL when Cassandra IP changes.
  • 11. Possible gotchas 1 1 • SELinux blocks the connection MariaDB [test]> create table t1 ( ... ) engine=cassandra ... ; ERROR 1429 (HY000): Unable to connect to foreign data source: connect() failed: Permission denied [1] MariaDB [test]> create table t1 ( ... ) engine=cassandra ... ; ERROR 1429 (HY000): Unable to connect to foreign data source: Column family cf1 not found in keyspace mariadbtest • Cassandra 1.2 and CFs without “COMPACT STORAGE” – Packaging bug – To get running quickly: echo 0 >/selinux/enforce – Caused by a change in Cassandra 1.2 – They broke Pig also – We intend to update CassandraSE for 1.2
  • 12. Accessing Cassandra data ● Can insert data 1 2 MariaDB [test]> insert into t2 values ('row2','data-from-mariadb', 123); Query OK, 1 row affected (0.00 sec) cqlsh:mariadbtest> select * from cf1; pk | data1 | data2 ------+-------------------+------- row1 | data-in-cassandra | 1234 row2 | data-from-mariadb | 123 • Cassandra sees inserted data MariaDB [test]> select * from t2; +------+-------------------+-------+ | pk | data1 | data2 | +------+-------------------+-------+ | row1 | data-in-cassandra | 1234 | +------+-------------------+-------+ • Can get Cassandra's data
  • 14. Data mapping between Cassandra and SQL 1 4 create table tbl ( pk varchar(36) primary key, data1 varchar(60), data2 bigint ) engine=cassandra keyspace='ks1' column_family='cf1' • MariaDB table represents Cassandra's Column Family – Can use any table name, column_family=... specifies CF.
  • 15. Data mapping between Cassandra and SQL 1 5 create table tbl ( pk varchar(36) primary key, data1 varchar(60), data2 bigint ) engine=cassandra keyspace='ks1' column_family='cf1' • MariaDB table represents Cassandra's Column Family – Can use any table name, column_family=... specifies CF. • Table must have a primary key – Name/type must match Cassandra's rowkey
  • 16. Data mapping between Cassandra and SQL 1 6 create table tbl ( pk varchar(36) primary key, data1 varchar(60), data2 bigint ) engine=cassandra keyspace='ks1' column_family='cf1' • MariaDB table represents Cassandra's Column Family – Can use any table name, column_family=... specifies CF. • Table must have a primary key – Name/type must match Cassandra's rowkey • Columns map to Cassandra's static columns – Name must be the same as in Cassandra – Datatypes must match – Can any subset of CF's columns
  • 17. Datatype mapping Cassandra MariaDB blob BLOB, VARBINARY(n) ascii BLOB, VARCHAR(n), use charset=latin1 text BLOB, VARCHAR(n), use charset=utf8 varint VARBINARY(n) int INT bigint BIGINT, TINY, SHORT uuid CHAR(36) (text in MariaDB) timestamp TIMESTAMP (second precision), TIMESTAMP(6) (microsecond precision), BIGINT boolean BOOL float FLOAT double DOUBLE decimal VARBINARY(n) counter BIGINT • CF column datatype determines MariaDB datatype
  • 18. Dynamic columns • Cassandra supports “dynamic column families” • Can access ad-hoc columns with MariaDB's dynamic columns feature 1 8 create table tbl ( rowkey type PRIMARY KEY column1 type, ... dynamic_cols blob DYNAMIC_COLUMN_STORAGE=yes ) engine=cassandra keyspace=... column_family=...; insert into tbl values (1, column_create('col1', 1, 'col2', 'value-2')); select rowkey, column_get(dynamic_cols, 'uuidcol' as char) from tbl;
  • 19. Data mapping is safe create table t3 (pk varchar(60) primary key, no_such_field int) engine=cassandra `keyspace`='mariadbtest' `column_family`='cf1'; ERROR 1928 (HY000): Internal error: 'Field `no_such_field` could not be mapped to any field in Cassandra' create table t3 (pk varchar(60) primary key, data1 double) engine=cassandra `keyspace`='mariadbtest' `column_family`='cf1'; ERROR 1928 (HY000): Internal error: 'Failed to map column data1 to datatype org.apache.cassandra.db.marshal.UTF8Type' • Cassandra SE will refuse incorrect mappings
  • 21. Command Mapping ● Cassandra commands – PUT (upsert) – GET ● Scan – DELETE (if exists) ● SQL commands – SELECT → GET/Scan – INSERT → PUT (upsert) – UPDATE/DELETE → read+write.
  • 22. SELECT command mapping ● MariaDB has an SQL interpreter ● Cassandra SE supports lookups and scans ● Can now do – Arbitrary WHERE clauses – JOINs between Cassandra tables and MariaDB tables ● Batched Key Access is supported
  • 23. DML command mapping ● No SQL semantics – INSERT overwrites rows – UPDATE reads, then writes ● Have you updated what you read – DELETE reads, then deletes ● Can't be sure if/what you have deleted ● Not as bad as it sounds, it's Cassandra – Cassandra SE doesn't make it SQL.
  • 25. Cassandra use cases ● Collect massive amounts of data – Web page hits – Sensor updates ● Updates are naturally non-conflicting – Keyed by UUIDs, timestamps ● Reads are served with one lookup ● Good for certain kinds of data – Moving from SQL entirely may be difficult
  • 26. Cassandra SE use cases (1) ● Send an update to Cassandra – Be a sensor ● Grab a piece of data from Cassandra – “This web page was last viewed by …” – “Last known position of this user was ...”. Access Cassandra data from SQL
  • 27. Cassandra SE use cases (2) ● Want a special table that is – auto-replicated – fault-tolerant – Very fast? ● Get Cassandra, and create a Cassandra SE table. Coming from MySQL/MariaDB side:
  • 28. Cassandra Storage Engine non-use cases • Huge, sift-through-all-data joins – Use Pig • Bulk data transfer to/from Cassandra cluster – Use Sqoop • A replacement for InnoDB – No full SQL semantics 2 8
  • 29. A “benchmark” • One table • EC2 environment – m1.large nodes – Ephemeral disks • Stream of single-line INSERTs • Tried Innodb and Cassandra • Hardly any tuning
  • 30. Conclusions • Cassandra SE can be used to peek at data in Cassandra from MariaDB. • It is not a replacement for Pig/Hive • It is really easy to setup and use 3 0
  • 31. Going Forward • Looking for input • Do you want support for – Fast counter columns updates? – Awareness of Cassandra cluster topology? – Secondary indexes? – …? 3 1
  • 32. Resources • https://kb.askmonty.org/en/cassandrase/ • http://wiki.apache.org/cassandra/DataModel • http://cassandra.apache.org/ • http://www.datastax.com/docs/1.1/ddl/column_family 3 2
  • 34. Extra: Cassandra SE internals • Developed against Cassandra 1.1 • Uses Thrift API – cannot stream CQL resultset in 1.1 – Cant use secondary indexes • Only supports AllowAllAuthenticator • In Cassandra 1.2 – “CQL Binary Protocol” with streaming – CASSANDRA-5234: Thrift can only read CFs “WITH COMPACT STORAGE” 3 4