Achilles presentation

15
@doanduyhai Achilles object mapper for Cassandra DuyHai DOAN, Technical Advocate, Achilles creator

description

Achilles presentation

Transcript of Achilles presentation

Page 1: Achilles presentation

@doanduyhai

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

Page 2: Achilles presentation

@doanduyhai

Shameless self-promotion!

2

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

[email protected] •  production troubleshooting

Page 3: Achilles presentation

@doanduyhai

Agenda!

3

Why Achilles ? Live Demo Main API Documentation RoadMap

Page 4: Achilles presentation

@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;

Page 5: Achilles presentation

@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’’); … }

Page 6: Achilles presentation

Live code DEMO !

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

Page 7: Achilles presentation

@doanduyhai

Main API!

7

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

Page 8: Achilles presentation

@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();

Page 9: Achilles presentation

@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”);

Page 10: Achilles presentation

@doanduyhai

Main API!

10

Counter Batch mode Strategies (insert, naming) Options

Page 11: Achilles presentation

@doanduyhai

Documentation!

11

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

Page 12: Achilles presentation

@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)

Page 13: Achilles presentation

@doanduyhai

Where to get Achilles ?!

13

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

Page 14: Achilles presentation

Q & R

! " !

Page 15: Achilles presentation

Thank You @doanduyhai

[email protected]

www.achilles.io