Aller au menu - Aller au contenu

Twitter adopte la base de données Cassandra

Revenir à la liste des news
Participer à la discussion

Image

Informations

Contributeur(s) : Tchouk!
Publié : le 28/02/2010 à 02:00:20
Catégorie : Web
Visualisations : 24 014

Licence : Creative Commons BY SA

Twitter adopte la base de données Cassandra

Le réseau de micro-blogging Twitter, qui a annoncé récemment avoir atteint les 50 millions de « tweets » (les messages du réseau) par jour, cherche à modifier son infrastructure, en changeant de base de données. La célèbre MySQL, utilisée depuis les premiers jours, cède donc sa place à la base de données non-SQL Cassandra.

Une croissance toujours problématique



Lancé dans le courant de l'année 2006, Twitter a connu une croissance de plus en plus forte, tant en nombre d'utilisateurs qu'en activité. Une récente étude du cabinet RJMetrics parle ainsi de 75 millions d'utilisateurs fin 2009, qui, même s'ils ne sont pas tous actifs, constituent une charge de plus en plus difficile à supporter. Les administrateurs du site sont donc amenés à chercher de nouvelles solutions pour supporter cette charge.

De même que de très gros sites comme Facebook, Google ou Yahoo, les ingénieurs de Twitter doivent donc réfléchir à la façon dont le site est conçu, et éventuellement remettre en question leurs choix initiaux. Ainsi, si le site était initialement développé avec la technologie Ruby on Rails, le site a petit à petit migré vers une technologie jugée plus fiable, à savoir le langage Scala, développé au sein de l'EPFL. Celui-ci est utilisé conjointement avec la technologie Java, et assure selon Twitter de meilleures performances.

Mais l'adoption de Scala ne fait pas tout : les performances d'un site tel que Twitter sont intimement liées à celles de sa base de données. Jusqu'à présent, MySQL était utilisée, conjointement au système de cache memcached. Le rôle d'un tel système est de soutenir la base de données en gardant en mémoire vive un maximum de données, que l'on peut de plus distribuer sur plusieurs serveurs. Les performances sont ainsi accrues, car la base de données est sollicitée moins souvent qu'auparavant.

De MySQL à Cassandra



Économiser les serveurs



Cette approche a fait ses preuves : memcached est utilisé par des sites aussi divers que Facebook, Youtube ou Wikipedia, conjointement avec MySQL. Mais pour Twitter, elle équivaut à déployer de plus en plus de serveurs. Selon Ryan King, un des ingénieurs responsables de la migration, un tel choix coûte de plus en plus cher en termes de main d'œuvre. Pour l'équipe, la solution était de changer de base de données, c'est à dire d'abandonner MySQL.

Plusieurs solutions ont été comparées, selon une liste de critères précis : serait-il nécessaire, et, si oui, suffisamment facile d'ajouter de nouvelles machines ? Est-ce que le système risquait de dépendre de composants dont les pannes seraient fatales à tout le site ? Est-ce que le nouveau système supporterait correctement une importante charge en écriture (par exemple liée à la réception de beaucoup de tweets en même temps) ? MySQL ne correspondait plus à ces critères, mais un certain nombre de bases de données d'un genre encore peu connu ont en revanche été consciencieusement examinées : les bases de données dites non-SQL.

Cassandra, une base de données non-SQL



Les bases de données non-SQL sont assez récentes, le mouvement NoSQL ayant à peine un an. Cette appellation regroupe en fait un ensemble de bases de données plus ou moins similaires, qui visent à rompre avec les caractéristiques habituelles des bases de données relationnelles (dont les bases de données SQL font partie), dans le but d'assurer de meilleures performances ou une meilleure capacité de déploiement. Si ces bases de données sont encore jeunes, elles sont pourtant soutenues (voire développées) et utilisées par de gros acteurs du web tels Google, Facebook ou Amazon.

Cassandra, la base de données ayant été retenue, a ainsi été initialement développée par Facebook dans le langage Java, puis publiée sous licence libre en juillet 2008. Elle est aujourd'hui maintenue par la Fondation Apache, par laquelle elle est d'ailleurs considérée depuis le 17 février 2010 comme étant un projet prioritaire. Son but est d'être décentralisée, de supporter facilement la montée en charge en écriture ainsi que l'addition de nouveaux serveurs sans interruption de service.

