Your SlideShare is downloading. ×
0
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
NoSQL Yes, But YesCQL, No?
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

NoSQL Yes, But YesCQL, No?

4,437

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,437
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
41
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. NoSQL Yes, But YesCQL, No? Berlin Buzzwords June 7, 2011 Eric Evans eevans@rackspace.com @jericevans http://blog.sym-link.com
  • 2. Cassandra Query Language● Structured query language for Apache Cassandra.● CQL for short (pronounced /siːkw əl/).● SQL alike (best effort).● An alternative to the existing API, not a replacement (not yet).● Available for use in Cassandra 0.8.0.
  • 3. Wait, arent you the guy...?
  • 4. So, is this a troll?
  • 5. Gonna Give You Up. Never.
  • 6. Naw.(not a troll, honest)
  • 7. But, why?
  • 8. Because the API sucks.
  • 9. “Thrift sucks, ergo the API sucks”● Generated code (C++ compiler).● Loads of languages, but varying levels of support. ● PHP anyone?● Upstream alternating between extremes of combativeness and apathy. ● Patches ignored, (or refused). ● Loads of (serious )bugs ignored for long periods. ● Infrequent releases.
  • 10. “Avro Does Not Suck, so...”1. Avro2. Something, something, something3. Profit!
  • 11. And the API still sucks.
  • 12. Brass Tacks● Unstable ● Too tightly coupled to internal APIs● Too difficult to use ● Very little abstraction (forces clients to abstract) ● Poor mental fit for query/data models
  • 13. Back to the drawing board● RPC (Thrift, Avro, Protobuf, etc)● REST● Query language● Etc, etc
  • 14. Back to the drawing board● RPC (Thrift, Avro, Protobuf, etc) ● Easy to implement ● Performant● REST● Query language● Etc, etc
  • 15. Back to the drawing board● RPC (Thrift, Avro, Protobuf, etc) ● Easy to implement ● Performant● REST ● Little need for client abstraction● Query language● Etc, etc
  • 16. Back to the drawing board● RPC (Thrift, Avro, Protobuf, etc) ● Easy to implement ● Performant● REST ● Little need for client abstraction● Query language ● Little need for client abstraction ● Reads well; What you see is what you get ● The Devil we all know● Etc, etc
  • 17. Grok Thisfirstname = Column(name="firstname", value="Eric", timestamp=time)firstcosc = ColumnOrSuperColumn(column=firstname)lastname = Column(name="lastname", value="Evans", timestamp=time)lastcosc = ColumnOrSuperColumn(column=lastname)mutations = []mutations.append(Mutation(column_or_supercolumn=firstcosc))mutations.append(Mutation(column_or_supercolumn=lastcosc))client.batch_mutate(mutation_map={"eevans": {"table": mutations}}, consistency_level=ConsistencyLevel.ONE)
  • 18. What about this?UPDATE tableSET firstname=Eric, lastname=EvansWHERE KEY=eevans
  • 19. Grok Thisparent = ColumnParent(column_family="table")colnames = ["firstname", "lastname"]predicate = SlicePredicate(column_names=colnames)row = client.get_slice(key="eevans", column_parent=parent, predicate=predicate, consistency_level=CL.ONE)
  • 20. And this?SELECT firstname, lastnameFROM tableWHERE KEY = eevans
  • 21. Official(?) Drivers● Java (JDBC)● Python (DBAPI2)● Node.js● Twisted● PHP (coming soon?)● Ruby (coming soon?)
  • 22. More Info● Docs (doc/cql/CQL.html)● http://www.datastax.com/docs/0.8/api/using_cql● http://caqel.deadcafe.org (live demo!)● cqlsh (interactive shell shipped w/ Python driver)

×