Cassandra colonne de clé auto incrément
J'essaie de comprendre Cassandra et comment structurer mon des familles de la colonne (CF) mais c'est assez dur car je suis habitué à des bases de données relationnelles.
Par exemple si je crée simple users
FC et j'essaie d'insérer une nouvelle ligne, comment puis-je faire des sauvegardes incrémentales clé comme dans MySQL?
J'ai vu beaucoup d'exemples où vous mettez juste le nom d'utilisateur au lieu de l'ID unique et qui permettrait de donner un peu de sens, mais que si je veux les utilisateurs à la duplication des noms d'utilisateur?
Aussi comment puis-je faire des recherches, quand ce que je comprends de cassandra n'a pas de suport >
opérateurs, donc quelque chose comme select * from users where something > something2
ne fonctionnerait pas.
Et probablement la question la plus importante que sur le groupement? Aurais-je besoin de récupérer toutes les données et ensuite le filtre avec la langue que j'utilise? Je pense que ce serait ralentir mon système.
Donc en gros j'ai besoin d'une brève explication sur la façon d'obtenir commencé avec Cassanda.
Vous devez vous connecter pour publier un commentaire.
Vos questions sont tout à fait générale, mais permettez-moi de prendre un coup de couteau à elle. Tout d'abord, vous avez besoin de modéliser vos données en termes de vos requêtes. Avec un SGBDR, le modèle de vos données dans une forme normalisée, puis d'optimiser plus tard, pour vos requêtes spécifiques. Vous ne pouvez pas faire cela avec Cassandra; vous devez écrire vos données de la façon dont vous l'intention de le lire. Souvent, cela signifie écrire plus d'une façon. En général, il aide à complètement débarrassez-vous de votre SGBDR penser si vous voulez travailler efficacement avec Cassandra.
Concernant clés:
Ils sont utilisés dans Cassandra comme l'unité de distribution à travers l'anneau. Si votre clé obtiendrez hachée et attribuer un "propriétaire" dans le ring. Utiliser le RandomPartitioner pour garantir une distribution uniforme
En supposant que vous utilisez RandomPartitioner (vous devriez), les touches ne sont pas triés. Cela signifie que vous ne pouvez pas demander une gamme de clés. Vous pouvez, cependant, de demander une liste de touches en une seule requête.
Clés sont pertinents dans certains modèles et pas dans d'autres. Si votre modèle de requête-par-clé, vous pouvez utiliser une valeur unique que votre application est conscient (comme un UUID). Parfois, les touches sont sentinelle des valeurs, comme un Unix époque représentant le début de la journée. Cela permet à la main de Cassandra un tas de connu touches, puis obtenir une plage de données triée par colonne (voir ci-dessous).
Concernant les prédicats de requête:
Vous pouvez obtenir des plages de données en supposant que vous avez modèle correctement pour répondre à vos questions.
Puisque les colonnes sont écrits dans l'ordre de tri, vous pouvez interroger un éventail à partir de la colonne A à la colonne n avec une tranche de requête (ce qui est très rapide). Vous pouvez également utiliser des colonnes composites pour résumé ce mécanisme un peu.
Vous pouvez utiliser les index secondaires sur les colonnes où vous avez une faible cardinalité--cela vous donne de la requête par la valeur de la fonctionnalité.
Vous pouvez créer votre propre index où les données sont triées de la façon dont vous en avez besoin.
Concernant le groupement:
Je suppose que vous faites allusion à la création d'agrégats. Si vous avez besoin de vos données en temps réel, vous aurez envie d'utiliser certains mécanisme externe (comme Tempête) afin de suivre les données et constamment mise à jour de votre agrégats dans un CF. Si vous êtes à la création d'agrégats dans le cadre d'un processus de traitement par lots, Cassandra a une excellente intégration avec Hadoop, vous permettant d'écrire de la carte/réduction des emplois dans Pig, Hive, ou directement dans la langue de votre choix.
À votre première question:
Non, pas vraiment, pas natif de Cassandra. Comment créer incrément automatique des Id dans Cassandra -- Vous pouvez vérifier ici pour plus d'informations: http://srinathsview.blogspot.ch/2012/04/generating-distributed-sequence-number.html
Votre deuxième question est plus sur la façon dont vous stockez et le modèle de votre Cassandra données.
Découvrez stackoverflow de l'option de recherche. Beaucoup de questions intéressantes!
Le plus important, Quand ne PAS utiliser de Cassandra?
Vous voudrez peut-être vérifier PlayOrm. Alors que je suis d'accord vous avez besoin de sortir de SGBDR pense parfois avoir votre clé primaire comme identifiant est juste le mauvais choix. Parfois, c'est le bon choix(en fonction de vos besoins).
PlayOrm est un mélange de noSQL et relationnelle de concepts que vous le souhaitez, et vous pouvez le faire Évolutive-SQL avec des jointures et tout et tout. Vous avez juste besoin de partitionner les tables que vous croyez à croître dans les milliards de personnes/de milliers de milliards de lignes et vous pouvez interroger dans ces partitions. Même avec CQL, vous avez besoin de la partition de vos tables. Que pouvez-vous partition par? le temps est bon pour certains cas d'utilisation. D'autres peuvent être partitionnées par les clients comme chaque client est vraiment une mini-base de données dans votre noSQL cluster.
Autant que les clés aller, PlayOrm génère unique "cluster" touches qui est le nom d'hôte-uniqueidinThatHost, fondamentalement comme un TimeUUID sauf un peu plus court et plus lisible, nous utilisons les noms d'hôtes dans notre cluster de a1, a2, a3, etc. etc.