Commentaires sur : Persistance objet avec Redis et Jackson https://java-freelance.fr/java/persistance-objet-avec-redis-et-jackson Du java et du freelance Mon, 04 Nov 2013 19:15:53 +0000 hourly 1 http://wordpress.org/?v=3.5 Par : Mathieu Leblanc https://java-freelance.fr/java/persistance-objet-avec-redis-et-jackson/comment-page-1#comment-23801 Mathieu Leblanc Tue, 17 Jul 2012 15:23:56 +0000 https://java-freelance.fr/?p=1425#comment-23801 Bonjour,

Merci pour cet article très interessant. Par contre je n’arrive à lancer le code fourni, j’ai de erreurs dans le POM.xml j’utilise Eclipse et Tomcat. Je vous remercie

]]>
Par : hugo https://java-freelance.fr/java/persistance-objet-avec-redis-et-jackson/comment-page-1#comment-23333 hugo Tue, 10 Jul 2012 16:06:11 +0000 https://java-freelance.fr/?p=1425#comment-23333 C’est amusant j’ai testé moi aussi et j’obtiens des résultats assez différents.
Par contre pour le coup j’ai sans doute des conditions différentes :

- j’utilise jongo pour dialoguer avec mongo
- j’utilise le build redis pour windows qui n’est officiellement pas supporté
- pour jongo comme pour morphia, j’utilise un WriteConcern FSYNC_SAFE donc c’est plus lent (mais bon, je préfère garder mes données)

Sur mon test j’ai inséré 900 000 objets et fait le test avec morphia, jongo, redis et une base mysql.

Pour la base il faut que je recommence, j’ai pas eu la patience d’attendre l’insertion des 900 000 lignes après plus de 40minutes… (pour 300 000 lignes)

avec morphia :
Count in 1ms
Find by login in 482ms
Save in 28ms
Find by address 435ms

avec jongo :
Count in 0ms
Find by login in 13ms
Save in 26ms
Find by address 497ms (non indexé)
Find by location 8ms (index géospatial)

avec redis :
Count in 0ms
Find by login in 263ms
Save in 21ms

avec redis il faut bien voir que l’opération de save correspond à plusieurs sets pour dénormaliser les différentes infos dont j’ai besoin ensuite pour faire des finds. Donc les 21ms sont très bien en considérant que je fais plusieurs set et un lpush

avec la base de données (mais avec 300 000 lignes) :
Count in 369ms
Find in 686ms
Save in 6ms

Bref, dans mon cas redis est meilleur en écriture mais moins bon en lecture finalement.

]]>
Par : Sebastien Lorber https://java-freelance.fr/java/persistance-objet-avec-redis-et-jackson/comment-page-1#comment-22917 Sebastien Lorber Fri, 29 Jun 2012 09:33:33 +0000 https://java-freelance.fr/?p=1425#comment-22917 Salut,

Je me plante peut-être mais il me semble que les temps de réponse peuvent aussi être liés à la volumétrie et la concurrence.
Je ne vois pas du tout de concurrence dans ton benchmark donc a mon avis on ne peut pas en tirer beaucoup de conclusions.

D’après ce que je vois, MongoDB viennent de virer le « global lock » lors des écritures, ce qui veut je crois dire que le write concurrent était avant un problème qui est maintenant amélioré.
http://blog.serverdensity.com/2012/05/23/goodbye-global-lock-mongodb-2-0-vs-2-2/

Donc pourquoi pas faire un test en 2.0 puis 2.2, avec des accès concurrents, pour voir la différence? :)

