2017-03-21 84 views
0

我有一个用例,其中我从客户端在JSON的运行时接收属性。Cassandra blob性能

e.g

  • { ..., "pname" : "country", "value" : "USA", "ptype" : "String" }

  • { ..., "pname" : "gdp", "value" : 7.4 , "ptype" : "double"}

Accourding我的使用情况下,我申请上有 "ptype" = "double"int行总和,最小值,最大值函数。

我在Cassandra桌子下面使用了这个来将我的上面的请求映射到cassandra桌子。

create table IF NOT EXISTS kspace.count_table 
    (source_id bigint, name varchar, date text, pname varchar, ptype varchar, pvalue blob, 
    count counter,unique_count counter, PRIMARY 
    KEY((source_id,name,pname,ptype,date),pvalue)) 

我已经使用pvalue作为团块因为我接收在运行时间从客户端不同的数据类型的属性。

我的问题是,根据我的使用情况使用blob是好主意,还是应该使用String而不是blob,而不是根据类型分析每个blob。

回答

0

是的。是个好主意。

您可以在blob字段中插入ascii,bigint,boolean,decimal,double,float,inet,int,timestamp,timeuuid,uuid,varchar,varint。

将double或int作为blob插入是有效的,int只需要32位,double只需要64位。如果您使用ascii,则每个字符将占用8位,如果插入整数最大值(2147483647),则会占用80位。