- Fluent Decorator
- In, Out, In, Out, Shake It All About
- The Lonely Override
- Monad
- Functional Reactive?
你可以在以下找到中文說明:
http://www.codedata.com.tw/social-coding/java8-patterns/
H2O , Le machine learning sans coder ou presque - Devoxx france 2016Claude Falguiere
H2O est un outil d'analyse prédictive open source
La présentation a été donnée à Devoxx France 2016
La video https://www.youtube.com/watch?v=pA3eZQzkzwo
Learn practical skills to take control of your finances. This presentation was prepared for a statewide partnership with the SC Department of Education Adult Education Division, specifically for GED candidates.
- Fluent Decorator
- In, Out, In, Out, Shake It All About
- The Lonely Override
- Monad
- Functional Reactive?
你可以在以下找到中文說明:
http://www.codedata.com.tw/social-coding/java8-patterns/
H2O , Le machine learning sans coder ou presque - Devoxx france 2016Claude Falguiere
H2O est un outil d'analyse prédictive open source
La présentation a été donnée à Devoxx France 2016
La video https://www.youtube.com/watch?v=pA3eZQzkzwo
Learn practical skills to take control of your finances. This presentation was prepared for a statewide partnership with the SC Department of Education Adult Education Division, specifically for GED candidates.
A Picture of Cassandra in the Real World - StampedeCon 2014StampedeCon
At StampedeCon 2014, Nate McCall (The Last Pickle) presented "A Picture of Cassandra in the Real World."
In this presentation, we’ll look past the media and marketing hype surrounding Cassandra to provide useful information taken directly from a number of real world use cases.
We’ll discuss:
systems architectures and methods of deployment
performance characteristics of common workloads
operations tasks required for keeping clusters healthy
solutions to backup and recovery
how to fit Cassandra into common software development processes
Presented by a long-time Cassandra user and community member who led the development of the original Java driver back in the fall of 2009, this talk will be thorough, accurate, and informative. Attendees will come away with a better understanding of how to best leverage the power and operational characteristics of Cassandra in their architectures.
"Seguridad en Servicios Web" exposición del Ing. Saul Mamani Mamani, desarrollada en el III Congreso Internacional de Informática Forense y Hacking Ético, desarrollado en la ciudad de Tarija en Bolivia el Sábado 03 de Mayo del 2014
Présentation donnée au Breizhcamp le 23 juin 2014
Le monitoring d'applications ... pas vraiment hype comme sujet. Et pourtant c'est un domaine en mutation parce que le déploiement continu et la démarche DevOps modifient les échanges d'informations avec la production et aussi parce qu'il est maintenant possible stocker massivement les informations collectées. Je vous propose d'explorer ces sujets autour de quelques exemples.
Présentation du user group Duchess France au GDG de NantesClaude Falguiere
Présentation du user group Duchess France au GDG de Nantes. Duchess France est un Jave User group destiné à promouvoir les femmes dans le développement sur la plate-forme Java.
Mesurer Les Performances Avec JMeter Cours Du Soir Valtech 25 Mars 2010
No sql pour valtech tech days
1. Introduction
NoSql
Présentation
pour la demi-
journée des
consultants
Claude Falguière
Octobre 2010
2. Des bases crées pour des besoins spécifiques
Google
Amazon
Indexation d'un très
Site de commerce grand nombre de
en très forte sites
croissance
Conserver Besoin
SGBD énorme de
disponibilité
et fiabilité Relationnel ? stockage
3. La réponse aux problèmes de montée en charge
Issues des réseaux sociaux Des projets Open Source
Big Table (Google)
HBase
SimpleDB (Amazon)
Apache Cassandra
Voldemort (LinkedIn)
Cassandra (Facebook) CouchDB
4. Emergence en 2010 Twitter passe de
MySql à
Cassandra
Twitter passe
de Cassandra à
MySql
Facebook annonce
Cassandra
Mouvement
démarré fin 2008
5. Un ensemble disparate sous la bannière NoSql
… mais des points communs
Très utilisées par les Orientées volumes,
réseaux sociaux et le scalabilité et
micro-blogging disponibilité
Pas de support des Très souvent
opérations distribuées
couteuses type Join
ou transactions
6. Démontage du SGBD
Toujours
SQL API API spécifique
Relationnel Modèle de
Modèle de Structures
données
données de données
Versionning,
Transactionnel Gestion de la
Gestion de la Eventual
ACID concurrence
concurrence Consistency
Monolithique Stockage
Stockage Réparti
Souvent
7. Les modèles de données
Key-Value Store
(Tableaux associatifs)
Document
Structured Store
Column Database
(Dimensionnelle
) Graph
8. Les bases Key Valeur
Des hashmaps distribuées
Ce modèle est très simple et les
implémentations sont très nombreuses
Riak
Dynamo
Project Voldemort
SimpleDB (LinkedIn)
(Amazon)
BigTable
(Google) Redis
9. Exemples Redis en ligne de commande
set
$ ./redis-cli mykey somevalue
OK http://code.google.com/p/redis/
get
$ ./redis-cli mykey http://try.redis-db.com/
somevalue
lpush
$ ./redis-cli mylist firstvalue
OK
$ ./redis-cli lpush mylist secondvalue Langage Bindings :
OK
$ ./redis-cli lpush mylist thirdvalue C, C#, Common Lisp,
OK Java, JavaScript, Lua, Tcl,
lrange
$ ./redis-cli mylist 0 -1 Perl, Python, Ruby, Scala,
1. thirdvalue Clojure, Go, Erlang
2. secondvalue
10. Exemples Voldemort avec un Java binding
http://project-voldemort.com/
final String bootstrapUrl = "...";
final String bootstrapUrl = "...";
final StoreClientFactory factory =
final StoreClientFactory factory =
new SocketStoreClientFactory(
new SocketStoreClientFactory(
new ClientConfig().setBootstrapUrls(bootstrapUrl)
new ClientConfig().setBootstrapUrls(bootstrapUrl)
);
);
final StoreClient client = factory.getStoreClient("MyStore");
final StoreClient client = factory.getStoreClient("MyStore");
final Versioned version = client.get("key");
final Versioned version = client.get("key");
version.setObject("value");
version.setObject("value");
client.put("key", value);
client.put("key", value);
11. Les bases Colonne
Aussi des sortes de hashmap.
Une ligne peut avoir un nombre quelconque Cassandra
de “colonnes” représentées par une série de HBase
Hypertable
couples clé-valeur
Représentation plus flexible des données
attachées à une entité (Sparse data)
12. Exemples Cassandra en Java avec Apache Thrift
http://cassandra.apache.org/
http://incubator.apache.org/thrift/
// insert data
// insert data
ColumnPath name = new ColumnPath("Standard1", null,
ColumnPath name = new ColumnPath("Standard1", null,
"name".getBytes("UTF-8")), "Chris Goffinet".getBytes("UTF-8");
"name".getBytes("UTF-8")), "Chris Goffinet".getBytes("UTF-8");
client.insert("Keyspace1", key_user_id, name,
client.insert("Keyspace1", key_user_id, name,
timestamp, ConsistencyLevel.ONE);
timestamp, ConsistencyLevel.ONE);
ColumnPath age = new ColumnPath("Standard1", null,
ColumnPath age = new ColumnPath("Standard1", null,
"age".getBytes("UTF-8")), "24".getBytes("UTF-8");
"age".getBytes("UTF-8")), "24".getBytes("UTF-8");
client.insert("Keyspace1", key_user_id, age,
client.insert("Keyspace1", key_user_id, age,
timestamp, ConsistencyLevel.ONE);
timestamp, ConsistencyLevel.ONE);
13. Exemples Cassandra en Java avec Apache Thrift
// read single column
// read single column
ColumnPath path = new ColumnPath("Standard1", null,
ColumnPath path = new ColumnPath("Standard1", null,
"name".getBytes("UTF-8"));
"name".getBytes("UTF-8"));
ColumnOrSuperColumn name =
ColumnOrSuperColumn name =
client.get("Keyspace1", key_user_id, path, ConsistencyLevel.ONE));
client.get("Keyspace1", key_user_id, path, ConsistencyLevel.ONE));
// read entire row
// read entire row
SlicePredicate predicate = new SlicePredicate(null,
SlicePredicate predicate = new SlicePredicate(null,
new SliceRange(new byte[0], new byte[0], false, 10));
new SliceRange(new byte[0], new byte[0], false, 10));
ColumnParent parent = new ColumnParent("Standard1", null);
ColumnParent parent = new ColumnParent("Standard1", null);
List<ColumnOrSuperColumn> results =
List<ColumnOrSuperColumn> results =
client.get_slice("Keyspace1", key_user_id, parent,
client.get_slice("Keyspace1", key_user_id, parent,
predicate, ConsistencyLevel.ONE);
predicate, ConsistencyLevel.ONE);
for (ColumnOrSuperColumn result :: results) ...
for (ColumnOrSuperColumn result results) ...
14. Les bases Document
Des hashmaps où la valeur associée à une clé est
un document soit XML soit JSON
Retrouver avec une seule clé un ensemble MongoDB
CouchDB
d’informations structurées de manière
hiérarchique : un utilisateur, ses statuts, ses
messages
L’équivalent en relationnel impliquerait beaucoup de
jointures
15. Exemple CouchDB en REST/JSON
http://couchdb.apache.org/
$ curl -X PUT http://couchdb:5984/tourism-db/hotel-de-la-mer
$ curl -X PUT http://couchdb:5984/tourism-db/hotel-de-la-mer
-d ''
-d
{{
"nom": "Hôtel de la Mer",
"nom": "Hôtel de la Mer",
"chambres": 12,
"chambres": 12,
"confort": ["vue sur mer", "accès wifi"]
"confort": ["vue sur mer", "accès wifi"]
}'
}'
{"ok":true,"id":"hotel-de-la-mer"
{"ok":true,"id":"hotel-de-la-mer"
,"rev":"1-7b182be1c40992eb715f6f1eb05ba109"}
,"rev":"1-7b182be1c40992eb715f6f1eb05ba109"}
16. Exemple CouchDB en Java
http://couchdb.apache.org/
// create a database object pointing to the database
// create a database object pointing to the database
// "mycouchdb" on the local host
// "mycouchdb" on the local host
Database db = new Database("localhost", "mycouchdb");
Database db = new Database("localhost", "mycouchdb");
// create a hash map document with two fields
// create a hash map document with two fields
Map<String,String> doc = new HashMap<String, String>();
Map<String,String> doc = new HashMap<String, String>();
doc.put("firstname", "Claude");
doc.put("firstname", "Claude");
doc.put("lastname", "Falguière");
doc.put("lastname", "Falguière");
// create the document in couchdb
// create the document in couchdb
db.createDocument(doc);
db.createDocument(doc);
17. Les bases Graphes
Reposent sur la notion
de nœuds
et de relations entre noeuds
et de propriétés qui leur sont attachées
Très répandues dans le traitement des données de Neo4
réseaux sociaux (l’utilisateur, ses amis, ses
InfoGrid
messages)
En phase avec les outils du web sémantique
(RDF, OWL, SparQL)
18. Exemples Neo4J avec Jo4Neo http://neo4j.org/
http://code.google.com/p/jo4neo/
public class Person {{
public class Person
transient Nodeid node;
transient Nodeid node;
@neo String firstName;
@neo String firstName;
@neo Date date;
@neo Date date;
@neo(index=true) String screenName;
@neo(index=true) String screenName;
@neo Collection<Role> roles;
@neo Collection<Role> roles;
// ...
// ...
}} ObjectGraph graph = …
ObjectGraph graph = …
Collection<City> cities = graph.get(City.class));
Collection<City> cities = graph.get(City.class ;
User user = new User();
User user = new User();
user = graph.find(user).where(user.screenName))
user = graph.find(user).where(user.screenName
.is(screenName)).result();
.is(screenName .result();
19. Exemples Neo4J en SPARQL
SELECT ?person
SELECT ?person
WHERE
WHERE
{{
?person neoj4:knows ?friend ..
?person neoj4:knows ?friend
?friend neoj4:knows ?user
?friend neoj4:knows ?user
?user neoj4:firstName "claude"
?user neoj4:firstName "claude"
}}
ORDER BY ?album
ORDER BY ?album
20. En général distribuées et répliquées
Répartition par hashage ou b-Tree
Réplication au fil de l'eau
Timestamps et versionning
Répartion
Partition 1
Clé
Partition 2
Réplication
21. Le CAP Theorem (Eric Brewer)
3 caractéristiques
techniques cruciales pour
les systèmes
distribués
Consistency
On ne peut pas
avoir les trois en
Availability même temps
Partition
Tolerance
23. R+W > N
R=2
Le client doit
contrôler le niveau
de cohérence
OK
W=3 N=4
OK
Quorum = N/2 + 1 = 3
OK
Paxos algorithm
24. Des avantages
Facilite les
traitements Gestion de données
Réel avantage distribués hiérarchiques ou
de disponibilité réseau
Facilite l'intégration Elastique
dans les clouds
… mais des inconvénients
Peu de gestion Coût du Apprendre à bien
de la sécurité changement gérer les clés
25. Bibliographie et crédits
Bibliographie
Structured Storage : http://en.wikipedia.org/wiki/Structured_storage
Cassandra : http://wiki.apache.org/cassandra/ThriftExamples
Crédits photos et cliparts
xxx xxx
Cours du soir JMeter - Valtech 25
26. Copyright notice
● Vous êtes libre de : http://creativecommons.org/licenses/by/3.0/
● Reproduire, distribuer et communiquer cette création au public
● Modifier cette création
● Selon les conditions suivantes :
● Paternité. Vous devez citer le nom de l'auteur original de la
manière indiquée par l'auteur de l'oeuvre ou le titulaire des droits
qui vous confère cette autorisation (mais pas d'une manière qui
suggérerait qu'ils vous soutiennent ou approuvent votre
utilisation de l'oeuvre).
● Rien dans ce contrat ne diminue ou ne restreint le droit moral de
l'auteur ou des auteurs.
Cours du soir JMeter - Valtech 26
27. Contact information
Présentation de
Présentation de
Claude Falguière
Claude Falguière Vous pouvez modifier cette
présentation mais vous devez
citer les sources (auteur et
http://fr.linkedin.com/in/claudefalguiere
http://fr.linkedin.com/in/claudefalguiere traducteur) quelque part dans
http:www.valtech.fr
http:www.valtech.fr votre présentation.
Par exemple incorporez cette
diapositive au début pour
dire que votre présentation
provient de ces sources.
Merci de faire pour le mieux.
Cours du soir JMeter - Valtech 27