Redis c’est pas une DB in memory? Du coup comment ça se fait que ça soit plus lent en écriture que MongoDB?

]]>
Par : Jean-Baptiste https://java-freelance.fr/java/persistance-objet-avec-redis-et-jackson/comment-page-1#comment-22205 Jean-Baptiste Fri, 15 Jun 2012 13:40:01 +0000 https://java-freelance.fr/?p=1425#comment-22205 Salut et merci, tu as dû regarder le code car effectivement le WriteConcern n’est pas en SAFE. Cependant, Pour le benchmark, j’étais passé en SAFE car en mode normal, l’écriture est quasiment instantanée :) le bench était à 13ms en NORMAL alors qu’il est à 200+ms en mode SAFE.
N’empêche que même en SAFE, Mongo est meilleur que Redis en écriture, je pense qu’il doit y avoir une optimisation à faire coté Redis pour écrire plus vite, je chercherai quand j’en aurai besoin ^^

]]>
Par : Thomas Queste https://java-freelance.fr/java/persistance-objet-avec-redis-et-jackson/comment-page-1#comment-22185 Thomas Queste Fri, 15 Jun 2012 05:30:57 +0000 https://java-freelance.fr/?p=1425#comment-22185 Côté Mongo, tu dois t’assurer que tu utilises le mode WriteConcern.SAFE afin de garantir que l’écriture a bien été envoyé au serveur. Par défaut, c’est le mode « Normal » qui n’attends pas de réponse serveur.
Entre les lignes, ça veut dire que Mongo n’est pas sûr « par défaut », mais qu’il est bien plus rapide.

Détail des modes Normal et Safe :
- Normal : Exceptions are raised for network issues, but not server errors
- Safe : Exceptions are raised for network issues, and server errors; waits on a server for the write operation

Pas mal de gens se font avoir dans leur bench, dont moi :-)
Le mode Safe étant bien plus lent que Normal (2 voir 3 fois plus lent).

Pour info, Mongo gère la durabilité en mode cluster, pas mono-machine (d’où le mode « normal » par défaut).
Voir: http://www.thebuzzmedia.com/mongodb-single-server-data-durability-guide/

Tom

]]>
Par : Pitton Olivier https://java-freelance.fr/java/persistance-objet-avec-redis-et-jackson/comment-page-1#comment-22146 Pitton Olivier Thu, 14 Jun 2012 12:11:24 +0000 https://java-freelance.fr/?p=1425#comment-22146 Un post sur l’amélioration des locks dans MongoDB, que j’ai décrit précédemment : http://blog.serverdensity.com/2012/05/23/goodbye-global-lock-mongodb-2-0-vs-2-2/

]]>
Par : Pitton Olivier https://java-freelance.fr/java/persistance-objet-avec-redis-et-jackson/comment-page-1#comment-22145 Pitton Olivier Thu, 14 Jun 2012 12:10:10 +0000 https://java-freelance.fr/?p=1425#comment-22145 Bonsoir,

Dans le cas du benchmark sur stackoverflow, la version de MongoDB est « ancienne ». Les performances ont été améliorées, notamment en supprimant le global lock du serveur (chose qui m’a fait peur quand je l’ai appris). En soit je ne suis pas un « MongoDB fanboy », il faudra que j’aille regarder Redis.

Sinon, je n’aime pas du utiliser le driver MongoDB (que j’ai vu dans ton code), j’utilise généralement un wrapper qui allège pas mal le code -> http://jongo.org/

En tout cas, merci pour ce retour sur Redis.

Cordialement,

]]>
Par : Jean-Baptiste https://java-freelance.fr/java/persistance-objet-avec-redis-et-jackson/comment-page-1#comment-22132 Jean-Baptiste Thu, 14 Jun 2012 08:36:07 +0000 https://java-freelance.fr/?p=1425#comment-22132 Oui, sans index on a le temps de s’endormir avant que le test se termine :)

Attention tout de même l’objet de l’article n’est pas de tester Redis vs Mongo. Le (mauvais) score de Mongo peut venir de son driver ou de ma façon de l’utiliser. N’hésite pas à checker le code, je ne suis pas expert :)

btw, lui aussi arrive à de grosses différences entre les deux : http://stackoverflow.com/questions/5252577/how-much-faster-is-redis-than-mongodb

]]>
Par : Pitton Olivier https://java-freelance.fr/java/persistance-objet-avec-redis-et-jackson/comment-page-1#comment-22130 Pitton Olivier Thu, 14 Jun 2012 08:12:48 +0000 https://java-freelance.fr/?p=1425#comment-22130 Bonsoir,

J’utilise MongoDB et je n’ai jamais testé Redis, je ne connais que de nom. Je me demandais si pour le benchmark présenté, des index avaient été mis dans MongoDB ? La différence me paraît énorme.

Cordialement,

]]>