Twitter
RSS
Précédent   Forum du club des développeurs et IT Pro > Bases de données > NoSQL
NoSQL Forum d'entraide sur les SGBD NoSQL : MongoDB, Cassandra, CouchDB, HBase, etc. Voir aussi -> Rubrique NoSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Actualité déjà publiée
 
Outils de la discussion
Publicité
'
Vieux 27/06/2012, 14h49   #1
Hinault Romaric
Responsable Actualités

 
Avatar de Hinault Romaric
 
Homme Hinault Romaric
Consultant
Inscription : janvier 2007
Messages : 2 824
Détails du profil
Informations personnelles :
Nom : Homme Hinault Romaric
Localisation : Cameroun

Informations professionnelles :
Activité : Consultant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2007
Messages : 2 824
Points : 37 286
Points : 37 286
Par défaut MemSQL : un SGBD résidant en mémoire

MemSQL : un SGBD résidant en mémoire
30 fois plus rapide que les systèmes existants, développé par des anciens de Facebook

Deux anciens développeurs de Facebook ont créé un nouveau gestionnaire de bases de données qui serait, selon eux, le plus rapide du monde.

Baptisé MemSQL, le système s’appuie essentiellement sur le stockage des données en mémoire afin de réduire le temps de latence en évitant les lectures et écritures sur les disques durs. Cette caractéristique permet au SGBD, d’après ses créateurs, d’être 30 fois plus rapide que les SGBD standards.

Une vidéo de présentation a été publiée par ses auteurs, fournissant une démonstration des performances de MemSQL par rapport à MySQL. Alors que MySQL exécute 3 500 requêtes par seconde pour une séquence de requêtes, MemSQL en exécute environ 80 000 par seconde.

MemSQL s’affranchit de la lenteur d’un interpréteur SQL en transformant les requêtes SQL en code C++, qui est ensuite compilé dans un « squelette » ou tous les littéraux sont remplacés par des espaces réservés. Si la même requête est exécutée une seconde fois avec des paramètres différents, le serveur accède au modèle existant et remplace les espaces réservés par leurs valeurs réelles.

MemSQL est entièrement compatible avec MySQL, et peut être interrogé à partir des interfaces disponibles pour celui-ci. L’outil mysqldump peut également être utilisé pour exporter les données, et les importations se font par la lecture d’un fichier d’exportation.

L’édition développeur est disponible gratuitement en téléchargement pour Linux 64 bit, et le SGBD est décrit comme idéal pour les machines disposant d’un processeur multi-cœur et au moins 8 Go de RAM. L’outil manque encore pour l’instant des fonctionnalités comme les vues, les procédures stockées et les triggers.


Télécharger MemSQL


Source : MemSQL.com


Et vous ?

Que pensez-vous de MemSQL ? Et du concept de stockage en mémoire utilisé par le SGBD ?
__________________
Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
Mon blog Mes articles
En posant correctement votre problème, on trouve la moitié de la solution
Hinault Romaric est déconnecté   Envoyer un message privé Réponse avec citation 40
Vieux 27/06/2012, 15h15   #2
blbird
Membre confirmé
 
Inscription : février 2004
Messages : 255
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : février 2004
Messages : 255
Points : 297
Points : 297
Envoyer un message via MSN à blbird
J'avoue ne pas avoir très bien compris le concept. On est pas simplement dans un système de cache mémoire?
__________________
MCP ASP.Net 2
blbird est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 27/06/2012, 15h36   #3
grunk
Modérateur
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 2 497
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 28
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 2 497
Points : 5 208
Points : 5 208
Citation:
MemSQL s’affranchit de la lenteur d’un interpréteur SQL en transformant les requêtes SQL en code C++, qui est ensuite compilé dans un « squelette » ou tous les littéraux sont remplacés par des espaces réservés. Si la même requête est exécutée une seconde fois avec des paramètres différents, le serveur accède au modèle existant et remplace les espaces réservés par leurs valeurs réelles.
Ça ressemble quand même beaucoup aux requêtes préparées que l'on trouve sur à peut près tous les autres SGBD non ?

Citation:
Une vidéo de présentation a été publiée par ses auteurs, fournissant une démonstration des performances de MemSQL par rapport à MySQL. Alors que MySQL exécute 3 500 requêtes par seconde pour une séquence de requêtes, MemSQL en exécute environ 80 000 par seconde.
Le test à donc été évidemment été effectué avec requête préparées et base MEMORY pour mysql ?
grunk est déconnecté   Envoyer un message privé Réponse avec citation 40
Vieux 27/06/2012, 15h41   #4
tomlev
Rédacteur/Modérateur


 
Avatar de tomlev
 
