溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Rust nom實(shí)現(xiàn)的mysql binlog解析工具怎么用

發(fā)布時(shí)間:2021-10-25 09:16:28 來(lái)源:億速云 閱讀:204 作者:柒染 欄目:大數(shù)據(jù)

Rust nom實(shí)現(xiàn)的mysql binlog解析工具怎么用,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

說(shuō)實(shí)話, 用 nom 解析二進(jìn)制文件比解析文本還要簡(jiǎn)單, 因?yàn)樘茁泛凸ぞ叨挤浅G宄?,讓?xiàng)目進(jìn)展緩慢的原因是 MySQL binlog 的文檔有點(diǎn)坑, 某些說(shuō)明和 mysqlbinglog 工具解析出來(lái)的不一致,我只能嘗試找別的已實(shí)現(xiàn)的 MySQL binlog 項(xiàng)目參考, 具體到某個(gè)字段時(shí)這些項(xiàng)目都不是很完整。迫不得已,只能去查看 mysql-server 的源碼, 憑借我 hello world 級(jí)別的 c++ 連蒙帶猜地嘗試把所有字段都解析出來(lái)。但某些字段過(guò)于復(fù)雜或不是很重要, 我就暫時(shí)把它們放在一邊。

這里不得不吐槽下,為了實(shí)現(xiàn)這個(gè)項(xiàng)目我看過(guò) c++,c,Java,Go,Python 這五個(gè)語(yǔ)言的類似實(shí)現(xiàn), c++一堆符號(hào),但還是能看懂意思;c因?yàn)楸憩F(xiàn)力不夠,代碼有些繁瑣;Java 是真啰嗦, 一個(gè)方法里只寫一行,那一行還是掉別的函數(shù)~;Go 看都不想看;Python 表現(xiàn)能力不錯(cuò),但可能是作者的問(wèn)題,代碼有些亂。
當(dāng)然,我的代碼也沒好到哪里去:(,為了快就用了一個(gè)大enum表示所有事件,可能很快就要重構(gòu)一次,但這是人的問(wèn)題,論表現(xiàn)能力,Rust是靜態(tài)語(yǔ)言里獨(dú)一檔的。
因?yàn)闀r(shí)間有限,所以測(cè)試用例還不是很完善,如果測(cè)試時(shí)遇到問(wèn)題可以給我提Issue,最好能附上當(dāng)時(shí)的binlog文件,幫助我豐富測(cè)試用例。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI