Est-ce que Apache Cassandra prend en charge le sharding? Excusez-moi, cette question doit sembler anodine, mais je n'arrive pas à trouver la réponse. J'ai lu que Cassandra a été partiellement modélisé après la Grande Table de GAE qui éclate sur une échelle massive. Mais la plupart de la documentation que je trouve actuellement sur Cassandra semble impliquer que Cassandra ne partage pas les données horizontalement sur plusieurs machines, mais supporte plutôt beaucoup de machines dupliquées. Cela impliquerait que Cassandra est un bon lecteur de haute disponibilité, mais finirait par tomber en panne si le volume d'écriture devenait très très élevé.Est-ce que Cassandra prend en charge le sharding?
Répondre
Cassandra effectue une partition entre les nœuds (car si vous ne pouvez pas la diviser, vous ne pouvez pas la mettre à l'échelle). Toutes les données d'un cluster Cassandra sont réparties sur "l'anneau" et chaque nœud de l'anneau est responsable d'une ou de plusieurs plages de clés. Vous avez le contrôle sur le Partitioner (par exemple, Aléatoire, Ordonné) et combien de nœuds sur l'anneau une clé/colonne doit être répliquée en fonction de vos besoins.
Cela contient un assez bon aperçu. Basic architecture
Je vous recommande également de lire le livre blanc Dynamo. Bien que Cassandra soit différente de Dynamo de plusieurs façons, conceptuellement, ils proviennent des mêmes racines. Check it out: Dynamo White Paper
oui, cassandra soutient sharding, mais à sa manière. Dans Mongodb, chaque nœud secondaire contient des données complètes du nœud principal, mais dans Cassandra, chaque nœud secondaire a la responsabilité de ne conserver que quelques partitions clés de données.
Vous fusionnez MongoDB [* réplication *] (http://docs.mongodb.org/manual/replication/) (où les secondaires contiennent une copie complète des données pour la redondance) avec [* sharding *] (http://docs.mongodb.org/manual/sharding/) (partitionnement d'une base de données logique sur un cluster de machines). Généralement, si vous êtes sharding vous voudriez aussi avoir chaque shard soutenu par un jeu de réplicas, mais les deux concepts sont en fait orthogonaux. – Stennie
- 1. Est-ce que Cassandra prend en charge les requêtes conditionnelles?
- 2. Quelle version de Cassandra prend en charge Aquiles v0.7.0.6?
- 3. Est-ce que Cassandra prend en charge de nombreuses bases de données dans un serveur?
- 4. Est-ce que SQL Server prend en charge le fragment?
- 5. Est-ce que le ressort prend en charge l'injection d'interface?
- 6. Est-ce que Flex 3 prend en charge le filetage?
- 7. Est-ce que SlimBox2 prend en charge le format PNG?
- 8. Est-ce que backbone.stickit prend en charge le remplissage automatique?
- 9. Est-ce que FFMPEG prend en charge le codec G729?
- 10. Le module Net :: Cassandra de Perl prend-il en charge UTF-8?
- 11. Est-ce que le fantôme prend en charge la vue matérialisée?
- 12. Jenkins prend-il en charge le clustering?
- 13. RESTEasy prend-il en charge le tunneling?
- 14. Le SDK prend-il en charge JNI?
- 15. PayPal prend-il en charge le Dirham?
- 16. Firefly prend en charge Enums
- 17. Lire Cassandra prend toujours 60 sec. Pourquoi? (cassandra, thrift, php)
- 18. JBoss prend en charge Websockets?
- 19. iOS Retina Display: Est-ce que "@ 2x" prend en charge le JPEG ainsi que le png?
- 20. IE prend en charge JQuery
- 21. Exemple de création de déclencheurs dans Cassandra et est-ce que cela prend uniquement en charge Java?
- 22. Est-ce que Android prend en charge RTP/AVP/TCP?
- 23. Est-ce que System.Net.Mail prend actuellement en charge SSL
- 24. Est-ce que Spring framework prend en charge Jersey API
- 25. Est-ce que NVelocity prend en charge foreach.count?
- 26. Est-ce que dotConnect pour SQLite prend en charge Mono?
- 27. Est-ce que MapKit prend en charge Google StreetView
- 28. Est-ce que Angular 2 prend en charge l'injection asynchrone?
- 29. Est-ce que CentOS prend en charge Condor?
- 30. Est-ce que Google Closure prend en charge l'accordéon?
Ok, question clé: Est-ce que Cassandra peut être interrogé en utilisant des opérateurs supérieurs et inférieurs à ceux d'Olog (n)? –
Cela dépend de l'utilisation de Partitioner aléatoire ou commandé. Partitionner aléatoire distribuera uniformément à travers les noeuds, il est donc possible qu'une requête de portée doive frapper la plupart/tous les noeuds pour récupérer les données ... alors peut-être O (n). Avec le Partitionneur Commandé Cassandra peut déterminer exactement quels sont les nœuds à interroger et à renvoyer tout ce qui se trouve sur l'anneau, mais cela se fait au prix d'une distribution de données paire (c'est-à-dire hellopots). Il existe des moyens d'accomplir des requêtes de plage (par exemple, créez votre propre index où votre clé de ligne est une colonne). Cela justifie une autre question/discussion en soi. –
Les données partitionnées sont-elles répliquées sur tous les noeuds (ceux configurés pour la réplication)? – user3587180