Skip to content

数据并置

很多时候用户可能希望将相关联的数据存储在同一节点上。这样多条目查询就不需要从其他节点拉取数据,因此执行速度更快。

创建表时可以选择将用于数据并置的字段。

例如,如果有PersonCompany表,每个人都具有 companyId 字段,该字段表示该人所在的公司。通过指定Person.companyIdCompany.ID作为并置键,可以确保在同一家公司工作的所有人的数据都存储在同一节点上,该公司的数据也存储在该节点上,这样查询为特定公司工作的人就会在单个节点上处理。

1.配置并置键

数据并置是在创建表时通过 COLOCATE BY 子句配置的,用于数据并置的列必须在主键中,并且必须按照与主表的 PRIMARY KEY 相同的顺序指定。

例如,下表将根据city_id列并置人员的数据:

sql
CREATE TABLE IF NOT EXISTS Person (
  id int,
  city_id int primary key,
  name varchar,
  age int,
  company varchar
) COLOCATE BY (city_id)

使用联合主键时,可以通过以下方式指定多个列以并置数据:

sql
CREATE TABLE Company (
  company_id int,
  department_id int,
  city_id int,
  company_name timestamp,
  PRIMARY KEY (company_id, city_id)
)

CREATE TABLE IF NOT EXISTS Person (
  id int,
  city_id int,
  name varchar,
  age int,
  company_id int,
  PRIMARY KEY (id, company_id, city_id)
)
COLOCATE BY (company_id, city_id)

这时 Ignite 将尝试将这些表进行并置存储。

提示

并置表(上例中的Person表)的 COLOCATE BY 子句必须包含与主表(上例中的 Company 表)的 PRIMARY KEY 子句相同的列集合和相同的顺序,才能并置数据。

18624049226