Ce n'est pas vraiment un problème de l'interrogation d'un type défini par l'utilisateur: imaginez que address
serait une seule colonne text
et que addresses
contiendrait une seule adresse, (c.-à-addresses TEXT
.) le problème serait le même.
Votre table d'utilisateur n'est pas destinée à être interrogée par autre chose que la clé primaire, qui dans ce cas est la clé de partition, qui est un UUID
ce qui la rend quasi inutile.
Si vous souhaitez interroger les utilisateurs par leur nom, je dénormaliser (qui implique une certaine duplication) et faire une table users_by_name
:
CREATE TABLE users_by_name(
name TEXT,
id UUID,
addresses whatever,
PRIMARY KEY((name), id)
)
où les utilisateurs sont stockés par name
(ils doivent être uniques) et la les résultats seront récupérés triés par id
(id
est la partie clé de la clé primaire).
va de même pour la requête par des adresses:
CREATE TABLE users_by_name(
city TEXT,
street TEXT,
name TEXT,
id UUID,
PRIMARY KEY((city), street)
)
Vous pourriez penser que cela ne résout pas vraiment le problème, mais il semble que vous avez conçu votre modèle de données à partir d'un point de vue DB (SQL) relationnelle, ce n'est pas le but avec Cassandra.
Je suis d'accord avec la réponse acceptée que vous devriez envisager de refaire votre modèle de données d'une manière plus optimale pour Cassandra. Plus généralement, l'intégration de Cassandra à Apache Solr permet d'interroger des champs clés non primaires, y compris des types définis par l'utilisateur: http://docs.datastax.com/en/latest-dse/datastax_enterprise/srch/srchUDT.html (link is un guide pour configurer les UDT dans Solr pour le bundle DataStax Enterprise Cassanra qui n'est pas gratuit). – JohnC