J'ai environ ~ 20-30 colonnes que je devrais stocker dans ma famille de colonnes au total. Cependant, mes données viennent dans différentes variations. J'ai différents objets qui appartiennent ensemble logiquement mais n'ont pas les mêmes champs (champs que dans les noms de clés). Parfois, 5 champs sont fournis, parfois 7 champs et ainsi de suite. Tous partagent une partie des champs qui sont toujours fournis.Cassandra Data Modeling: Utiliser une carte ou avoir beaucoup de colonnes vides?
Une ligne I insérée dans cette famille de colonnes n'aura jamais toutes les colonnes remplies. Lors de l'utilisation d'une carte, je pourrais ajouter des clés/valeurs basées sur le type d'objet et n'aurai pas le surcoût possible qui est introduit par mon autre modèle.
Je suis préoccupé par le nombre de colonnes vides dans chaque rangée.
Un inconvénient possible de l'utilisation d'une carte est que you can't have an index for map keys and map values coexist.
Questions réunies:
- -vous me suggérer d'utiliser une carte ou tout simplement ajouter toutes les colonnes je besoin de ma famille de la colonne?
- Je suppose que l'interrogation des données basées sur des clés/valeurs dans la carte est beaucoup plus lente que l'accès «direct» à partir des colonnes. Est-ce correct?
- Quels sont les inconvénients quand j'ai beaucoup de colonnes vides pour chaque rangée? Aérien?
- Est-il possible d'avoir un type de valeur "générique" lors de l'utilisation d'une carte? Je veux stocker des données différentes, principalement des chaînes mais aussi des flottants et entiers. Dois-je utiliser un
map<text,text>
et afficher les valeurs dans mon application?
J'utilise Cassandra 3.0.8 | Spécification CQL 3.4.0 | protocole natif v4
de Merci
en utilisant des colonnes simples me forcer à un nombre strict de colonnes, non? Lorsque vous utilisez l'approche de collecte, je serais plus flexible lorsque de nouvelles colonnes sont ajoutées. Est-il même possible d'ajouter plus de colonnes à un schéma lorsque le schéma a déjà xx Go de données? – j9dy
En utilisant des colonnes simples, je pense que vous devriez définir votre schéma avec le nombre maximum de colonnes que vous pouvez avoir. Cela ne présente aucun inconvénient, car si une rangée n'a pas de colonne particulière, elle ne gaspillera pas d'espace. Et vous pouvez toujours ajouter de nouvelles colonnes au schéma si vous en avez besoin. Comme indiqué dans la documentation [ici] (https://docs.datastax.com/en/cql/3.1/cql/cql_reference/alter_table_r.html), l'ajout d'une colonne au schéma ne valide pas les données passées. En utilisant une collection vous garderez votre schéma plus court, mais vous aurez l'inconvénient souligné dans la réponse. – riccamini