tsdb数据膨胀

460M 的 csv 文本,采用相同的 schema ,导入到 olap 引擎库时,库体积为 107M,但是导入到 tadb 引擎库时,库体积却膨胀到 1.5G,为什么会这样?有没有办法让 tsdb 存储的压缩率接近 olap ?


具体建表语句如下



//准备表结构
tbSchema=extractTextSchema(fileDir + fileNames["filename"][0], "\t")
update tbSchema set type="SYMBOL" where name in `datasetCode`reporterCode`partnerCode`partner2Code
update tbSchema set type="BOOL" where name in `isOriginalClassification`isQtyEstimated`isAltQtyEstimated`isNetWgtEstimated`isGrossWgtEstimated`isReported`isAggregate
update tbSchema set type="CHAR" where name in `legacyEstimationFlag
update tbSchema set type="SHORT" where name in `refYear`refMonth`period`mosCode`motCode

// 创建分布式数据库
tmpTB=loadText(filename=dataFilePath, delimiter="\t", schema=tbSchema)
// TSDB
dbTSDB=database("dfs://comTradeTSDB", VALUE, `01`02, , engine="TSDB", atomic="TRANS")
ptTSDB=dbTSDB.createPartitionedTable(tmpTB, `commodity, `cmdCode, , sortColumns=`reporterCode`partnerCode`flowCode`refYear`refMonth`period`freqCode`refPeriodId, keepDuplicates=LAST)
ptTSDB.append!(tmpTB)
flushTSDBCache()
// OLAP
db=database("dfs://comTrade", VALUE, `01`02, , engine="OLAP", atomic="TRANS")
pt=db.createPartitionedTable(tmpTB, `commodity, `cmdCode)
pt.append!(tmpTB)
flushOLAPCache()

请先 登录 后评论

1 个回答

wfHuang

sortColumns=`reporterCode`partnerCode`flowCode`refYear`refMonth`period`freqCode`refPeriodId

设置的排序列不合理,每个sortKey(`reporterCode`partnerCode`flowCode`refYear`refMonth`period`freqCode`) 会对每个列创建元信息,比如列的sum. max, count, min,nullcount值,因此如果每个key数据只有几条,就会出现元数据比数据本身还大的情况。

对于sortKey的建议:

  1. 使用查询中常用的实体ID,比如股票ID
  2. 关系型数据库中的主键字段并不适合做为sortKey

上述场景,可尝试使用`reporterCode`refPeriodId做为sortColumns

请先 登录 后评论
  • 1 关注
  • 0 收藏,809 浏览
  • petey 提出于 2023-05-25 10:05