Homme Thomas Levesque
Développeur .NET
Inscription : février 2004
Messages : 17 770
Détails du profil
Informations personnelles :
Nom : Homme Thomas Levesque
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2004
Messages : 17 770
Points : 33 998
Points : 33 998
Seul "petit" problème : quand on coupe le courant, on perd les données
Enfin, j'ose espérer qu'ils ont quand même prévu un système de persistance...
__________________

Pas de questions techniques par MP ! Le forum est là pour ça...

Tutoriels : Les markup extensions en WPF - La sérialisation XML avec .NET (Aller plus loin) - Une visite guidée de WPF (traduction)
Projet : Dvp.NET, la librairie .NET open-source des membres de Developpez !
tomlev est déconnecté   Envoyer un message privé Réponse avec citation 50
Vieux 27/06/2012, 15h41   #5
amezghal
Membre habitué
 
Homme Abdelilah amezghal
Développeur informatique
Inscription : février 2006
Messages : 74
Détails du profil
Informations personnelles :
Nom : Homme Abdelilah amezghal

Informations professionnelles :
Activité : Développeur informatique
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : février 2006
Messages : 74
Points : 143
Points : 143
mysql dispose d'un moteur de stockage MEMORY, ca serait bien de comparer les perfs avec. (surtout que memsql ne supporte pas les triggers ni procedures stockées).
l'avantage c'est que il compile les requêtes en code c++, et évite les phases lexing/parsing.

A tester en tout cas.
amezghal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2012, 15h56   #6
spyserver
Membre habitué
 
Homme
Inscription : décembre 2011
Messages : 45
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 45
Points : 122
Points : 122
Et voila l'article qui démonte cette techno qui se rélève au final pas encore mature, incapable d'être ACID et performante à la fois et surtout benchmarkée un peu n'importe comment, tout est dit ici : http://dom.as/2012/06/26/memsql-rage/
spyserver est déconnecté   Envoyer un message privé Réponse avec citation 50
Vieux 27/06/2012, 15h58   #7
Zweet
Membre éclairé
 
Développeur informatique
Inscription : janvier 2011
Messages : 256
Détails du profil
Informations personnelles :
Âge : 23

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : janvier 2011
Messages : 256
Points : 381
Points : 381
Citation:
Envoyé par tomlev Voir le message
Seul "petit" problème : quand on coupe le courant, on perd les données
Enfin, j'ose espérer qu'ils ont quand même prévu un système de persistance...
Exactement ce que j'étais en train de me dire. Enfin, sauf s'ils ont prévu une sauvegarde automatique toutes les x minutes.
Zweet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2012, 16h00   #8
Farnsworse
Invité de passage
 
Inscription : janvier 2012
Messages : 5
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 5
Points : 0
Points : 0
Citation:
Envoyé par grunk Voir le message
Le test à donc été évidemment été effectué avec requête préparées et base MEMORY pour mysql ?
Pour l'enfoncer, j'imagine qu'ils utilisent InnoDB avec un "my-small.cnf"

Mais un "SGBD résidant en mémoire", c'est un peu un pléonasme vu qu'un programme tourne toujours en mémoire. C'est juste la BDD en tant que tel qu'on veux en mémoire afin de réduire la latence d'accès.
Et pour le stockage des "squelettes", ça semble être exactement la même chose que les requêtes préparées...
Farnsworse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2012, 16h05   #9
Klaim
Expert Confirmé
 
Avatar de Klaim
 
Homme Joel Lamotte
Développeur de jeux vidéo
Inscription : août 2004
Messages : 1 552
Détails du profil
Informations personnelles :
Nom : Homme Joel Lamotte
Localisation : France

