面面觀 | 雲計算時代的數據庫:對比 mariadb 和 tidb


01數據庫tidb 

現在比較流行的就是mariadb。 

mysql被收購了,就不要用了。用mariadb。但是但是那個是是mysql的源代碼開源出來的另外一個版本,和mysql的設計是一樣的。 

tidb 就不一樣了。其靈感來自於 Google 的 F1 和 Google spanner, TiDB 支持包括傳統 RDBMS 和 NoSQL 的特性。 sql 完全支持mysql,同時人家還是一個分布式數據庫。 

什么分庫分表都弱爆了,這個直接分,超級方便。而且還是開源的。 而且有些公司已經使用到生產環境了。新智雲(www.enncloud.cn)

 

 

 

是國內的 技術大牛 黃東旭 的公司 pincap 開發的。

 

 

就是之前寫 codis 那個人。 

https://github.com/pingcap/tidb 

很厲害的人,設計的很好的項目。開源的可以自由使用。 

同時遇到問題了,找人還是很方便的。

 

02

mariadb安裝&啟動

docker pull mariadb

#394.9 MB

#啟動:

mkdir -p /data/mariadb/data

docker run --name mariadb -v /data/mariadb/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mariadb -p 3306:3306 -d mariadb:latest

啟動成功端口在 3306,數據在 /data/mariadb/data 密碼: mariadb 

登錄成功!

 

登錄成功之后顯示:

# mysql -uroot -pmariadb -h 127.0.0.1

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 4

Server version: 10.1.22-MariaDB-1~jessie mariadb.org binary distribution

 

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

MariaDB [(none)]> 

 

 

03

tidb安裝&啟動

 

docker pull pingcap/tidb

#45.58 MB

mkdir -p /data/tidb/data

docker run --name tidb-server -d -v /data/tidb/data:/tmp/tidb -p 4000:4000 -p 10080:10080 pingcap/tidb:latest

#設置數據文件,默認使用 goleveldb 存儲。

啟動成功默認端口 4000 ,也可以偽裝成mysql,把端口修改成3306 。

登錄成功之后顯示:

# mysql -h 127.0.0.1 -P 4000 -u root -D test --prompt="tidb> "

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MySQL connection id is 3

Server version: 5.7.1-TiDB-1.0 MySQL Community Server (GPL)

 

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

tidb> 

登錄成功,Server version: 5.7.1-TiDB-1.0 MySQL Community Server (GPL) tidb。 

可以使用 10080 端口查看狀態信息:

 

# curl localhost:10080/status

{"connections":1,"version":"5.7.1-TiDB-1.0","git_hash":"31bc1083fc9195181d187639efb847d19037d9de"}

感覺上應該是集群的時候使用的。

 

04

創建數據庫&用戶

創建數據庫 demo 並創建用戶 demo 賦值權限。 

注意:這些sql 語句在 mysql & tidb 當中都key執行並成功分配權限&登錄成功。

 

CREATE DATABASE demo CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE USER 'demo'@'%' IDENTIFIED BY 'demo';

GRANT ALL PRIVILEGES ON demo.* TO 'demo'@'%';

FLUSH PRIVILEGES;

你就妥妥的把 tidb 當成一個 mysql 使用就行啦。

 

 

05

使用golang 插入數據測試

 

 

package main

import(
       "fmt"
       
"github.com/go-sql-driver/mysql"
       "database/sql"
       "time"
)

funcmain() {
       //mysql port 3306 tidb port4000
       
db, _ := sql.Open("mysql""demo:demo@tcp(127.0.0.1:3306)/demo")
       //
       
start := time.Now()
       loop := 100000
       for i := 0; i < loop;i ++ {
              result, err := db.Exec(
                     "INSERTINTO users(`name`, age) VALUES (?, ?)",
                     "testUser",
                     i,
              )
              if i%(loop/10) == 0 {
                     fmt.Println(result,err)
              }
       }
       end := time.Now()
       fmt.Println("測試插入時間:",end.Sub(start).Seconds())
}

 

分別測試插入一個單機docker的 mariadb 和 tidb

 

 

06

總結

簡單的使用了下,使用tidb 就和使用 mariadb 一樣一樣的。

非常的方便,原有的系統不用做遷移,可以直接切換過去。非常的方便。

使用tidb 可以輕松的將數據庫做成分布式的擴展,省去了數據庫的分庫分表。

直接支持了分布式的數據存儲,可以輕松的支持 TB 級別的數據。

同時又完美的支持mariadb 的各種查詢sql。

 

更多請關注微信公眾號:“極客腦司機”


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM