【发布时间】:2017-09-21 18:50:13
【问题描述】:
假设我们有下表,实际上假设该表有 40 多列
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)
);
有一个场景可以更新部门详细信息,列 dept_id 和 部门名称。
有两种方法可以完成此更新,
1. Cassandra 对象映射器
假设对象映射器适用于整个对象,它会更新所有 包括上述未修改的列 场景。
2。 CQL 更新查询
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';
理解:
更新后,在 Cassandra 中读取记录时,读取的 操作检查每一列以找出哪个是 最新基于这些列的时间戳。
如果上述employee_by_number 表是使用对象映射器更新的,那么cassandra 需要检查/比较所有17 列以找到所有这些中的最新列。
关于使用 CQL 仅更新 4 列的另一种情况 更新,cassandra 只需要检查/比较这 4 列即可找到最新的。
问题:
我的理解正确吗?
这是首选的更新方式,使用 CQL 更新设置 4 个字段或使用对象映射器更新所有列,即使 只修改了 4 个字段?
如果两个更新都很好并且不影响性能,是否存在不应该使用对象映射器进行更新的场景?
CQL 更新与 Object Mapper 更新,当仅对少数列进行更新时,这将对读取性能产生影响。
【问题讨论】: