<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 4803字,需瀏覽 10分鐘

           ·

          2022-10-24 20:09

          Go driver SDK for databend cloud released!

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

          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 方法來解析出單條數(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

          當然可以用 Next 來不斷迭代獲取所有數(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)
          }

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

          bendsql 嘗鮮 go driver

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

          來看看效果:

          kruise-tools

          本周 kubectl-kruise 插件迎來了一次更新[6],包含了兩個 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 是開源之夏的一個項目,主要是用來方便用戶生成 resourceDistrubution 資源的,關(guān)于 resouceDistribution[7] 和這個 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
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  午夜激情网 | 国产精品一久久 | 青娱乐亚洲精品视频在线观看 | 久久综合新金瓶梅一级黄大片 | 99青草在线免费观看视频 |