Achilles presentation

Post on 02-Jul-2015

126 views 0 download

description

Achilles presentation

Transcript of Achilles presentation

@doanduyhai

Achilles object mapper for Cassandra DuyHai DOAN, Technical Advocate, Achilles creator

@doanduyhai

Shameless self-promotion!

2

Duy Hai DOAN Cassandra technical advocate •  talks, meetups, confs •  open-source devs (Achilles, …) •  Europe technical point of contact

☞ duy_hai.doan@datastax.com •  production troubleshooting

@doanduyhai

Agenda!

3

Why Achilles ? Live Demo Main API Documentation RoadMap

@doanduyhai

Why Achilles ?!

4

CQL looks like SQL

INSERT INTO users(login, name, age) VALUES(‘jdoe’, ‘John DOE’, 33);

UPDATE users SET age = 34 WHERE login = jdoe;

DELETE age FROM users WHERE login = jdoe;

SELECT age FROM users WHERE login = jdoe;

@doanduyhai

Why Achilles ?!

5

Do you want to do this ?

String query = ‘’SELECT * FROM users WHERE login = ‘jdoe’ ‘’;

List<Row> rows = session.execute(query).all(); for(Row row: rows) { String name = row.getString(‘’name’’); int age = row.getInt(‘’age’’); … }

Live code DEMO !

https://github.com/doanduyhai/achilles-demo

@doanduyhai

Main API!

7

manager.insert(entity) manager.update(entity) manager.remove(entity) manager.find(Entity.class, primaryKey)

@doanduyhai

Main API!

8

Slice query, typed query

RegularStatement select = select().from(“user_messages”)

.where(eq(“user_id”,bindMarker()))

.and(gte(asList(“message_folder”), bindMarker()))

.and(lt(asList(“message_folder”, “date”), bindMarker()))

.limit(10); List<Message> messages = manager.typedQuery(Message.class, select,

userId, asList(“forums”), asList(“forums”, uuid1)) .get();

@doanduyhai

Main API!

9

Native query

RegularStatement nativeQuery = new SimpleStatement(“SELECT * FROM Message WHERE … LIMIT 1”); TypedMap firstMessage = manager.nativeQuery(nativeQuery).first(); String interlocutor = firstMessage.getTyped(“interlocutor”); //Or String interlocutor = firstMessage.<String>getTyped(“interlocutor”);

@doanduyhai

Main API!

10

Counter Batch mode Strategies (insert, naming) Options

@doanduyhai

Documentation!

11

Comprehensive Github WIKI Twitter-clone demo app (demo.achilles.io) Versioned documentation (HTML & PDF) JavaDoc

@doanduyhai

RoadMap!

12

Asynchronous API (branch Asynchronous) •  main API ( insert(), update(), …) •  slice, typed & native queries C* 2.1 user defined types (UDT) Reactive ? (RxJava) ElasticSearch integration (@olivierbourgain)

@doanduyhai

Where to get Achilles ?!

13

www.achilles.io Google ‘’Cassandra Achilles’’ ☞ first result

Q & R

! " !

Thank You @doanduyhai

duy_hai.doan@datastax.com

www.achilles.io