J'ai actuellement conçu un schéma dans Cassandra mais je me demande s'il y a une meilleure façon de faire les choses. Fondamentalement, le problème est que la plupart, sinon toutes les lectures sont dynamiques. J'ai construit un système de segmentation en tant que service d'application qui lit une requête personnalisée dynamique (complètement indépendante de Cassandra, mais la requête est stricte et limitée à l'application) et il va de l'avant et interroge cassandra et fusionne les résultats.Cassandra Schema
J'ai rendu la plupart des familles de colonnes aussi larges que je le pensais, et comme les données sont extrêmement intensives en écriture, j'ai utilisé des clés composites pour partitionner la charge. Cela consiste essentiellement à implémenter une couche de requête au-dessus de Cassandra qui est spécifique à l'application, y compris une sorte d'opération de jointure ou de fusion.
Y a-t-il des limites à cette mise en page ou processus?
Je pense que vous devez être plus précis. Qu'entendez-vous par "lectures dynamiques"? Pourquoi segmenter puis fusionner? – Raedwald
@Raedwald Fondamentalement, la couche d'application expose un service de requête A. Sa tâche est de servir de segmentation de données. La segmentation est complètement indépendante de Cassandra (bien que les données y soient stockées). Au lieu de toucher Cassandra directement, nous exposons une couche d'indirection pour fournir une segmentation beaucoup plus puissante. Par exemple, quelqu'un pourrait demander l'ensemble de données «Trouver tous les utilisateurs d'où ils viennent du Canada et le navigateur est Firefox et ils ont cherché 5 fois sur la page d'accueil après s'être connecté». C'est le genre de segmentation de données dont je parle. – Daniel
La couche de service est responsable de cette segmentation. J'essaie d'obtenir des lignes extrêmement grandes (sur la colonne) pour permettre des lectures rapides, mais étant donné que certaines données sont des compteurs et que d'autres sont d'autres types, les données doivent être réparties automatiquement entre deux familles de colonnes. – Daniel