Date post: | 02-Jul-2015 |
Category: |
Technology |
Upload: | duyhai-doan |
View: | 120 times |
Download: | 0 times |
@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
☞ [email protected] • 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
! " !