- 1.3 SDS服务简介
- 1.3.1 帐号注册
- 1.3.2 数据模型
- 1.3.3 二级索引
- 1.3.4 支持的操作
- 1.3.5 配额说明
- 1.3.6 计量计费
- 1.3.7 AutoScaling
- 1.3.8 Stream
- 1.3.9 Recovery
- 1.3.10 冷备
- 1.3.11 权限模型
- 1.3.12 集群信息
- 1.3.13 Client配置
- 1.3.14 多语言SDK
- 1.3.15 离线分析
- 1.3.16 监控统计
- 1.3.17 数据加密
- 1.3.18 示例
- 1.4 API
- 1.4.1 创建表
- 1.4.2 修改表
- 1.4.3 克隆表
- 1.4.4 禁用表
- 1.4.5 启用表
- 1.4.6 删除表
- 1.4.7 描述表
- 1.4.8 获得表的状态
- 1.4.9 列出所有表
- 1.5 API
- 1.5.1 写记录
- 1.5.2 读记录
- 1.5.3 删除记录
- 1.5.4 自增操作
- 1.5.5 批量操作
- 1.5.6 带条件的批量写操作
- 1.5.7 允许部分执行的批量操作
- 1.5.8 扫描记录
- 1.5.9 事务操作
- 1.6 FAQ
- 1.6.1 认证授权
- 1.6.2 数据模型
- 1.6.3 旧版帐号迁移到新版
- 1.6.4 RESOURCE_NOT_FOUND异常
- 1.6.5 常见错误
1.4.2 修改表
void alterTable(String tableName, TableSpec tableSpec)
功能
添加或删除属性
修改表的空间大小,读写配额
修改表的app权限控制
修改表的简要描述
打开或关闭全局有序scan的支持
方法参数
1.tableName : String : required
指定所要修改的表的表名
2.tableSpec : TableSpec : required
指定修改后的TableSpec
新建表的schema和meta数据定义,包含了schema和meta两部分
其中schema部分包括
1.entityGroupSpec : EntityGroupSpec : optional
entityGroupSpec包括List< KeySpec > attributes, 用于指定作为实体组键的属性,及每个属性的编码方式(asc/desc)
enableHash, 指定是否对实体组键开启哈希分布
2.primaryIndex : List< KeySpec > : required
指定作为主键的属性,及每个属性的编码方式(asc/desc)
3.attributes : Map< String, DataType > : required
属性名到属性数据类型的映射,定义表的属性名和属性的数据类型,必须包括之前定义的entityGroupSpec和primaryIndex中定义的属性
4.secondaryIndexes : Map< String, LocalSecondaryIndexSpec > : optional
可对表建多个二级索引,该参数为二级索引名到二级索引定义LocalSecondaryIndexSpec的映射,定义表的二级索引
其中LocalSecondaryIndexSpec,包含以下几个字段:
- indexSchema : List< KeySpec > 指定对哪些属性建立索引, 与及作为索引记录键值时的编码方式(asc/desc)
- consistencyMode : SecondaryIndexConsistencyMode, 定义索引类型, LAZY 、EAGER或IMMUTABLE
- projections : List< String >, 属性名列表,定义索引记录中包含主记录的哪些属性的copy,只有索引类型为EAGER时才能设置
5.streams : Map< String, StreamSpec > : optional
可对表建多个Stream,该参数为topic名到Stream定义StreamSpec的映射,定义表的Stream集合
其中StreamSpec包含以下几个字段:
- viewType : StreamViewType,表示Stream类型,包括RECORD_IMAGE和MUTATE_LOG
- attributes : List< String >,需要track的属性名列表
- enableStream : boolean,使能开关
6.ttl : int : optional
表中数据的存活时间,单位为秒,即从写入开始,过了这段时间数据会自动删除,默认为-1,永不删除
meta部分
1.quota : TableQuota : required
指定表的空间大小配额
2.throughput : ProvisionThroughput : required
预设主集群读写配额
3.appAcl : Map< String, List< CannedAcl > > : optional
定义表的在其帐号下的app的访问权限,参考权限模型
4.description : String : optional
表的简要描述
5.exceededThroughput : ProvisionThroughput : required
主集群最大超发的读写配额,即系统空闲时可能达到的最大吞吐,设置比throughput大即允许超发
6.slaveThroughput : ProvisionThroughput : required
预设备集群读写配额
7.exceededSlaveThroughput : ProvisionThroughput : required
备集群最大超发的读写配额,即系统空闲时可能达到最大的吞吐,设置比slaveThroughput大即允许超发
方法返回值
void
异常错误码
INTERNAL_ERROR(1) : 服务器异常
ACCESS_DENIED(4) : 不具有修改表的权限
VALIDATION_FAILED(5): 参数错误
SIZE_EXCEED(6) : 空间配额或者读写配额超过了用户的总配额
RESOURCE_NOT_FOUND(9): 表不存在
RESOURCE_UNAVAILABLE(11) : 该账户下有其它DDL操作正在进行,不允许同时进行DDL操作
限制
只有表的owner才能进行修改表的操作
不能修改表的实体组键和主键
不能修改属性的数据类型
不能添加索引
二级索引只能修改索引类型,且只能从IMMUTABLE 到 EAGER
示例
以示例表为例,下面给出修改表的示例代码
$tableName = "php-note";
$tableSpec = $adminClient->describeTable($tableName);
$tableSpec->schema->attributes = array(
'userId' => DataType::STRING,
'noteId' => DataType::INT64,
'title' => DataType::STRING,
'content' => DataType::STRING,
'version' => DataType::INT64,
'mtime' => DataType::INT64,
'category' => DataType::STRING,
'addAttribute' => DataType::STRING, // 添加属性
);
$tableSpec->metadata->throughput = new ProvisionThroughput(array(
'readCapacity' => 200,
'writeCapacity' => 400 //把写配额改成400
));
$adminClient->alterTable($tableName, $tableSpec);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论