亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

關于Cassandra與Thrift在int/text/varint上的曖

系統 2050 0

近期簡單寫了一個基于Cassandra/C++的日志緩存,雖然是Nosql,但是在實際應用中,還是期望能有部分的臨時CQL統計 或+-*/可以支持

所以在針對部分字段入庫時,選擇了作為整形錄入,于是麻煩就來了。

1,第一個碰到的是?Not enough bytes to read value of component 0

? ? 經過百般測試發現在建表時的WITH COMPACT STORAGE干擾最大。當去掉該語句時,Thrift程序寫入會報錯,cql執行會通過。翻閱官網HANDBOOK后發現,

也許是出于節省磁盤空間的出發點,在2.0以后cql界面建表不再自帶該參數,cli界面建表自動帶上該參數。

根據官網解釋,如果是復合主鍵的Column記錄一起存儲(或者說是打包存儲),獨立在外的Column記錄單獨存儲(或者說是散列存儲)。

話說回來,不管哪種DB,復合KEY用多了性能都會下降,同時有違P2P精神,也無法體現出cas強大的隨機寫。

2,第二個碰到的是?Exception: Default TException. ?[Expected 4 or 0 byte int (1)]

? ? 惡心的事情來了:

? ? 正常建表全Column都是text,程序負責外部擦屁股,Thrift和cas之間相安無事。

? ? 某Column設定為int,cas的cql正常使用,但Thrift開始跟你搞了,報這個錯給你看。

按cas源碼column定義為:

?

97 std::string name;
98 std::string value;
99 int64_t timestamp;
100 int32_t ttl;

按thrift源碼column定義為:

71 struct Column {
72 1: required binary name,
73 2: optional binary value,
74 3: optional i64 timestamp,
75 4: optional i32 ttl,
76 }

也就是string 轉 binary有thrift完成,這一轉轉出一些道道:

但我們這樣去寫時會報錯

sstemp.clear();
sstemp<<i;
sstemp>>key;

c.name="age";
c.value=i;
cass.insert(key,cparent,c,ConsistencyLevel::ONE);

?

改成這樣去寫

sstemp.clear();
sstemp<<i;
sstemp>>key;

c.name="age";
c.value="0021"; //必須4個字符
cass.insert(key,cparent,c,ConsistencyLevel::ONE);

雖然寫進去了,但是新問題出現了,轉就老老實實轉,偏偏對字節進行了拆分補位。。。。

關于Cassandra與Thrift在int/text/varint上的曖昧

這就沒法看了,那為什么會這樣?將808464945放到calc中看一下,發現高位4bit被補了0011

關于Cassandra與Thrift在int/text/varint上的曖昧

也就是 0011 0000 0011 0000 0011 0010 0011 0001

如果按初始值就是? 0011 0000? 0011 0000? 0011 0000? 0011 0000 按照 2^N SUM,初始值變為了808464432。

繼續翻了thrift源碼【/root/soft/thrift-0.9.1/lib/cpp/src/thrift/transport】好久,無果,放棄。

這樣做意味著寫的時候被搞了一把,讀的時候,還的再搞一把,而且只能4個字節或者0字節,也就是程序只能寫0~9999的整數。這樣做顯然不合適。

由于insert的源碼寫的很清楚了,都是封裝的對象,不再會有第二種insert 所以,嘗試了cas的另外一個datatype:varint

官網解釋:精度整形 varint。

依舊是這套寫代碼,但是value我們不做string ,直接改int賦給string,于是,果然各種強。

關于Cassandra與Thrift在int/text/varint上的曖昧

?

至此,搞定了兩大數據類型text和int,雖然還是有不少問題有待查證,但是應付一個TASK也算馬馬虎虎了。 ?

?PS:環境?cqlsh 4.1.0 | Cassandra 2.0.2 | CQL spec 3.1.1 | Thrift protocol 19.38.0?

關于Cassandra與Thrift在int/text/varint上的曖昧


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久国产精品网 | 亚洲狠狠婷婷综合久久久久网站 | 亚洲第一黄色网址 | 亚洲一区二区三区四区热压胶 | 9久9久女女热精品视频免费观看 | 午夜免费福利社 | 国产日韩欧美在线观看免费视频 | 香蕉视频国产在线观看 | 成人 日韩 在线 | 极品粉嫩粉嫩福利视频在线 | 黄色片网站大全 | 中文字幕精品久久 | 97色资源| 久久精品最新免费国产成人 | 久久久高清免费视频 | 欧美 亚洲 另类 热图 | 中文字幕日韩精品一区口 | 国产一区在线mmai | 青草九九| 一级毛片在线免费观看 | 国产一国产一级毛片视频在线 | 欧美色视频日本片免费高清 | 337p亚洲精品色噜噜狠狠 | 亚洲综合亚洲综合网成人 | 综合在线播放 | 免费观看国产网址你懂的 | 麻豆久久精品免费看国产 | 久久午夜综合久久 | 亚洲图片色图 | 亚洲在线播放视频 | 精品一区二区三区在线播放 | 色吧综合| 91精品国产欧美一区二区 | 四虎com | 伊人黄色 | 蜜桃久久久久久久久久久 | 美女牲交视频一级毛片 | 99免费在线观看视频 | 日韩久久一区二区三区 | 99精品国产在热久久 | 日日射天天干 |