1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        新領(lǐng)域的輪子和一些想法

        共 4803字,需瀏覽 10分鐘

         ·

        2022-10-24 20:09

        Go driver SDK for databend cloud released!

        由于在 databend cloud[1] 各個(gè)項(xiàng)目的代碼中已經(jīng)充斥著大量重復(fù)的請(qǐng)求 databend-query 的代碼,所以亟需一個(gè) driver SDK 來(lái)實(shí)現(xiàn)大一統(tǒng),于是在幾周前就開(kāi)始著手實(shí)現(xiàn) databend cloud 的 go driver,當(dāng)時(shí)用比較短的時(shí)間大概實(shí)現(xiàn)了一個(gè)架子,詳情可以見(jiàn) 這篇文章[2]。礙于中間有幾個(gè)優(yōu)先級(jí)比較高的工作就暫時(shí)擱置了這個(gè)項(xiàng)目。本周 all in 這個(gè)項(xiàng)目,終于 release 了 v0.0.1 版本[3],雖然代碼的結(jié)構(gòu)、功能的豐富程度、代碼的優(yōu)雅程度都跟標(biāo)桿 SDK - clickhouse-go[4] 的水平有較大差距,但基本的方法比如 sql.Open, Exec, Query, Next, Rows 等都已經(jīng)可用。先來(lái)看幾個(gè)??吧!

        Execution

            dsn, cfg, err := getDSN()
            if err != nil {
            log.Fatalf("failed to create DSN from Config: %v, err: %v", cfg, err)
                }
          conn, err := sql.Open("databend", dsn)
            if err != nil {
                return err
             }
            conn.Exec(`DROP TABLE IF EXISTS data`)
            _, err = conn.Exec(`
            CREATE TABLE IF NOT EXISTS  data(
                Col1 UInt8,
                Col2 String
            ) 
            `
        )
            if err != nil {
                return err
            }
            _, err = conn.Exec("INSERT INTO data VALUES (1, 'test-1')")

        Query Row

        可以用 Scan 方法來(lái)解析出單條數(shù)據(jù)

        row := conn.QueryRow("SELECT * FROM data")
        var (
            col1             uint8
            col2, col3, col4 string
            col5            []string
            col6             time.Time
        )
        if err := row.Scan(&col1, &col2, &col3, &col4, &col5, &col6); err != nil {
            return err
        }

        Query Rows

        當(dāng)然可以用 Next 來(lái)不斷迭代獲取所有數(shù)據(jù)

        row := conn.QueryRow("SELECT * FROM data")
        var (
            col1             uint8
            col2, col3, col4 string
            col5            []string
            col6             time.Time
        )
        for rows.Next() {
            if err := row.Scan(&col1, &col2, &col3, &col4, &col5, &col6); err != nil {
            return err
            }
            fmt.Printf("row: col1=%d, col2=%s, col3=%s, col4=%s, col5=%v, col6=%v\n", col1, col2, col3, col4, col5, col6)
        }

        這樣在請(qǐng)求 databend-query 的時(shí)候,就不用再每次都寫一遍 http 請(qǐng)求/解析的代碼啦。由于之前從未寫過(guò)這類項(xiàng)目,也算是一個(gè)小小的挑戰(zhàn),so 代碼目前處于毛坯房的狀態(tài)需要進(jìn)一步打磨 Emma。

        bendsql 嘗鮮 go driver

        Go driver release 后馬上就迎來(lái)了第一個(gè)用戶(小白鼠) - bendsql[5]。bendsql 中有個(gè)命令用來(lái)執(zhí)行 SQL 語(yǔ)句, bendsql query "select * from table",所以我先將這里面請(qǐng)求 databend-query 的代碼都換成了 go driver - https://github.com/databendcloud/bendsql/pull/22,可以看到刪掉了不少代碼,清晰了不少。接下來(lái)要在其他項(xiàng)目中接受檢驗(yàn)了??。

        來(lái)看看效果:

        kruise-tools

        本周 kubectl-kruise 插件迎來(lái)了一次更新[6],包含了兩個(gè) bug-fix 和新的 feature:

        ?? Bug fix:

        • Fix rollout status of partitioned update https://github.com/openkruise/kruise-tools/pull/68
        • Fix ads patch for rollout undo https://github.com/openkruise/kruise-tools/pull/71

        ?? Feat:

        • Support kubectl-kruise create ContainerRecreateRequest https://github.com/openkruise/kruise-tools/pull/66
        • Add resourcedistribution generator https://github.com/openkruise/kruise-tools/pull/69. Thanks @dong4325

        其中 resourcedistribution generator 是開(kāi)源之夏的一個(gè)項(xiàng)目,主要是用來(lái)方便用戶生成 resourceDistrubution 資源的,關(guān)于 resouceDistribution[7] 和這個(gè) generator 后面等功能穩(wěn)定后再多做介紹。

        好了,以上,感興趣的可以閱讀原文了解更多。

        參考資料

        [1]

        databend cloud: https://app.databend.com/

        [2]

        36-weekly-report: https://cloudsjhan.github.io/2022/09/02/2022-36-Open-source-weekly-report/

        [3]

        github databend-go: https://github.com/databendcloud/databend-go

        [4]

        github clickhouse-go: https://github.com/ClickHouse/clickhouse-go

        [5]

        github bendsql: https://github.com/databendcloud/bendsql

        [6]

        kruise-tool release: https://github.com/openkruise/kruise-tools/releases/tag/v1.0.5

        [7]

        resourceDistribution docs: https://openkruise.io/docs/user-manuals/resourcedistribution

        瀏覽 70
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            免费看男人撒尿露jiji | 亚洲九九中文字幕 | 欧美男男激情视频 | 国产免费91 | 性欧美精品动漫片 | 囯产精品久久77777免费影视 | 成人精品电影久久 | 波多野吉衣一区二区三区 | 人人超碰日摸在线观看熟女 | 操熟女的逼 |