zoukankan      html  css  js  c++  java
  • 面面观 | 云计算时代的数据库:对比 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。

    更多请关注微信公众号:“极客脑司机”

  • 相关阅读:
    hibernate映射-单向多对一映射
    CSS
    HTML基础
    复习
    元类,单例
    数据类型,约束,存储引擎
    数据库概念,安装,基本操作
    IO模型
    异步回调,协程
    GIL锁,线程池,同步异步
  • 原文地址:https://www.cnblogs.com/enncloudcn/p/6855303.html
Copyright © 2011-2022 走看看