Skip to content

Commit c050fc1

Browse files
committed
doc: add project document
1 parent 0b5ca65 commit c050fc1

File tree

3 files changed

+255
-3
lines changed

3 files changed

+255
-3
lines changed

docs/docs/api-reference/Project.md

Lines changed: 253 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,253 @@
1+
---
2+
title: Project
3+
sidebar_position: 2
4+
---
5+
6+
# 项目管理
7+
8+
## 概览
9+
项目管理包含两个核心类:`Projects`(项目集合管理器)和`Project`(项目实体)。
10+
`Projects`类提供项目级的增删改查操作,`Project`类封装单个项目的属性和行为。二者共同构成项目管理的正交体系,支持托管项目和外部数据源项目的统一管理。
11+
12+
## Projects 类
13+
作为项目集合的入口控制器,负责:
14+
1. 项目生命周期管理(创建/删除/更新)
15+
2. 项目查询与过滤
16+
3. 跨项目操作协调
17+
4. 资源分配调度
18+
19+
### 方法
20+
21+
#### 获取项目
22+
```java
23+
public Project get() throws OdpsException
24+
public Project get(String projectName) throws OdpsException
25+
```
26+
27+
- **提示**
28+
`Project` 对象实现了 `LazyLoad` 接口,在首次调用时加载项目属性,调用 get 方法不会加载完整项目属性。
29+
高频调用建议配合缓存机制,根据`endpoint``projectName`缓存`Project`对象,并按需通过`Project.reload`方法手动重新加载。
30+
31+
#### 判断项目是否存在
32+
```java
33+
public boolean exists(String projectName) throws OdpsException
34+
```
35+
36+
##### 遍历项目
37+
38+
#### 快捷遍历方法
39+
```java
40+
// 按Owner遍历
41+
public Iterator<Project> iterator(String owner)
42+
43+
// 获取Iterable接口(支持foreach语法)
44+
public Iterable<Project> iterable(String owner)
45+
```
46+
47+
##### 过滤查询接口
48+
```java
49+
public Iterator<Project> iteratorByFilter(ProjectFilter filter)
50+
```
51+
通过`ProjectFilter`实现多条件过滤查询
52+
53+
**过滤条件参数**
54+
```java
55+
public class ProjectFilter {
56+
// 基础过滤条件
57+
private String owner; // 项目所有者(精确匹配)
58+
private String name; // 项目名称前缀匹配
59+
private String user; // 项目使用者
60+
private String groupName; // 项目组名称
61+
private String tenantId; // 租户ID
62+
private String regionId; // 地域ID
63+
64+
// 高级过滤条件
65+
private String quotaNickname; // 配额别名
66+
private String quotaType; // 配额类型
67+
private String quotaName; // 配额名称
68+
private Boolean enableDr; // 是否开启存储容灾
69+
}
70+
```
71+
72+
73+
74+
#### 创建项目
75+
```java
76+
public void create(CreateProjectParam param) throws OdpsException
77+
```
78+
79+
**参数构建器方法**
80+
81+
| 方法 | 说明 | 是否必填 |
82+
|----------------------------------|--------------|------|
83+
| `name(String)` | 项目名称(2-64字符) ||
84+
| `owner(String)` | 项目所有者 ||
85+
| `defaultCluster(String)` | 默认计算集群 ||
86+
| `comment(String)` | 项目描述 ||
87+
| `superAdmin(String)` | 超级管理员 ||
88+
| `properties(Map)` | 项目属性(覆盖设置) ||
89+
| `appendProperty(String, String)` | 追加属性 ||
90+
| `groupName(String)` | 项目组名称 ||
91+
| `defaultQuotaId(String)` | 默认计算配额ID ||
92+
| `defaultCtrlService(String)` | 默认控制服务地址 ||
93+
94+
95+
#### 创建外部项目
96+
```java
97+
public void createExternalProject(String projectName, String comment,
98+
String refProjectName,
99+
Project.ExternalProjectProperties extProperties)
100+
```
101+
创建MC外部项目,实现异构数据源联邦查询,将Hive等外部系统映射到MC中。
102+
103+
- **使用示例**
104+
```java
105+
Project.ExternalProjectProperties extProps = new Project.ExternalProjectProperties("hive");
106+
// required properties for 'hive' source
107+
extProps.addProperty("hms.ips", "10.0.0.1:5300,10.0.0.2:5300");
108+
extProps.addProperty("hive.database.name", "odps");
109+
extProps.addProperty("hdfs.namenode.ips", "192.168.0.12:3829,192.168.0.5:3389");
110+
// network properties
111+
extProps.addNetworkProperty("odps.external.net.vpc", "false")
112+
113+
odps.projects().createExternalProject(projectName, comment, refProjectName, extProps);
114+
```
115+
116+
#### 删除操作
117+
```java
118+
public Instance delete(String projectName, boolean isImmediate)
119+
```
120+
- **删除模式**
121+
| 模式 | 资源回收 | 可恢复性 | 返回类型 |
122+
|------|---------|----------|---------|
123+
| 逻辑删除 | 延迟执行 | 支持回收站恢复 | null |
124+
| 物理删除 | 立即释放 | 不可逆 | 操作实例 |
125+
126+
127+
128+
---
129+
130+
## Project 类
131+
132+
Project 类负责对具体某个项目进行属性访问和操作
133+
134+
### 基础属性访问
135+
136+
#### 获取项目类型
137+
```java
138+
public ProjectType getType();
139+
```
140+
**说明**:返回项目的存储类型,用于区分托管项目与外部项目
141+
**枚举定义**
142+
```java
143+
public enum ProjectType {
144+
MANAGED, // 原生存储项目(默认类型)
145+
EXTERNAL, // 旧版外部存储(兼容模式)
146+
EXTERNAL_V2 // 新版外部存储(推荐)
147+
}
148+
```
149+
150+
#### 获取项目描述
151+
```java
152+
public String getComment();
153+
```
154+
**说明**:返回项目创建时设置的描述信息,未设置时返回空字符串
155+
156+
#### 获取项目所有者
157+
```java
158+
public String getOwner();
159+
```
160+
**说明**:返回项目创建者账号(主账号或RAM子账号)
161+
162+
#### 获取所属地域
163+
```java
164+
public String getRegionId();
165+
```
166+
**说明**:返回项目部署的阿里云地域ID(如`cn-shanghai`
167+
168+
#### 获取创建时间
169+
```java
170+
public Date getCreatedTime();
171+
```
172+
**说明**:返回项目创建时间的`Date`对象
173+
174+
#### 获取最后修改时间
175+
```java
176+
public Date getLastModifiedTime();
177+
```
178+
**说明**:返回项目属性最后一次修改的时间
179+
180+
#### 获取项目状态
181+
```java
182+
public Status getStatus();
183+
```
184+
**说明**:返回项目当前运行状态
185+
**状态枚举**
186+
```java
187+
public enum Status {
188+
AVAILABLE, // 正常可用
189+
READONLY, // 只读模式(通常由欠费触发)
190+
DELETING, // 删除流程中
191+
FROZEN, // 被系统冻结
192+
UNKOWN // 状态未知(需调用reload()刷新)
193+
}
194+
```
195+
196+
197+
### 配置管理
198+
199+
#### 获取显式配置属性
200+
```java
201+
public Map<String, String> getProperties();
202+
```
203+
**说明**:返回项目创建/更新时显式设置的属性集合(不包含继承配置)
204+
205+
#### 获取全部配置属性
206+
```java
207+
public Map<String, String> getAllProperties();
208+
```
209+
**说明**:包含显式配置+从项目组(Group)继承的属性
210+
211+
#### 获取指定配置
212+
```java
213+
public String getProperty(String key);
214+
```
215+
**参数**`key` - 配置项名称(如`odps.sql.type.system.odps2`
216+
217+
#### 获取扩展属性
218+
```java
219+
public Map<String, String> getExtendedProperties();
220+
```
221+
**说明**:返回项目扩展配置信息(非核心业务属性)
222+
223+
224+
### 存储信息
225+
226+
#### 获取分层存储详情
227+
```java
228+
public StorageTierInfo getStorageTierInfo();
229+
```
230+
**说明**:需先调用`reload()`刷新数据,否则可能返回过期信息
231+
**返回结构**
232+
```java
233+
public class StorageTierInfo {
234+
public String storageTier; // 当前存储策略(STANDARD/LOWFREQUENCY/LONGTERM)
235+
public Date storageLastModifiedTime;// 最后统计时间
236+
public Map<String, Long> storageSize; // 各层级存储量(单位:Byte)
237+
}
238+
```
239+
240+
### 安全相关操作
241+
如授权操作,查询权限等,详情查看[权限控制](../core-concept/permission/index.mdx)
242+
```java
243+
public SecurityManager getSecurityManager()
244+
```
245+
246+
### 网络接入
247+
248+
#### 获取Tunnel接入点
249+
```java
250+
public String getTunnelEndpoint(String quotaName);
251+
```
252+
**参数说明**
253+
- `quotaName`:计算配额名称,传`null`时使用项目默认配额

docs/docs/api-reference/tunnel/DownloadSession.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,5 +133,4 @@ try (ArrowRecordReader arrowReader = session.openArrowRecordReader(0, 50000)) {
133133

134134
## Transactional 表下载注意事项
135135

136-
对于 Transactional 表,下载会话的创建和读取方式与普通表不通。需要注意的是,对于 Transactional 表,getRecordCount() 返回的是当前表的分片,而不是表的总记录数。
137-
对应的,每次仅支持下载1个分片,而非任意数量。
136+
对于 Transactional 表,目前尚不支持使用 Tunnel Download 进行下载。如果有需要,请使用 [MaxStorage 开放存储](https://help.aliyun.com/zh/maxcompute/user-guide/open-storage-sample-java-sdk) 进行下载

docs/src/pages/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ function HomepageHeader() {
1313
{/* 背景图容器 */}
1414
<div className={styles.backgroundWrapper}>
1515
<img
16-
src="/img/vcg_VCG211151450126_RF.jpg"
16+
src="https://raw.githubusercontent.com/aliyun/aliyun-odps-java-sdk/release/0.51.x/docs/static/img/vcg_VCG211151450126_RF.jpg"
1717
alt="技术背景(已授权)"
1818
className={styles.backgroundImage}
1919
loading="lazy"

0 commit comments

Comments
 (0)