
# HBase样例程序开发思路
通过典型场景，您可以快速学习和掌握HBase的开发过程，并且对关键的接口函数有所了解。
#### 场景说明
假定用户开发一个应用程序，用于管理企业中的使用A业务的用户信息，如[表1]所示，A业务操作流程如下：
- 创建用户信息表。
- 在用户信息中新增用户的学历、职称等信息。
- 根据用户编号查询用户姓名和地址。
- 根据用户姓名进行查询。
- 查询年龄段在\[20-29\]之间的用户信息。
- 数据统计，统计用户信息表的人员数、年龄最大值、年龄最小值、平均年龄。
- 用户销户，删除用户信息表中该用户的数据。
- A业务结束后，删除用户信息表。
   表1用户信息 
  | **编号**      | **姓名** | **性别** | **年龄** | **地址**  |
  |:---|:---|:---|:---|:---|
  | 12005000201 | 张三     | 男      | 19     | 广东省深圳市  |
  | 12005000202 | 李婉婷    | 女      | 23     | 河北省石家庄市 |
  | 12005000203 | 王明     | 男      | 26     | 浙江省宁波市  |
  | 12005000204 | 李刚     | 男      | 18     | 湖北省襄阳市  |
  | 12005000205 | 赵恩如    | 女      | 21     | 江西省上饶市  |
  | 12005000206 | 陈龙     | 男      | 32     | 湖南省株洲市  |
  | 12005000207 | 周微     | 女      | 29     | 河南省南阳市  |
  | 12005000208 | 杨艺文    | 女      | 30     | 重庆市开县   |
  | 12005000209 | 徐兵     | 男      | 26     | 陕西省渭南市  |
  | 12005000210 | 肖凯     | 男      | 25     | 辽宁省大连市  |
     
  
 
#### 数据规划
合理地设计表结构、行键、列名能充分利用HBase的优势。本样例工程以唯一编号作为RowKey，列都存储在info列族中。
![](https://support.huaweicloud.com/devg3-mrs/public_sys-resources/caution_3.0-zh-cn.png)
HBase表以"*命名空间* :*表名*"格式进行存储，若在创建表时不指定命名空间，则默认存储在"default"中。其中，"hbase"命名空间为系统表命名空间，请不要对该系统表命名空间进行业务建表或数据读写等操作。
#### 功能分解
根据上述的业务场景进行功能分解，需要开发的功能点如[表2]所示。
 表2在HBase中开发的功能 
| **序号** | **步骤**                                                                                                                           | **代码实现**                                                                                                                                                          |
|:---|:---|:---|
| 1      | 根据[表1](https://support.huaweicloud.com/devg3-mrs/mrs_07_290009.html#mrs_07_290009__zh-cn_topic_0039549246_table27353390)中的信息创建表。 | 请参见[创建HBase表](https://support.huaweicloud.com/devg3-mrs/mrs_07_290015.html)。                                                                                      |
| 2      | 导入用户数据。                                                                                                                          | 请参见[向HBase表中插入数据](https://support.huaweicloud.com/devg3-mrs/mrs_07_290018.html)。                                                                                  |
| 3      | 增加"教育信息"列族，在用户信息中新增用户的学历、职称等信息。                                                                                                  | 请参见[修改HBase表](https://support.huaweicloud.com/devg3-mrs/mrs_07_290017.html)。                                                                                      |
| 4      | 根据用户编号查询用户姓名和地址。                                                                                                                 | 请参见[使用Get API读取HBase表数据](https://support.huaweicloud.com/devg3-mrs/mrs_07_290020.html)。                                                                           |
| 5      | 根据用户姓名进行查询。                                                                                                                      | 请参见[使用Filter过滤器读取HBase表数据](https://support.huaweicloud.com/devg3-mrs/mrs_07_290022.html)。                                                                         |
| 6      | 为提升查询性能，创建二级索引或者删除二级索引。                                                                                                          | 请参见[创建HBase表二级索引](https://support.huaweicloud.com/devg3-mrs/mrs_07_290023.html)和[基于二级索引查询HBase表数据](https://support.huaweicloud.com/devg3-mrs/mrs_07_290025.html)。 |
| 7      | 用户销户，删除用户信息表中该用户的数据。                                                                                                             | 请参见[删除HBase表数据](https://support.huaweicloud.com/devg3-mrs/mrs_07_290019.html)。                                                                                    |
| 8      | A业务结束后，删除用户信息表。                                                                                                                  | 请参见[删除HBase表](https://support.huaweicloud.com/devg3-mrs/mrs_07_290016.html)。                                                                                      |
   
#### 关键设计原则
HBase是以RowKey为字典排序的分布式数据库系统，RowKey的设计对性能影响很大，具体的RowKey设计请考虑与业务结合。
