Considérons que nous avons tableau ci-dessous, en réalité, laisse supposer ce tableau a plus de 40 colonnesmise à jour Cassandra CQL vs update objet Mapper, ce qui aura un impact sur les performances de lecture
CREATE TABLE IF NOT EXISTS employee_by_id (
employee_id text,
first_name text,
middle_name text,
last_name text,
date_of_birth date,
joining_date date,
role_id text,
role_name text,
dept_id text,
dept_name text,
reporting_manager_id text,
reporting_manager_name text,
created_on timestamp,
created_by text,
updated_on timestamp,
updated_by text,
status text
PRIMARY KEY (employee_id)
);
Il y a un scénario pour mettre à jour les détails du service, les colonnes dept_id et dept_name.
Il y a 2 façons cette mise à jour peut être fait,
1. Cassandra Objet Mapper
En supposant que le mappeur objet fonctionne sur l'objet entier, il met à jour toutes les colonnes, y compris la ceux qui n'ont pas été modifiés dans le scénario ci-dessus.
2. CQL mise à jour requête
UPDATE employee_by_id set
dept_id = 'A100',
dept_name = 'General Accounts',
updated_on = '2017-04-24T00:00:00.000Z',
updated_by = 'arun'
WHERE
employee_id = 'E04500';
Comprendre:
Après la mise à jour, lorsque l'enregistrement est lu Cassandra, le contrôle de l'opération de lecture chacun et tous les colonne pour savoir quelle est la dernière en fonction de l'horodatage de ces colonnes. Si la table employee_by_number mentionnée ci-dessus est mise à jour à l'aide du mappeur d'objet, alors Cassandra doit vérifier/comparer les 17 colonnes pour trouver la dernière de toutes ces dernières.
Dans l'autre cas de mettre à jour seulement 4 colonnes en utilisant la mise à jour CQL , cassandra doit vérifier/comparer seulement ces 4 colonnes pour trouver la dernière de celles-ci.
Question:
Est-ce que je comprends bien?
Quelle est la méthode préférée de mise à jour, en utilisant la mise à jour CQL pour définir 4 champs ou mettre à jour toutes les colonnes en utilisant object mapper même si seulement 4 champs sont en cours de modification?
Si les deux mises à jour sont bonnes et n'affectent pas les performances, y a-t-il un scénario dans lequel nous ne devrions pas utiliser le mappeur d'objet pour les mises à jour?
Mise à jour de CQL par rapport à la mise à jour d'Object Mapper, ce qui aura un impact sur les performances de lecture lorsque les mises à jour sont effectuées uniquement sur quelques colonnes.
Mes questions ne concernent pas la définition de valeurs nulles, mais plutôt le stockage ou la définition de la même valeur dans une colonne. En d'autres termes, il s'agit de mettre à jour des champs avec la même valeur et l'impact. Pouvez-vous s'il vous plaît lire la question et mettre à jour votre réponse de manière appropriée? –
@ArunBC La requête CQL est préférable à utiliser, mais si vous utilisez Object Mapper, comment le mappeur d'objet suppose-t-il savoir quel champ a été mis à jour ou non? Je viens de montrer que –
Pouvez-vous répondre à mes 4 questions au bas de mon message? Il s'agit de lire les performances lors d'une mise à jour partielle en utilisant CQL vs mise à jour complète en utilisant le mappeur d'objet. Si vous pensez que vous avez déjà répondu pas de soucis –