• API接收地址
  • API返回内容
  • 创建数据仓库
  • 创建序列
  • 数据查询
  • 根据名称查询数据仓库信息
  • 查询所有数据仓库信息
  • 查询某个数据仓库下所有序列信息
  • 更新数据仓库的meta data
  • 删除数据仓库的meta data
  • 删除数据仓库
  • 更新序列的meta data
  • 删除序列的meta data
  • 删除序列
  • 错误代码及相关说明

    API接收地址

    1. https://tsdb.qiniu.com

    API返回内容

    响应报文

    • 如果请求成功,返回HTTP状态码200:
    1. HTTP/1.1 200 OK
    • 如果请求失败,返回包含如下内容的JSON字符串(已格式化,便于阅读):
    1. {
    2. "error": "<errMsg string>"
    3. }
    • 如果请求包含数据获取,则返回相应数据的JSON字符串;

    创建数据仓库

    请求语法

    1. POST /v4/repos/<RepoName>
    2. Content-Type: application/json
    3. Authorization: Pandora <auth>
    4. {
    5. "region": <Region>,
    6. "metadata":{
    7. "key1":"value1",
    8. ...
    9. }
    10. }

    请求内容

    参数 类型 必填 说明
    RepoName string 数据仓库名称,用来标识该数据仓库的唯一性;
    命名规则: ^[a-zA-Z_][a-zA-Z0-9_]{0,127}$
    region string 所属区域,计算与存储所使用的物理资源所在区域,目前支持华东(代号nb);
    此参数是为了降低用户传输数据的成本,应当尽量选择离自己数据源较近的区域
    metadata map 备注信息
    metadata.key string 备注信息标题;
    命名规则:^[a-zA-Z_][a-zA-Z0-9_]{0,127}$
    metadata.value string 备注信息内容,1-500个字符长度

    示例

    1. curl -X POST https://tsdb.qiniu.com/v4/repos/test_repo \
    2. -H 'Content-Type: application/json' \
    3. -H 'Authorization: Pandora 2J1e7iG13J66GA8vWBzZdF-UR_d1MF-kacOdUUS4:NTi3wH_WlGxYOnXsvgUrO4XMD6Y=' \
    4. -d '{
    5. "region": "nb",
    6. "metadata":{
    7. "info":"this repo is be for the use of test"
    8. }
    9. }'

    创建序列

    请求语法

    1. POST /v4/repos/<RepoName>/series/<SeriesName>
    2. Content-Type: application/json
    3. Authorization: Pandora <auth>
    4. {
    5. "retention": <Retention>,
    6. "metadata": {
    7. "key": "value",
    8. ...
    9. }
    10. }

    请求内容

    参数 类型 必填 说明
    RepoName string 所属数据仓库名称
    SeriesName string 序列名称,用来标识该序列的唯一性;
    命名规则: ^[a-zA-Z_][a-zA-Z0-9_]{0,127}$
    retention string 数据存储时限,目前支持:1d - 30d,1-30天
    metadata string 备注信息

    示例

    1. curl -X POST https://tsdb.qiniu.com/v4/repos/test_repo/series/test_series \
    2. -H 'Content-Type: application/json' \
    3. -H 'Authorization: Pandora 2J1e7iG13J66GA8vWBzZdF-UR_d1MF-kacOdUUS4:NTi3wH_WlGxYOnXsvgUrO4XMD6Y=' \
    4. {
    5. "retention": "1d",
    6. "metadata": {
    7. "author": "Lynk Lee"
    8. }
    9. }

    数据查询

    请求语法

    1. GET /v4/repos/<RepoName>/query?q=<Sql>[&timezone=<TimeZone>]
    2. Authorization: Pandora <auth>

    or

    1. POST /v4/repos/<RepoName>/query[?timezone=<TimeZone>]
    2. Content-Type: application/json
    3. Authorization: Pandora <auth>
    4. {
    5. "sql" : <Sql>
    6. }

    or

    1. POST /v4/repos/<RepoName>/query[?timezone=<TimeZone>]
    2. Content-Type: text/plain
    3. Authorization: Pandora <auth>
    4. <Sql>

    请求内容

    • 查询默认时区为+00或者-00,即utc

    • 存储在tsdb中的数据的时间戳都是UTC时间,timezone参数用于指定查询者所在的时区相对UTC时间的偏移量

    • TimeZone取值范围为[-12, +14],表示与utc时区的偏移量,如东八区(中国)应写成+08,会将查询范围整体加上8小时,西五区应该写成-05,查询范围的时间则被减去5小时。

    举例说明:

    1466510400000000000是UTC时间2016-06-21 12:00:00,和东八区时间2016-06-21 20:00:00unixnano表示

    1. select value from cpu where time > '2016-06-21T12:00:00Z'

    当以上查询语句的timezone参数为+08的时候,该sql语句能够检索的数据的时间范围为

    (2016-06-21 04:00:00 UTC,当前时间)

    当以上查询语句的timezone参数为+00的时候,该sql语句能够检索的数据的时间范围为

    ('2016-06-21 12:00:00 UTC', 当前时间]

    当写入的数据点的时间戳为1466510400000000000的时候,如果想要查到该点,可以

    1. select value from cpu where time = '2016-06-21T12:00:00Z' //timezone=0

    或者

    1. select value from cpu where time = '2016-06-21T20:00:00Z' //timezone=8

    响应报文

    1. 200OK
    2. type QueryRet struct {
    3. Results []Result `json:"results,omitempty"`
    4. }
    5. type Result struct {
    6. Series []Serie `json:"series,omitempty"`
    7. }
    8. type Serie struct {
    9. Name string `json:"name,omitempty"`
    10. Tags map[string]string `json:"tags,omitempty"`
    11. Columns []string `json:"columns,omitempty"`
    12. Values [][]interface{} `json:"values,omitempty"`
    13. }

    以上是tsdb返回的结果序列化之前的结构体

    • 每个QueryRet对应的是一个请求返回的结果
    • QueryRet中每个Result对应一条sql的查询结果
    • Result中的每个Series对应一个tagSet的结果,即Result每有一个不同的tags组合,就会有一个Serie的结果添加到Result.Seires这个slice

    一个简单的查询,如SELECT value FROM cpu_load_short WHERE region='us-west'结果类似如下json字符串:

    1. {
    2. "results": [
    3. {
    4. "series": [
    5. {
    6. "name": "cpu_load_short",
    7. "columns": [
    8. "time",
    9. "value"
    10. ],
    11. "values": [
    12. [
    13. "2015-01-29T21:55:43.702900257Z",
    14. 0.55
    15. ],
    16. [
    17. "2015-01-29T21:55:43.702900257Z",
    18. 23422
    19. ],
    20. [
    21. "2015-06-11T20:46:02Z",
    22. 0.64
    23. ]
    24. ]
    25. }
    26. ]
    27. }
    28. ]
    29. }

    根据名称查询数据仓库信息

    请求语法

    1. GET /v4/repos/<RepoName>
    2. Authorization: Pandora <auth>

    响应报文

    1. 200 OK
    2. Content-Type: application/json
    3. {
    4. "name": <RepoName>,
    5. "region": <Region>,
    6. "metadata": <Metadata>,
    7. "createTime": <CreateTime>,
    8. "deleting": <"true"|"false">
    9. }
    • 如果请求成功,且没有数据,则返回一个空列表:
    1. 200 OK
    2. Content-Type: application/json
    3. [ ]

    响应内容

    参数 类型 必填 说明
    createTime string - 创建时间
    deleting string - 该repo是否处在删除中状态,返回true or false

    查询所有数据仓库信息

    请求语法

    1. GET /v4/repos
    2. Authorization: Pandora <auth>

    响应报文

    1. 200 OK
    2. Content-Type: application/json
    3. [
    4. {
    5. "name": <RepoName>,
    6. "region": <Region>,
    7. "metadata": <Metadata>,
    8. "createTime": <CreateTime>,
    9. "deleting": <"true"|"false">
    10. },
    11. ...
    12. ]
    • 如果请求成功,且没有数据,则返回一个空列表:
    1. 200 OK
    2. Content-Type: application/json
    3. [ ]

    查询某个数据仓库下所有序列信息

    请求语法

    1. GET /v4/repos/<RepoName>/series[?showMeta=<true|false>]
    2. Authorization: Pandora <auth>

    请求内容

    参数 类型 必填 说明
    RepoName string 数据仓库名称
    showMeta bool 是否显示备注信息,true or false

    响应报文

    1. 200 OK
    2. Content-Type: application/json
    3. [
    4. {
    5. "name": <SeriesName>,
    6. "retention": <Retention>,
    7. "metadata": <Metadata>,
    8. "createTime": <CreateTime>,
    9. "type":<Type>,
    10. "deleting": <"true"|"false">
    11. },
    12. ...
    13. ]
    • 如果请求成功,且没有数据,则返回一个空列表:
    1. 200 OK
    2. Content-Type: application/json
    3. [ ]

    响应内容

    参数 类型 必填 说明
    seriesName string - 序列名称
    retention string - 存储时限
    createTime string - 创建时间
    type string - 创建类型,为1是表示这个序列由用户直接创建,默认为1
    deleting string - 是否在删除中
    metadata string - 备注信息

    更新数据仓库的meta data

    请求语法

    1. POST /v4/repos/<RepoName>/meta
    2. Content-Type: application/json
    3. Authorization: Pandora <auth>
    4. {
    5. "metadata": {
    6. "key1":"value1",
    7. ...
    8. }
    9. }

    请求内容

    参数 类型 必填 说明
    RepoName string 数据仓库名称
    metadata string 备注信息
    key string 备注信息标题
    value string 备注信息内容

    示例

    1. curl -X POST https://tsdb.qiniu.com/v4/repos/test_repo/meta \
    2. -H 'Content-Type: application/json \
    3. -H 'Authorization: Pandora 2J1e7iG13J66GA8vWBzZdF-UR_d1MF-kacOdUUS4:NTi3wH_WlGxYOnXsvgUrO4XMD6Y=' \
    4. -d '{
    5. "metadata": {
    6. "author":"Lynk Lee"
    7. }
    8. }'

    删除数据仓库的meta data

    请求语法

    1. DELETE /v4/repos/<RepoName>/meta
    2. Authorization: Pandora <auth>

    删除数据仓库

    请求语法

    1. DELETE /v4/repos/<RepoName>
    2. Authorization: Pandora <auth>

    更新序列的meta data

    请求语法

    1. POST /v4/repos/<RepoName>/series/<SeriesName>/meta
    2. Content-Type: application/json
    3. Authorization: Pandora <auth>
    4. {
    5. "metadata": <Metadata>
    6. }

    请求内容

    参数 类型 必填 说明
    RepoName string 所属数据仓库名称
    SeriesName string 序列名称
    metadata string 备注信息

    删除序列的meta data

    请求语法

    1. DELETE /v4/repos/<RepoName>/series/<SeriesName>/meta
    2. Authorization: Pandora <auth>

    删除序列

    请求语法

    1. DELETE /v4/repos/<RepoName>/series/<SeriesName>
    2. Authorization: Pandora <auth>

    错误代码及相关说明

    创建、管理相关接口报错

    http code error message 说明
    500 E9001: server internal error 服务器内部错误,请联系管理员解决
    400 E6000: Request data format not supplied as expected 传入的body格式不对
    404 E6004: The request resource not found 请求的资源不存在。
    401 bad token 鉴权不通过 、token已过期、机器时间未同步

    仓库(Repo)层错误

    http code error message 说明
    400 E6100: RepoName is limited between 1 and 128 characters, which the first charactor must be a letter and the others are letters, numbers and underlines! 数据仓库名称格式错误
    400 E6101: Region should not be empty! 创建数据仓库时需要加上所属区域字段。
    400 E6102: RepoName already exists, please use a new RepoName! 该数据仓库已经存在。
    400 E6103: Region does not exist! 所属区域参数错误。
    400 E6106: Resouce of the RepoName is in process of deleting, please wait a moment 该数据仓库正在被删除中。
    409 E6110: Repo is currently modifying, please wait a moment 该数据仓库正在被修改,需要等待。

    序列(Series)层错误

    http code error message 说明
    404 E6205: Retention does not exists 存储时限参数错误
    400 E6300: Series name is limited between 1 and 128 characters, which the first character must be a letter and the others are letters, numbers and underlines! 序列名字格式错误
    400 E6301: Series name contains key words, please rename! 序列命名时用到了关键字,请重新创建。
    409 E6302: Series already exists 该序列已经存在
    404 E6303 Series does not exist 该序列不存在
    400 E6305: Series is in process of deleting, please wait a moment 该序列正在删除中
    409 E6307: Series is currently modifying, please wait a moment 该序列正在被修改
    400 E6308: Max Series number exceeded 序列创建已达上限

    查询语句相关

    http code error message 说明
    400 E7200: Invalid sql sql语句不合法,出错原因: \
    400 E7202: Invalid time zone 时区设置错误
    400 E7204: Query execution was interrupted, max execute time exceeded 查询时间执行过长。
    400 E7212: Execute Sql error 执行sql出错,出错原因: \
    500 E9002: executor query chan closed without result error 查询语句被中断