数据并置
很多时候用户可能希望将相关联的数据存储在同一节点上。这样多条目查询就不需要从其他节点拉取数据,因此执行速度更快。
创建表时可以选择将用于数据并置的字段。
例如,如果有Person
和Company
表,每个人都具有 companyId
字段,该字段表示该人所在的公司。通过指定Person.companyId
和Company.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