Une migration déjà effective



C'est donc exactement ce que recherchait l'équipe de Twitter, ainsi que le confirme Ryan King. Pour l'instant cependant, la migration de MySQL vers Cassandra n'est pas achevée : l'équipe expérimente la mise en production de la nouvelle base de données, en testant cette dernière en parallèle de MySQL. La première table bénéficiant de la migration, la plus importante, est la table des statuts, c'est à dire celle des tweets. Mais les ingénieurs semblent déjà enthousiasmés par les premiers résultats, puisqu'ils parlent déjà de faire migrer les autres tables vers cette base de données, ce qui les conduirait ainsi à ne plus utiliser MySQL.

Twitter n'est pas le premier site à faire un tel choix. En effet, le site Digg.com avait déjà choisi de passer de MySQL à Cassandra, et avait publié un avis plutôt positif sur cette migration. Avec Facebook, cela représente donc une sérieuse base d'utilisateurs pour Cassandra, qui se voit ainsi promettre un bel avenir.

Liens complémentaires


76 Participations

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page 1  2  3  Suivante
Pseudo Discussion
1 visiteur sur cette news (0 membre et 1 Anonyme)
Page 1  2  3  Suivante
Hors ligne Hoodie en laine # Posté le 28/02/2010 à 02:10:56
Avatar

Études : EFREI

Quoi ? On peut faire du web sans php ?
Hors ligne Tchouk! # Posté le 28/02/2010 à 02:14:02
Avatar
Groupe : Bannis
Flux RSS

J'ai préféré rester général et austère pour cette news, sans trop rentrer dans les détails (essentiellement pour ne pas raconter de bêtises) ni balancer des graphiques flashys qui auraient montré… je ne sais quoi.

Le fonctionnement des bases de données NoSQL diffère vraiment de celui des bases de données relationnelles. Prenez cet état de fait en compte avant de juger l'information : la plupart des Zéros n'ont pas les mêmes besoins que Twitter ou Facebook, donc de même que vous n'aviez pas besoin du compilateur Hip Hop, vous n'avez pas forcément besoin de vous inquiéter de la migration de votre blog vers Cassandra :D .

Si vous souhaitez plus de renseignements, vous les trouverez sur le site de Cassandra, en particulier dans la FAQ.

Hoodie en laine> Et du rap sans capuche.

NeXTSTEP, l'ancêtre de Mac OS X — en 1993.
Image utilisateur
Si vous avez des couilles et que vous aimez
la programmation sans chichis, venez sur PM !
 
Hors ligne gumgl # Posté le 28/02/2010 à 02:15:24
Voici mon avatar :
Avatar

Ville : Pointe-claire
Pays : Canada

50 millions de tweets par jour o_O

Image utilisateur
 
Hors ligne Hod # Posté le 28/02/2010 à 02:18:41
Friedman & Kotzen addict
Avatar

Études : INSA Rouen

Excellente news.
Je ne fais pas trop d'informatique dans mes études, en tout cas pas orienté BDD et je ne connaissais même pas les bases noSQL.

Merci pour la découverte. :D

« Ne pas réinventer la roue est une chose, mais ne pas savoir réinventer la roue en est une plus grave. »
 
Hors ligne Immunitos # Posté le 28/02/2010 à 02:18:50
Avatar

Ville : Montréal
Pays : Canada

Je connaissais pas ça, Cassandra...
Hors ligne Haveo # Posté le 28/02/2010 à 02:19:26
Avatar
Flux RSS

http://wiki.apache.org/cassandra/CassandraHardware

Effectivement, ça a pas l'air destiné au grand public qui fait tourner son blog perso sur son petit serveur ...
 
Hors ligne kedare # Posté le 28/02/2010 à 02:36:53
Avatar
Flux RSS

Ville : Levallois
Pays : France métropolitaine
Études : IRIS

Citation : Haveo
http://wiki.apache.org/cassandra/CassandraHardware

Effectivement, ça a pas l'air destiné au grand public qui fait tourner son blog perso sur son petit serveur ...

Pourquoi pas ? Ils donnent des exemple pour des gros déploiement sur ton lien, rien n'empêche de mettre ca sur un ptit serveur ;)

Image utilisateur Image utilisateur Image utilisateur
 
Hors ligne Nova-Quantum # Posté le 28/02/2010 à 02:49:10
Avatar

Citation : News
que l'on peut de plus distribuer sur un plusieurs serveurs


Y a pas une petite faute la?

Image utilisateur
 
Hors ligne anonyme # Posté le 28/02/2010 à 03:11:59

Citation : Nova-Quantum
Citation : News
que l'on peut de plus distribuer sur un plusieurs serveurs


Y a pas une petite faute la?

Merci.
Hors ligne bluelink # Posté le 28/02/2010 à 03:14:35
T**** me I'm a Zér0 !
Avatar
Flux RSS

Ville : Arès
Pays : France métropolitaine
Études : Université de Bordeaux

Très intéressant, notamment l'article sur le mouvement NoSQL dont le lien est donné en fin de news, il est facile à comprendre et assez instructif :)

Image utilisateur
 
Hors ligne nizar622 # Posté le 28/02/2010 à 03:26:11

Citation : Hoodie en laine
Quoi ? On peut faire du web sans php ?

Qui a dit ça ?? :euh:
Il a changé de base de données pas de langage !!

Image utilisateur
 
Hors ligne LoupSolitaire # Posté le 28/02/2010 à 03:30:43
Connard patenté
Avatar

Citation : nizar622
Qui a dit ça ?? :euh:
Il a changé de base de données pas de langage !!

Toi, t'as pas tout lu.
Hors ligne A3G.Ares # Posté le 28/02/2010 à 03:46:34
Intolérablement Méchant.
Avatar

Ville : Sollies-pont
Pays : France métropolitaine

Reste que MySQL quand on fait un site qui a la possibilité de devenir gros (style communautaire) reste un mauvais choix (Attention : ceci n'est pas une critique vis a vis de MySQL), PostGreSQL (ou Oracle) est beaucoup plus adapté pour gérer ce genre de site et je ne comprend donc absolument pas les décisions initiales pour FaceBook / Twitter.
 
Hors ligne rapinas # Posté le 28/02/2010 à 03:53:58
Aujourd'hui est un autre jour

Ville : Nice
Pays : France métropolitaine

Citation : Troll Méchant
Reste que MySQL quand on fait un site qui a la possibilité de devenir gros (style communautaire) reste un mauvais choix (Attention : ceci n'est pas une critique vis a vis de MySQL), PostGreSQL (ou Oracle) est beaucoup plus adapté pour gérer ce genre de site et je ne comprend donc absolument pas les décisions initiales pour FaceBook / Twitter.


Ben, au départ, je pense qu'il ne pensaient pas que leurs sites allaient atteindre autant de succés...

Nobody's perfect, except me. ^^
 
Hors ligne A3G.Ares # Posté le 28/02/2010 à 03:56:55
Intolérablement Méchant.
Avatar

Ville : Sollies-pont
Pays : France métropolitaine

Je suis actuellement sur un projet,
Je n'ai pas la prétention de dire qu'il va faire un tabac, j'en sais fichtrement rien, mais je sais que si oui, j'aurais pas de soucis de migration parsque je l'est prévue.

C'est la base de création de tout site, réfléchir a comment il fonctionne et au trafique, même peu probable, qu'il y'aura dessus,
Je ne pense pas être plus doué que les ingénieur de Twitter ou facebook, mais j'avoue que ça me laisse totalement perplexe.
 
Hors ligne sidarape # Posté le 28/02/2010 à 04:00:10
Voici votre E.P.P.Z monsieur!
Avatar

Ville : Québec, qc
Pays : Canada
Études : Cégep Sainte-Foy

En effet, c'est pas parce que tu penses que ton programme ne deviendra jamais gros qu'il faut coder comme un pied.

Image utilisateur

Vive le Québec Libre!!!
 
Hors ligne LoupSolitaire # Posté le 28/02/2010 à 04:07:10
Connard patenté
Avatar

Citation : Troll Méchant
Reste que MySQL quand on fait un site qui a la possibilité de devenir gros (style communautaire) reste un mauvais choix (Attention : ceci n'est pas une critique vis a vis de MySQL), PostGreSQL (ou Oracle) est beaucoup plus adapté pour gérer ce genre de site et je ne comprend donc absolument pas les décisions initiales pour FaceBook / Twitter.

Malgré tout l'amour que je porte à PostgreSQL, je suis pas certain qu'il soit beaucoup plus apte que MySQL à supporter une charge d'un site comme Twitter ou Facebook.

Quant à Oracle, j'ose même pas imaginer le coût des licences pour de tels sites...
Hors ligne A3G.Ares # Posté le 28/02/2010 à 04:13:09
Intolérablement Méchant.
Avatar

Ville : Sollies-pont
Pays : France métropolitaine

Moi j'en suis certain, PostGREsql n'est pas forçement "mieux" que MySQL,
Mais si il y'a un point qui est indéniable, c'est qu'il est beaucoup plus rapide, beaucoup plus puissant, beaucoup plus performant lorsqu'il y'a de gros échanges de données.
en contre partie, il est plus difficile a utiliser, avec une moins grosse communauté, et n'est absolument pas apte a recevoir un site wordpad qui a 7 visites par jours et un article par mois.

Ensuite, il est vrais que MySQL a beaucoup gagner niveau perf, et que je crois que le SdZ l'utilise toujours, et il fonctionne ces derniers temps très bien il me semble.


http://blog.postgresql.fr/index.php?post/drupal/216
http://pro.01net.com/editorial/370746/ [...] s-avec-mysql/
http://sql-info.de/mysql/vs/mysql-versus-postgresql.html

Etc etc... ce ne sont pas les sources qui manque, google t'en diras plus que moi.
 
Hors ligne kedare # Posté le 28/02/2010 à 04:16:50
Avatar
Flux RSS

Ville : Levallois
Pays : France métropolitaine
Études : IRIS

Citation : LoupSolitaire

Malgré tout l'amour que je porte à PostgreSQL, je suis pas certain qu'il soit beaucoup plus apte que MySQL à supporter une charge d'un site comme Twitter ou Facebook.

Quant à Oracle, j'ose même pas imaginer le coût des licences pour de tels sites...

+1 ;)
Postgresql est pas mal pour les sites moyens, mais pour les très gros sites comme ca, c'est mort, les capacités de scaling horizontale de PostgreSQL sont quasiment nul (c'est pas un troll, c'est la vérité, mais ca commence a s'améliorer avec la 9.0)

A la limite, en compatible SQL, je dirais que le meilleur niveau qualité/prix, ca serais SQL Server. (Il coute rien par rapport a Oracle, scale très bien verticalement et horizontalement)

Image utilisateur Image utilisateur Image utilisateur
 
Hors ligne A3G.Ares # Posté le 28/02/2010 à 04:21:38
Intolérablement Méchant.
Avatar

Ville : Sollies-pont
Pays : France métropolitaine

Mais la question originale, c'est pas vraiment "PostGreSQL tiendrais mieux face a MySQL actuellement avec leur base de donnée actuelle"

Mais plutôt, POURQUOI avoir choisie MySQL sachant qu'il y'avais des base de donnée plus adapter pour des sites communautaires de se type.
Choisir entre du Cassandra et du PostGreSQL/MySQL au départ, je comprend qu'on peu trés bien ne pas y penser vu que rare sont les site qui en on besoin, mais tout de même, le choix de PostGre aurais étais plus judicieux a la base.

Ensuite, c'est mon avis, je suis loin d'être un expert également :)
 
Hors ligne kedare # Posté le 28/02/2010 à 04:27:43
Avatar
Flux RSS

Ville : Levallois
Pays : France métropolitaine
Études : IRIS

A mon avis c'est qu'a la base ils s'attendaient pas a avoir autant de succès... ;)

Image utilisateur Image utilisateur Image utilisateur
 
Hors ligne LoupSolitaire # Posté le 28/02/2010 à 04:29:19
Connard patenté
Avatar

Citation : Troll Méchant
Moi j'en suis certain, PostGREsql n'est pas forçement "mieux" que MySQL,
Mais si il y'a un point qui est indéniable, c'est qu'il est beaucoup plus rapide, beaucoup plus puissant, beaucoup plus performant lorsqu'il y'a de gros échanges de données.
en contre partie, il est plus difficile a utiliser, avec une moins grosse communauté, et n'est absolument pas apte a recevoir un site wordpad qui a 7 visites par jours et un article par mois.

http://blog.postgresql.fr/index.php?post/drupal/216
http://pro.01net.com/editorial/370746/ [...] s-avec-mysql/
http://sql-info.de/mysql/vs/mysql-versus-postgresql.html

Etc etc... ce ne sont pas les sources qui manque, google t'en diras plus que moi.

Les liens que tu donnes confirment ce qu'il me semblait : niveau perfs ça se vaut, mais Postgres est plus strict et les développeurs accordent une grande importance au maintient de l'intégrité des données.

Et souvent, qui peut le plus peut le moins, PostgreSQL marche très bien pour des petits sites, car il reste assez léger pour tourner sur des petites configurations.


Citation : Troll Méchant
Ensuite, il est vrais que MySQL a beaucoup gagner niveau perf, et que je crois que le SdZ l'utilise toujours, et il fonctionne ces derniers temps très bien il me semble.

Ça fait un moment qu'ils sont passés à PostgreSQL.

Citation : Troll Méchant
Mais la question originale, c'est pas vraiment "PostGreSQL tiendrais mieux face a MySQL actuellement avec leur base de donnée actuelle"

Mais plutôt, POURQUOI avoir choisie MySQL sachant qu'il y'avais des base de donnée plus adapter pour des sites communautaires de se type.
Choisir entre du Cassandra et du PostGreSQL/MySQL au départ, je comprend qu'on peu trés bien ne pas y penser vu que rare sont les site qui en on besoin, mais tout de même, le choix de PostGre aurais étais plus judicieux a la base.

Plein de sites, même très visités tournent indifféremment avec PostgreSQL ou MySQL ;)

Là on est plus dans les gros sites, une croissance comme celle d'un Twitter ou Facebook, personne ne l'imagine à la conception. Il faut bien se rendre compte que ce sont des cas exceptionnels, ce qui implique des moyens logiciels et matériels exceptionnels.

Citation : Troll Méchant
Je suis actuellement sur un projet,
Je n'ai pas la prétention de dire qu'il va faire un tabac, j'en sais fichtrement rien, mais je sais que si oui, j'aurais pas de soucis de migration parsque je l'est prévue.

T'as prévu quoi précisément ? :)
Hors ligne TheGreatFalcon # Posté le 28/02/2010 à 05:29:31
Heu...
Avatar

Citation : Hoodie en laine
Quoi ? On peut faire du web sans php ?

J'ai vaguement entendu parler d'un certain VisualBasic ou quelque chose dans le genre... :euh:

Mais comme je m'en fou que twitter change de database! mon dieu! News bien expliquee par contre... commme d'hab...

Image utilisateurTGFImage utilisateur
My website
Dancing Banana Co.
Image utilisateur
Image utilisateur
 
Hors ligne A3G.Ares # Posté le 28/02/2010 à 06:10:20
Intolérablement Méchant.
Avatar

Ville : Sollies-pont
Pays : France métropolitaine

@Loup Solitaire : Je serais bref,
A) Ne pas lire le début du premier lien, mais les trois liens, et en entier. (ou alors, ne t'exprime pas sur le sujet)
B) Bien évidement que des sites "normaux", qui une communauté "normale", ne vois aucune différence entre les performances avec PostGreSQL et MySQL, et encore heureux, si l'un des deux systèmes commencer a tourner de l'œil dés qu'il y'a plus de 5000 membres sur le site, voila la galère... :-°
C) Pour la deuxième fois, lit mieux, j'ai clairement dit qu'a la base de la conception d'un site, tu prévois se qui peu se passer, hors, si tu réussie bien et que ton site a un succès similaire au SdZ, tu sera très content d'avoir pris PostGreSQL plutôt que MySQL, ça s'appelle de la prévision, même si les chances sont mince, elle sont la, donc, tu fait conséquence, c'est en principe comme ça qu'on travaille dans le milieu professionnelle.
D) "Ça fait un moment qu'ils sont passés à PostgreSQL" -> c'est pour ça que j'ai préciser "Je crois" car il me sembler qu'il avais abandonner a un moment.

