概述:
NBASE-C数据库是一个通用的 ACID 开源的、可方便进行水平扩展的 SQL 数据库解决方案。它基于 PostgreSQL 数据库构建。NBASE-C可用于商业智能、大数据分析、Web 2.0、传统应用等场合。
NBASE-C是一个横向扩展的开源数据库集群,具有足够的灵活性来处理不同的数据库任务。

1. NBASE-C数据表节点关联机制
1.1. 数据节点关联机制概述
NBASE-C数据库的数据是存放如数据节点(datanode)之中,在创建数据表时可以指定放入某个数据节点或某组数据节点。
1.1.1. TO NODE(指定数据节点)
Associated with TONODE, it defines a NBASE-C node of catalog pgxc_node.
创建数据表时使用TO NODE用于将数据表保存至指定数据节点,所使用的数据节点需要在pgxc_node表预先定义。

1.1.2. TO GROUP(指定数据节点逻辑组)
Associated with TOGROUP, it defines a NBASE-C node group in catalog pgxc_group.
创建数据表时使用TO GROUP用于将数据表保存至指定数据节点逻辑组,所使用的数据节点需要在pgxc_node表预先定义,逻辑组需要在pgxc_group表预先定义。

1.1.3. 默认机制
This defines on thelist of nodes on which table data exists. If this is not specified table datais present on all Datanodes.
如果没有指定特定的数据节点,数据表中的数据存在于所有的数据节点(pgxc_node表所定义的所有数据节点)。

2. NBASE-C数据分布机制
2.1. DISTRIBUTE数据分布机制概述
NBASE-C数据库的数据是按一定分布机制存放入数据节点(datanode)之中,每一张数据表只能选择一种分布机制。
2.1.1. REPLICATION(复制)
Each row of the tablewill be replicated to all the Datanode of the NBASE-C database cluster.
存入数据表中的每一行都会被复制到NBASE-C数据库集群中所有的数据节点。

2.1.2. ROUNDROBIN(轮询)
Each row of the tablewill be placed in one of the Datanodes in a round-robin manner. The value ofthe row will not be needed to determine what Datanode to go.
存入数据表中的每一行都将按照轮询方式依次存入其中之一个数据节点。每一行数据在进入表之前无法确定它将被存入哪一个数据节点。

2.1.3. HASH (column name)(指定列的哈希值)
Each row of the tablewill be placed based on the hash value of the specified column. Following typeis allowed as distribution column: INT8, INT2, OID, INT4, BOOL, INT2VECTOR,OIDVECTOR, CHAR, NAME, TEXT, BPCHAR, BYTEA, VARCHAR, FLOAT4, FLOAT8, NUMERIC,CASH, ABSTIME, RELTIME, DATE, TIME, TIMESTAMP, TIMESTAMPTZ, INTERVAL, andTIMETZ.
Please note thatfloating point is not allowed as a basis of the distribution column.
存入数据表中的每一行都将基于指定列的哈希值放入特定的数据节点,可以按hash方式分区的数据类型有:INT8, INT2, OID, INT4, BOOL,INT2VECTOR, OIDVECTOR, CHAR, NAME, TEXT, BPCHAR, BYTEA, VARCHAR, FLOAT4,FLOAT8, NUMERIC, CASH, ABSTIME, RELTIME, DATE, TIME, TIMESTAMP, TIMESTAMPTZ,INTERVAL, and TIMETZ。
数据类型为floating point无法被指定为分区列。

2.1.4. MODULO (column name)(指定列的求余数)
Each row of the tablewill be placed based on the modulo of the specified column. Following type isallowed as distribution column: INT8, INT2, OID, INT4, BOOL, INT2VECTOR,OIDVECTOR, CHAR, NAME, TEXT, BPCHAR, BYTEA, VARCHAR, FLOAT4, FLOAT8, NUMERIC,CASH, ABSTIME, RELTIME, DATE, TIME, TIMESTAMP, TIMESTAMPTZ, INTERVAL, andTIMETZ.
Please note thatfloating point is not allowed as a basis of the distribution column.
存入数据表中的每一行都将基于指定列的求余数放入特定的数据节点,可以按hash方式分区的数据类型有:INT8, INT2, OID, INT4, BOOL,INT2VECTOR, OIDVECTOR, CHAR, NAME, TEXT, BPCHAR, BYTEA, VARCHAR, FLOAT4,FLOAT8, NUMERIC, CASH, ABSTIME, RELTIME, DATE, TIME, TIMESTAMP, TIMESTAMPTZ,INTERVAL, and TIMETZ。
数据类型为floating point无法被指定为分区列。

2.1.5. 默认机制
If DISTRIBUTE BY isnot specified, columns with UNIQUE constraint will be chosen as thedistribution key. If no such column is specified, distribution column is thefirst eligible column in the definition. If no such column is found, then thetable will be distributed by ROUNDROBIN.
数据表如果没有指定分布方式时,有唯一约束的列将被选为分布的指定列。如果没有唯一约束的列,分布时将选择第一备选列。如果没有找到这样的列中,则该表则按照轮询方式进行分布。