Informations professionnelles :
Activité : Développeur de jeux vidéo
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2004
Messages : 1 552
Points : 2 970
Points : 2 970
Citation:
l'avantage c'est que il compile les requêtes en code c++, et évite les phases lexing/parsing.
Oui c'est ce qu'ils disent dans la vidéo: c'est la génération de code C++ a partir de la requete SQL qui fait la vrai différence, même si evidemment garantir d'avoir "toute" (j'imagine que non) la BDD en mémoire vive joue aussi un role, avoir la requette executable en natifé optimisé au runtime c'est certainement sacrément efficace.

En revanche avec des BDD immenses ça doit pas mal saturé quand les manips de cache commencent a se faire...

Citation:
Seul "petit" problème : quand on coupe le courant, on perd les données
Sur le site ils disent que les résultats des transactions sont bien enregistrées sur le disque une fois la transaction validée, donc non.

De ce que je comprends, il faut plutot voir la BDD en mémoire comme le reflet optimisé des données, pas comme une BDD seulement en mémoire.

Autrement dis, c'est un très gros cache optimisé par requete.


Pour la compilation de la requete, dans la vidéo on voit le résultat et effectivement c'est suffisament simple pour que ça compile très vite, surtout si leur systeme se base sur, par exemple, llvm/clang. Du coup je trouve que c'est pas mal interessant.

J'en ai pas besoin actuellement mais je note dans les alternatives a mysql...
Klaim est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/06/2012, 16h44   #10
joho
Membre habitué
 
Jonathan Honoré
Développeur .NET
Inscription : octobre 2005
Messages : 82
Détails du profil
Informations personnelles :
Nom : Jonathan Honoré
Âge : 28
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Conseil

Informations forums :
Inscription : octobre 2005
Messages : 82
Points : 141
Points : 141
Envoyer un message via MSN à joho Envoyer un message via Yahoo à joho
J'ai quelques interrogations tout de même.
(Attention, SGBD n'est pas ma matière favorite)


Comment garantir des transactions sans aucun Lock ?
Le buffer (ce qui est en RAM) fait 128 Mo. Si pendant que tu écris dans le buffer la machine crashe, tu as perdu au max 128 Mo !

Si tu utilises un autre "mode" de leur buffer qui écrit sur le disque toutes les 50ms. Tu perds l'avantage de l'écriture en RAM puisqu'en fait tu écris sur le disque tout le temps.

Pour les compilations des mêmes requêtes. Je ne suis pas sur de moi mais MS SQL fait ça déja (2 fois la même requêtes, la seconde va plus vite parce que MS SQL l'a gardé quelque part)


Enfin bref, à voir. Mais les annonces sont peut-être un peu trop "youpi c'est la fête ! "
ça marche sûrement dans le contexte Facebook, mais faut bien étudier les autres alternatives à mon avis.


Edit : tombé sur le même lien que skyserver : http://dom.as/2012/06/26/memsql-rage/ à lire.
joho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2012, 16h55   #11
rt15
Membre éprouvé
 
Avatar de rt15
 
Homme
Développeur informatique
Inscription : octobre 2005
Messages : 203
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2005
Messages : 203
Points : 435
Points : 435
D'après le lien de spyserver, il y a différent modes pour les transactions.
Dans un premier mode (par défaut), la transaction retourne "ok" avant l'écriture sur disque.
Dans un deuxième mode, la transaction retourne "ok" après l'écriture sur disque.

Dans tout les cas, l'écriture sur disque en elle même est réalisée... Par un thread en background toute les 50ms.

Dans le premier mode, on a pas vraiment des transactions : Si la bdd ou machine plante, on a pas les données sur le disque. Cela dit ça doit être rapide c'est sûr lol (Pas d'accès disque).
Dans le deuxième mode, la transaction est longue, très certainement largement plus longue qu'avec une bdd classique.

Bref, utilisée avec le premier mode, cette base n'est pas fiable, ou du moins pas du tout rigoureuse. Le deuxième mode est sans intérêt niveau perfs.

Dans le secteur banquaire, cette base ne vaudrait rien. Mais c'est sûr que comme précisé dans le blogs, pour stocker des commentaires publiés sur facebook, c'est tout à fait suffisant, lol. Si on en perd deux trois en cas de crash, c'est pas la mort.

Par contre, si elle est si rapide qu'elle le prétend elle aurait pu s'avérer intéressante pour faire passer des tests à un programme sur un poste de développeur par exemple (Hop, les junits dopés). Mais pour ça faudrait qu'elle supporte une bonne partie des fonctionnalités classique comme les vues et les procédures stockées... Ce qui n'est pas le cas.

Bref, à surveiller, mais pour le moment, poubelle.
rt15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2012, 16h58   #12
Waldar
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 6 278
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 35
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2008
Messages : 6 278
Points : 13 568
Points : 13 568
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Une pâle copie d'une technologie qui a déjà plus de dix ans ?
http://www.oracle.com/technetwork/pr...iew/index.html
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 27/06/2012, 17h28   #13
y-ssir
Invité régulier
 
Inscription : mars 2009
Messages : 15
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 15
Points : 9
Points : 9
Envoyer un message via MSN à y-ssir
Par défaut Que se passe t'il lors de la coupure du courant?

Si les données sont stockés en mémoire pour longtemps, on risque de perdre un grande volumétrie de données en cas de coupure de courant par exemple.
Il y a déjà des SGBD in Memory tel que HSQLDB.
y-ssir est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/06/2012, 01h26   #14
cuicui78
Membre actif
 
Inscription : mars 2006
Messages : 117
Détails du profil
Informations personnelles :
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : mars 2006
Messages : 117
Points : 168
Points : 168
Des BD Memory yen a beaucoup et forcément c'est très rapide genre : http://www.garret.ru/fastdb.html.

De la à dire que leur version est la plus rapide du monde...
Encore un coup de pub sans comparatif exhaustif avec un titre accrocheur
cuicui78 est déconnecté   Envoyer un message privé Réponse avec citation 30
Vieux 28/06/2012, 06h07   #15
Klaim
Expert Confirmé
 
Avatar de Klaim
 
Homme Joel Lamotte
Développeur de jeux vidéo
Inscription : août 2004
Messages : 1 552
Détails du profil
Informations personnelles :
Nom : Homme Joel Lamotte
Localisation : France

Informations professionnelles :
Activité : Développeur de jeux vidéo
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2004
Messages : 1 552
Points : 2 970
Points : 2 970
Le problème c'est que l'argument de rapidité n'est pas lié, sur leur site, à la mémoire, mais à la génération de la requete en C++. L'article ici est trompeur parcequ'il met la mise en mémoire en avant alors que c'est bien cette requete générée qui est censé faire la différence. Il suffit d'aller sur le site, c'est le seul argument qu'ils donnent pour expliquer la différence entre leur BDD et d'autres.

Ca serait cool de voir des benchmarks oui.
Klaim est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 28/06/2012, 06h40   #16
transgohan
Expert Confirmé
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Développeur Temps réel Embarqué
Inscription : janvier 2011
Messages : 1 292
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Développeur Temps réel Embarqué

Informations forums :
Inscription : janvier 2011
Messages : 1 292
Points : 2 847
Points : 2 847
Pour ceux qui ne comprennent pas l'utilité d'un tel SGBD vous pourrez trouver des projets embarqués qui nécessitent du lourd traitement de données auquel le SQL se prête bien (exemple d'actualité : le data-mining des trains de la RATP).
De ce fait pour la rapidité et la taille il est souvent très intéressant d'utiliser ce genre de SGBD.
Ce n'est donc pas utilisé pour du stockage à long terme mais pour du calcul sur des jeux de données.
__________________
Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2012, 09h24   #17
_skip
Expert Confirmé Sénior
 
Avatar de _skip
 
Homme
Développeur d'applications
Inscription : novembre 2005
Messages : 2 562
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : Suisse

Informations professionnelles :
Activité : Développeur d'applications
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : novembre 2005
Messages : 2 562
Points : 6 398
Points : 6 398
La comparaison faite avec mySQL ne pourrait vraiment être valide que si les settings étaient comparables ou tout au moins les chances de retrouver un état consistant en cas de panne soient égales (en gros que chaque transaction commitée soit 100% récupérable).

Et il semble, si on se fie à ce qui est avancé dans l'article qu'un autre membre a cité, qu'en fait, dès qu'on veut utiliser memSQL avec des settings qui assure la même sécurité de données en cas de crash que mySQL, on perd tout le gain.

Donc en fait, ce memSQL pourrait être intéressant si on veut privilégier la vitesse au détriment de la sécurité, c'est parfois acceptable sur certains jeux de données qui tournent très vite où l'on peut s'autoriser des pertes mineures en cas de problèmes.

Ainsi donc, il s'agirait plutôt d'un tradeoff mémoire-vitesse-ACIDité différent plutôt que d'une techno révolutionnaire. Enfin sauf peut être pour cette question de requête C++ mais cela m'étonnerait que les performances soient réellement limitées par ça dans la majorité des cas..
_skip est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 28/06/2012, 09h59   #18
hotcryx
Membre éprouvé
 
Développeur
Inscription : mars 2012
Messages : 373
Détails du profil
Informations professionnelles :
Activité : Développeur
Secteur : Communication - Médias

Informations forums :
Inscription : mars 2012
Messages : 373
Points : 438
Points : 438
Toutes les données ne sont pas stockées en ram mais probablement certaines données pertinentes (ref data) et les requêtes compilées, index...

Ca me fait penser à la compilation LINQ.
hotcryx est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/06/2012, 13h33   #19
transgohan
Expert Confirmé
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Développeur Temps réel Embarqué
Inscription : janvier 2011
Messages : 1 292
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Développeur Temps réel Embarqué

Informations forums :
Inscription : janvier 2011
Messages : 1 292
Points : 2 847
Points : 2 847
Citation:
Envoyé par hotcryx Voir le message
Toutes les données ne sont pas stockées en ram mais probablement certaines données pertinentes (ref data) et les requêtes compilées, index...

Ca me fait penser à la compilation LINQ.
Non non c'est bien en mémoire vive, sinon l'auteur aurait du mal à justifier les 8gio de mémoire vive nécessaire au fonctionnement.
__________________
Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2012, 09h40   #20
hotcryx
Membre éprouvé
 
Développeur
Inscription : mars 2012
Messages : 373
Détails du profil
Informations professionnelles :
Activité : Développeur
Secteur : Communication - Médias

Informations forums :
Inscription : mars 2012
Messages : 373
Points : 438
Points : 438
donc les besoins en RAM augmente avec la taille de la db
hotcryx est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Actualité déjà publiée
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 08h40.


 
 
 
 
Partenaires

Hébergement Web