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

關于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條評論
主站蜘蛛池模板: 久久婷婷午色综合夜啪 | 最新日本免费一区二区三区中文 | 国产精品一区视频 | 99热久久精品首页 | 久久一区视频 | 欧美肥老妇做爰视频 | 久久精品一区二区国产 | 99热最新网址获取 | 欧美特级毛片aaaa | 99久久免费精品国产免费高清 | 女人国产香蕉久久精品 | 99国产精品欧美久久久久久影院 | 欧美另类亚洲 | 亚洲一区天堂 | 国产亚洲精品线观看77 | 国产性大片黄在线观看在线放 | 欧美精品 日韩 | 久青草国产在视频在线观看 | 欧美一级特黄特黄毛片 | 久热中文字幕在线观看 | 欧洲成人在线视频 | 麻豆久久精品免费看国产 | 久久久精品波多野结衣 | 色婷婷久久久swag精品 | 97色在线播放 | 在线看一区二区 | 日本免费不卡视频一区二区三区 | 乡下女色又黄一级毛片 | 免费中文字幕在线 | 免费视频一区二区性色 | 欧美精品亚洲人成在线观看 | 国产精品视频分类一区 | 91免费国产高清观看 | 久久精品这里热有精品 | 久久的爱久久的你 | 日韩你懂得 | 国产国语一级a毛片高清视频 | 一级毛片免费网站 | 免费一级毛片不卡不收费 | 免费一级特黄特色黄大任片 | 国产免费专区 |