Google cloud platform 使用两列匹配Google BigTable数据

Google cloud platform 使用两列匹配Google BigTable数据,google-cloud-platform,google-cloud-bigtable,bigtable,Google Cloud Platform,Google Cloud Bigtable,Bigtable,我们需要将天气预报数据存储在数据库中,以便通过API按纬度/经度进行查询 预测数据本机以GRIB2文件的形式提供,这是一种具有多个波段的地理参考光栅格式。 GRIB2文件可以转换为csv,从而使文件大小增加20-40倍。 如果将csv存储在数据库中,数据约为35GB,并包含以下列: 0,rt,timestamp 1,vt,timestamp 2,param,string 3,level,string 4,lon,float 5,lat,float 6,value,float 此数据将每小时更改

我们需要将天气预报数据存储在数据库中,以便通过API按纬度/经度进行查询

预测数据本机以GRIB2文件的形式提供,这是一种具有多个波段的地理参考光栅格式。 GRIB2文件可以转换为csv,从而使文件大小增加20-40倍。 如果将csv存储在数据库中,数据约为35GB,并包含以下列:

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*35gb=25.2 TB。 每小时必须删除最早的721小时,并将数据从最新预测表传输到存档表

我研究了多种托管google数据库解决方案(BigQuery、云扳手、数据存储、BigTable)。 到目前为止,BigTable定价结构似乎最适合此API

但是,我似乎无法按列值查询数据,更不用说按两列值(纬度和经度)查询了。是这样吗?是否有任何方法来构造数据以绕过此限制?如果是,我将如何查询


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

你想做的是可能的,但是,你必须记住两个主要方面:

  • 每个表只有一个索引,即行键。没有第二个 指数
  • 行按行键按字典顺序从低到低排序和查询 最高字节字符串。行键按big-endian或network排序, 字节顺序,相当于字母顺序的二进制
  • 根据您的查询,您将有一个或另一个DB设计,您必须在设计和查询之间找到一个折衷方案

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

    • 将纬度连接到高度:关键行:经度#纬度
      • 相同经度上的相似纬度存储在一起
    • 将高度连接到纬度:关键行:纬度#经度
      • 相同高度上的相似经度存储在一起
    • 存储在附近的位置:称为空格填充函数:键行:Integer
      • 有关它的信息可以在
    包含30天数据的表格示例,其中包含唯一列
    stats
    (来自Cloud Shell):

    cbt createinstance我的实例“我的实例”my-instance-c1 europe-west1-b 3 SSD
    cbt createtable weather ts“families=stats:maxage=30d | | maxversions=31”
    
    将值设置为键123123的CSV(所有字符串):

    cbt设置天气ts 123123统计:value='FIRST\u CSV'
    cbt设置天气ts 123123统计信息:value='SECOND\u CSV'
    
    请参阅存储的值:

    cbt读取天气ts
    
    我的输出:

    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,因此总存储使用量可能会低于您的预期。

    您能否分享有关要对这些数据执行的查询类型的更多详细信息?考虑到您的案例,BigTable似乎是正确的工具,因为它具有惊人的吸收速度,但是您需要仔细设计表和索引,使其真正强大。我也看到了使用BigQuery的可能性,如果您不需要公开真正的旧数据,但只想保留它们以供分析,那么您也可以使用它的数据过期功能使数据在一段时间后消失。