Ques que j'ai prévue ?
Et bah, que si y'a du succès et un gros trafique : le bon choix, je serais pas emmerder avec ça.

Oh, et évite les warquote, surtout en commentaire de news, c'est plutôt lourd et ça fait très "moi jve te taunt !!&!".

@TheGreatFalcon :
Je pense que Twitter est plus un prétexte pour nous parler des base "non sql" et de Cassandra que le changement de BDD de twitter lui même :)
 
Hors ligne e=mc2 # Posté le 28/02/2010 à 07:32:20
Avatar

Ville : Le bonhomme
Pays : France métropolitaine

Citation : TheGreatFalcon
Citation : Hoodie en laine
Quoi ? On peut faire du web sans php ?

J'ai vaguement entendu parler d'un certain VisualBasic ou quelque chose dans le genre... :euh:


Mais tu peux faire du web en n'importe quel langage hein -_- , en C/C++/PHP/Python/Java/ruby/ocalm/etc... il te suffit soit d'avoir un serveur adapté à ton langage (apache pour php) et tu génère des pages html, soit tu code ça toi même (renvoie des pages via le protocole http quand un navigateur le "demande" ).

Image utilisateur
 
Hors ligne Blumax # Posté le 28/02/2010 à 08:15:17

Ville : Clichy
Pays : France métropolitaine

Je comprend le fond du problème et ceux qu'apporte ces nouvelle solution, par contre le nom me sembla malle choisie, NoSQL, voudrais dire plus de SQL, alors que le SQL, est juste une façon standardiser de faire une requête, alors que ceux qui est remis en cause, c'est comment c'est gérée/stocker.

J'ai pus lire aussi, qu'on n'avais pas aussi besoin du model relationnel, qu'on ne le gère pas, je peux le comprendre, mais qu'on cherche a le détruire/minimiser, je ne comprend pas, dans le cas de twitter, un twite est liée a une personne, et sa quelque soit le système qui soit utilisé, il y'a une relation, sinon comment savoir qui a twiter quoi ?

C bizard kan c 1 repons a un probleme, l'ortooographe né pu 1 souci ;)
 
Hors ligne planete.game57 # Posté le 28/02/2010 à 09:33:20
Avatar

Études : IRIS

Ah, je viens d'apprendre quelque chose, je connaissais pas Cassandra, merci pour tous ces détails.

Je suis sidéré par le nombre de tweets par jours. 50000 :o

xHTML/CSS |||||||||| 100% | PHP/MySQL |||||||||| 100% | Langage C |||||||||| 8.5%
Python |||||||||| 100% | JavaScript |||||||||| 5.5% | Photoshop |||||||||| 0.0%
Smarty |||||||||| 100%

Image utilisateurImage utilisateur
 
Hors ligne ProgVal # Posté le 28/02/2010 à 09:45:36
Catapoulpe !
Avatar

Ville : Jouy aux arches
Pays : France métropolitaine
Études : Lycée Fabert - Metz

Citation : Hoodie en laine
Quoi ? On peut faire du web sans php ?
Bien sûr, puisque l'interpréteur PHP en lui-même n'est pas codé en PHP.
Et Apache, il n'est pas codé en PHP.

Citation : planete.game57
Je suis sidéré par le nombre de tweets par jours. 50000 :o
Pas 50 000, mais 50 000 000

Image utilisateur
 
Connecté CTR*Seb # Posté le 28/02/2010 à 09:46:00
CreativiCloud
Avatar

Ville : Saint pierre de varennes
Pays : France métropolitaine

Citation : planete.game57


Je suis sidéré par le nombre de tweets par jours. 50000 :o


pas 50000, mais 5000000 ^^

Moi je connaissais pas du tout la NoSql :euh:
Bonne news :)

Image utilisateur
 
Hors ligne X.Lewandowski # Posté le 28/02/2010 à 09:54:19

la BDD Cassandra se fera connaître grâce à Twitter :p
En tout cas, c'est super si ils peuvent économiser des serveurs !

x6 Vaisseaux en LEGO : « http://pio154.perso.sfr.fr/ »
 
Pour accéder à cette section
Connectez-vous !
connexion_rpx

Revenir à la liste des news