首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用两列匹配Google BigTable数据

使用两列匹配Google BigTable数据
EN

Stack Overflow用户
提问于 2020-01-03 22:04:25
回答 1查看 605关注 0票数 1

我们需要将天气预报数据存储在数据库中,这样就可以从API中按经纬度查询天气预报数据。

预测数据本身就是一个GRIB2文件,它是一种具有多个波段的地理参考栅格格式。GRIB2文件可以转换为csv,这会导致文件大小增加20-40倍。如果将csv存储在数据库中,则数据大约为35 If,并包含以下列:

代码语言:javascript
复制
0,rt,timestamp
1,vt,timestamp
2,param,string
3,level,string
4,lon,float
5,lat,float
6,value,float

这些数据每小时都会发生变化,需要重新输入数据库。这意味着,在任何情况下,摄入食物的时间都不能超过一个小时(最好是短得多)。

除此之外,30天前的预测数据必须存储在另一个数据库表(或多个表)中,并且还可以通过API进行查询。30天-价值720小时的预测数据,摄入量为720 *35 TB = 25.2 TB。每小时都必须删除721小时,并将数据从最新的预测表传输到归档表。

我研究过多种管理的谷歌数据库解决方案(BigQuery、Cloud、Datastore、BigTable)。到目前为止,BigTable定价结构似乎最适合这个API的目的。

但是,我似乎不能按列值查询数据,更不用说用两个列值(纬度和经度)查询数据了。是这种情况吗?是否有任何方法来构造数据以克服这一限制?如果是这样,我将如何查询?

如果BigTable是该工作的错误工具,我希望能推荐一种更合适的服务。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-06 09:31:28

您想要做的事情是可能的,但是,您必须记住两个主要的BigTable密钥行设计的限制

  1. 每个表只有一个索引,即行键。没有次级指数。
  2. 行按行键进行排序和查询,从最低字节字符串到最高字节字符串。行键按大端或网络字节顺序排序,即相当于字母顺序的二进制顺序。

根据您的查询,您将有一个DB设计或另一个,您将不得不在设计和查询之间找到一个折衷方案。

在这种情况下,您必须将(纬度、经度)映射到单个键,主要可以这样做:

  • 将纬度连接到高度:键行:longitude#latitude.
    • 同一经度上的相似纬度被储存在一起。

  • 连接高度到纬度:键行:latitude#longitude
    • 在相同的高度上,相似的经度储存在一起。

  • 存储在附近的地方:称为空格填充函数:键行:Integer

一个包含30天数据的表示例,其中包含一个惟一的列stats (来自Cloud ):

代码语言:javascript
复制
cbt createinstance my-instance "My instance" my-instance-c1 europe-west1-b 3 SSD
cbt createtable weather-ts "families=stats:maxage=30d||maxversions=31"

将值设置为CSV(所有字符串)到键123123:

代码语言:javascript
复制
cbt set weather-ts 123123 stats:value='FIRST_CSV'
cbt set weather-ts 123123 stats:value='SECOND_CSV'

请参阅所存储的值:

代码语言:javascript
复制
cbt read  weather-ts

我的产出:

代码语言:javascript
复制
2020/01/06 10:29:37 -creds flag unset, will use gcloud credential
----------------------------------------
123123
  stats:value                              @ 2020/01/06-10:29:35.093000
    "SECOND_CSV"
  stats:value                              @ 2020/01/06-10:29:33.224000
    "FIRST_CSV"
----------------------------------------

Bigtable 自动压缩文本因此总的存储使用量可能比您预期的要少。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59585902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档