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

Achilles presentation

Jul 02, 2015

Download

Technology

Duyhai Doan

Achilles presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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