Apache Phoenix(七)新特性之命名空间映射

  总结:命名空间类似于MYSQL的库名,可以做租户配额限制。
  从v4.8.0起,用户可以将其模式映射到命名空间,这样用模式创建的任何表都将在Hbase的相应命名空间中创建。
  在此之前,所有的表(有模式的和没模式的)都在默认的命名空间中创建。

配置

启用名称空间映射的参数:

属性 描述 默认值
phoenix.schema.isNamespaceMappingEnabled 如果启用了它,那么使用模式创建的表将映射到名称空间。这需要在客户端和服务器端同时设置。如果设置一次,则不应回滚。启用此属性后,旧客户端将无法工作。 false
phoenix.schema.mapSystemTablesToNamespace 启动此属性将在phoenix.connection.isNamespaceMappingEnabled也设置成true。如果它启动,系统表将自动迁移到SYSTEM命名空间。如果设置成false,系统表将在默认的命名空间中创建。它需要同时在客户端和服务端设置。 true

可用的语法

&emsp: 下列的DDL语句可用于模式交互。

  • CREATE SCHEMA
  • USE SCHEMA
  • DROP SCHEMA

常见问题解答

  • 如何迁移具有模式的已存在的表迁移到命名空间?
  • 如何迁移系统表?
  • 创建和删除模式需要什么权限?
  • 如何为不同的表类型映射模式?
  • 命名空间和表映射到命名空间有什么好处?

如何迁移具有模式的已存在的表迁移到命名空间?

  对于kerberized环境,拥有permissiont(“admin”)管理员的权限就足够创建一个命名空间了。表只会将会映射在名称为“schema_name”的命名空间上。目前不支持迁移已存在的表在不同的命名空间或者不同模式下。
移动一张表到指定名称的命名空间“schema_name”。

$  bin/psql.py  -m .

如何迁移系统表?

  系统表会自动迁移,当启用了phoenix.schema.mapSystemTablesToNamespace along 和phoenix.schema.isNamespaceMappingEnabled之后的第一次连接。

创建和删除模式需要什么权限?

  在HBase中,用户必须具有“admin”权限才能成功执行CREATE和DROP模式,因为这些命令将在内部创建或删除名称空间。
  在HBase中可以找到ACL管理的详细信息这里。

如何为不同的表类型映射模式?

  Phoenix中的模式支持与其他数据库类似。
  下表可以帮助你映射物理表到Phoenix表上:

DDL 表类型 Hbase表 描述
CREATE TABLE S.T (ID INTEGER PRIMARY KEY) S:T 表T会创建在S的命名空间中
CREATE INDEX IDX ON S.T(ID) (ID INTEGER PRIMARY KEY) 索引 S:IDX 索引会继承模式和命名空间从表中。
CREATE VIEW V SELECT * FROM S.T 视图在默认的模式 S:T 视图不会继承来自父表的模式,它只有自己的模式。
CREATE VIEW X.V SELECT * FROM S.T 视图有自己的的模式相比于物理表 S:T 视图将只使用父物理表,并且也可以具有不同的(或相同的)模式
CREATE VIEW S.V SELECT * FROM S.T 视图有相同的模式在物理表 S:T 视图将只使用父物理表,并且也可以具有不同的(或相同的)模式
CREATE VIEW idx on S.V 视图索引 S:_IDX_T 视图索引还将继承模式并映射到相应的名称空间

命名空间和表映射到命名空间有什么好处?

  名称空间是类似于关系数据库系统中的数据库的表的逻辑分组。这种抽象为即将到来的多租户相关特性奠定了基础:

  • 配额管理——限制一个名称空间可以使用的资源数量(例如区域、表)。
  • 名称空间安全管理——为租户提供另一层安全管理。
  • 区域服务器组——可以将名称空间/表固定到regionserver的一个子集上,从而保证了球场级别的隔离。
    详细的可以查看命名空间管理通过这里。

资源

  • PHOENIX-1311:更多的实现细节和讨论关于命名空间特性。

你可能感兴趣的:(Apache Phoenix(七)新特性之命名空间映射)