使用 copy 命令对数据进行分片企业版Aura 不可用
copy 命令可用于在创建数据库副本时过滤数据。在以下示例中,一个示例数据库被拆分为 3 个分片。
示例 1. 使用
copy 命令过滤数据示例数据库包含以下数据
(p1 :Person :S2 {id:123, name: "Ava"})
(p2 :Person :S2 {id:124, name: "Bob"})
(p3 :Person :S3 {id:125, name: "Cat", age: 54})
(p4 :Person :S3 {id:126, name: "Dan"})
(t1 :Team :S1 :SAll {id:1, name: "Foo", mascot: "Pink Panther"})
(t2 :Team :S1 :SAll {id:2, name: "Bar", mascot: "Cookie Monster"})
(d1 :Division :SAll {name: "Marketing"})
(p1)-[:MEMBER]->(t1)
(p2)-[:MEMBER]->(t2)
(p3)-[:MEMBER]->(t1)
(p4)-[:MEMBER]->(t2)
数据已通过查询准备完毕,添加了标签 :S1、:S2、:S3 和 :SAll,用于表示目标分片。分片 1 (Shard 1) 包含团队数据。分片 2 和 分片 3 包含人员数据。
-
创建 分片 1:
bin/neo4j-admin database copy neo4j shard1 \ --copy-only-nodes-with-labels=S1,SAll \ (1) --skip-labels=S1,S2,S3,SAll (2)1 --copy-only-node-with-labels属性用于过滤掉所有不具备:S1或:SAll标签的数据。2 --skip-labels属性用于排除您为分片过程创建的临时标签。生成的分片包含以下内容
(t1 :Team {id:1, name: "Foo", mascot: "Pink Panther"}) (t2 :Team {id:2, name: "Bar", mascot: "Cookie Monster"}) (d1 :Division {name: "Marketing"}) -
创建 分片 2
bin/neo4j-admin database copy neo4j shard2 \ --copy-only-nodes-with-labels=S2,SAll \ --skip-labels=S1,S2,S3,SAll \ --copy-only-node-properties=Team.id在 分片 2 中,您希望保留
:Team节点作为代理节点,以便能够链接来自不同分片的信息。这些节点将被包含在内,因为它们带有:SAll标签,但您指定了--copy-only-node-properties以避免复制 分片 1 中的团队信息。(p1 :Person {id:123, name: "Ava"}) (p2 :Person {id:124, name: "Bob"}) (t1 :Team {id:1}) (t2 :Team {id:2}) (d1 :Division {name: "Marketing"}) (p1)-[:MEMBER]->(t1) (p2)-[:MEMBER]->(t2)请注意,
--copy-only-node-properties并没有过滤掉Person.name,因为过滤器中未提及:Person标签。 -
创建 分片 3,但使用
--skip-node-properties过滤器,而不是--copy-only-node-properties。bin/neo4j-admin database copy neo4j shard3 \ --copy-only-nodes-with-labels=S3,SAll \ --skip-labels=S1,S2,S3,SAll \ --skip-node-properties=Team.name,Team.mascot结果为:
(p3 :Person {id:125, name: "Cat", age: 54}) (p4 :Person {id:126, name: "Dan"}) (t1 :Team {id:1}) (t2 :Team {id:2}) (d1 :Division {name: "Marketing"}) (p3)-[:MEMBER]->(t1) (p4)-[:MEMBER]->(t2)如上所示,使用
--skip-node-properties和--copy-only-node-properties都可以达到相同的效果。在此示例中,使用--copy-only-node-properties更简单,因为只需保留一个属性。关系属性过滤器的作用方式相同。