「碼唄學(xué)院」小米寨典、餓了么、美團(tuán)都在用的TiDB到底是什么房匆?耸成!

最近TiDB掀起了一波分布式數(shù)據(jù)庫(kù)的熱潮,公司也在著手準(zhǔn)備TiDB的落地工作浴鸿,前幾天也參與了幾場(chǎng)公司針對(duì)TiDB的分享會(huì)井氢,下面我們了解一下關(guān)于TiDB。

TiDB 是什么岳链?

TiDB 是一個(gè)分布式 NewSQL 數(shù)據(jù)庫(kù)花竞。它支持水平彈性擴(kuò)展、ACID 事務(wù)掸哑、標(biāo)準(zhǔn) SQL约急、MySQL 語(yǔ)法和 MySQL 協(xié)議,具有數(shù)據(jù)強(qiáng)一致的高可用特性苗分,是一個(gè)不僅適合 OLTP 場(chǎng)景還適合 OLAP 場(chǎng)景的混合數(shù)據(jù)庫(kù)厌蔽。

TiDB怎么來(lái)的?

著名的開(kāi)源分布式緩存服務(wù) Codis 的作者摔癣,PingCAP?聯(lián)合創(chuàng)始人& CTO 奴饮,資深 infrastructure 工程師的黃東旭,擅長(zhǎng)分布式存儲(chǔ)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)择浊,開(kāi)源狂熱分子的技術(shù)大神級(jí)別人物拐云。即使在互聯(lián)網(wǎng)如此繁榮的今天,在數(shù)據(jù)庫(kù)這片邊界模糊且不確定地帶近她,他還在努力尋找確定性的實(shí)踐方向叉瘩。

直到 2012 年底,他看到 Google 發(fā)布的兩篇論文粘捎,如同棱鏡般薇缅,折射出他自己內(nèi)心微爍的光彩危彩。這兩篇論文描述了 Google 內(nèi)部使用的一個(gè)海量關(guān)系型數(shù)據(jù)庫(kù) F1/Spanner ,解決了關(guān)系型數(shù)據(jù)庫(kù)泳桦、彈性擴(kuò)展以及全球分布的問(wèn)題汤徽,并在生產(chǎn)中大規(guī)模使用【淖“如果這個(gè)能實(shí)現(xiàn)谒府,對(duì)數(shù)據(jù)存儲(chǔ)領(lǐng)域來(lái)說(shuō)將是顛覆性的”,黃東旭為完美方案的出現(xiàn)而興奮浮毯, PingCAP 的 TiDB 在此基礎(chǔ)上誕生了完疫。

TiDB架構(gòu)

TiDB在整體架構(gòu)基本是參考 Google Spanner 和 F1 的設(shè)計(jì),上分兩層為?TiDB?和?TiKV?债蓝。 TiDB 對(duì)應(yīng)的是 Google F1壳鹤, 是一層無(wú)狀態(tài)的 SQL Layer ,兼容絕大多數(shù) MySQL 語(yǔ)法饰迹,對(duì)外暴露 MySQL 網(wǎng)絡(luò)協(xié)議芳誓,負(fù)責(zé)解析用戶的 SQL 語(yǔ)句,生成分布式的 Query Plan啊鸭,翻譯成底層 Key Value 操作發(fā)送給 TiKV 锹淌, TiKV 是真正的存儲(chǔ)數(shù)據(jù)的地方,對(duì)應(yīng)的是 Google Spanner 赠制,是一個(gè)分布式 Key Value 數(shù)據(jù)庫(kù)葛圃,支持彈性水平擴(kuò)展,自動(dòng)的災(zāi)難恢復(fù)和故障轉(zhuǎn)移(高可用)憎妙,以及 ACID 跨行事務(wù)。值得一提的是 TiKV 并不像 HBase 或者 BigTable 那樣依賴底層的分布式文件系統(tǒng)曲楚,在性能和靈活性上能更好厘唾,這個(gè)對(duì)于在線業(yè)務(wù)來(lái)說(shuō)是非常重要。


所以一套集群是又這樣的3類角色共同組建而成龙誊。每個(gè)部分的解釋如下:

TiDB Server?

TiDB Server 負(fù)責(zé)接收 SQL 請(qǐng)求抚垃,處理 SQL 相關(guān)的邏輯,并通過(guò) PD 找到存儲(chǔ)計(jì)算所需數(shù)據(jù)的 TiKV 地址趟大,與 TiKV 交互獲取數(shù)據(jù)鹤树,最終返回結(jié)果。 TiDB Server 是無(wú)狀態(tài)的逊朽,其本身并不存儲(chǔ)數(shù)據(jù)罕伯,只負(fù)責(zé)計(jì)算,可以無(wú)限水平擴(kuò)展叽讳,可以通過(guò)負(fù)載均衡組件(如LVS追他、HAProxy 或 F5)對(duì)外提供統(tǒng)一的接入地址坟募。?

PD Server?

Placement Driver (簡(jiǎn)稱 PD) 是整個(gè)集群的管理模塊,其主要工作有三個(gè): 一是存儲(chǔ)集群的元信息(某個(gè) Key 存儲(chǔ)在哪個(gè) TiKV 節(jié)點(diǎn))邑狸;二是對(duì) TiKV 集群進(jìn)行調(diào)度和負(fù)載均衡(如數(shù)據(jù)的遷移懈糯、Raft group leader 的遷移等);三是分配全局唯一且遞增的事務(wù) ID单雾。 PD 是一個(gè)集群赚哗,需要部署奇數(shù)個(gè)節(jié)點(diǎn),一般線上推薦至少部署 3 個(gè)節(jié)點(diǎn)硅堆。?

TiKV Server?

TiKV Server 負(fù)責(zé)存儲(chǔ)數(shù)據(jù)屿储,從外部看 TiKV 是一個(gè)分布式的提供事務(wù)的 Key-Value 存儲(chǔ)引擎。存儲(chǔ)數(shù)據(jù)的基本單位是 Region硬萍,每個(gè) Region 負(fù)責(zé)存儲(chǔ)一個(gè) Key Range (從 StartKey 到 EndKey 的左閉右開(kāi)區(qū)間)的數(shù)據(jù)扩所,每個(gè) TiKV 節(jié)點(diǎn)會(huì)負(fù)責(zé)多個(gè) Region 。TiKV 使用 Raft 協(xié)議做復(fù)制朴乖,保持?jǐn)?shù)據(jù)的一致性和容災(zāi)祖屏。副本以 Region 為單位進(jìn)行管理,不同節(jié)點(diǎn)上的多個(gè) Region 構(gòu)成一個(gè) Raft Group买羞,互為副本袁勺。數(shù)據(jù)在多個(gè) TiKV 之間的負(fù)載均衡由 PD 調(diào)度,這里也是以 Region 為單位進(jìn)行調(diào)度畜普。 當(dāng)然做這件事情期丰,我是認(rèn)真的,而不是簡(jiǎn)單試一下就完事了吃挑。我列了一個(gè)基本的計(jì)劃钝荡,來(lái)看看是否能夠滿足一些痛點(diǎn),改進(jìn)一些情況舶衬。

TiDB開(kāi)發(fā)語(yǔ)言

在 TiDB 研發(fā)語(yǔ)言的選擇過(guò)程中埠通,放棄了 Java 而采用 Go 。TiDB整個(gè)項(xiàng)目分為兩層逛犹,TiDB 作為 SQL 層端辱,采用 Go 語(yǔ)言開(kāi)發(fā), TiKV 作為下邊的分布式存儲(chǔ)引擎虽画,采用 Rust 語(yǔ)言開(kāi)發(fā)舞蔽。在架構(gòu)上確實(shí)類似 FoundationDB,也是基于兩層的結(jié)構(gòu)码撰。 FoundationDB 的 SQL Layer 采用 Java 渗柿,底層是 C++ ,不過(guò)在去年脖岛,被 Apple 收購(gòu)了做祝。 在選擇編程語(yǔ)言并沒(méi)有融入太多的個(gè)人喜好偏向砾省, SQL 層選擇 Go 相對(duì) Java 來(lái)說(shuō):?

第一是?他們團(tuán)隊(duì)的背景使用 Go 的開(kāi)發(fā)效率更高,而且性能尚可混槐,尤其對(duì)于高并發(fā)程序而言编兄,可以使用 goroutine / channel 等工具用更少的代碼寫(xiě)出正確的程序;?

第二是?在標(biāo)準(zhǔn)庫(kù)中很多包對(duì)網(wǎng)絡(luò)程序開(kāi)發(fā)非常友好声登,這個(gè)對(duì)于一個(gè)分布式系統(tǒng)來(lái)說(shuō)非常重要狠鸳;?

第三是?在存儲(chǔ)引擎底層對(duì)于性能要求很高,Go 畢竟是一個(gè)帶有 GC 和 Runtime 的語(yǔ)言悯嗓,在 TiKV 層可以選擇的方案并不多件舵,過(guò)去基本只有 C 或 C++,不過(guò)近兩年隨著 Rust 語(yǔ)言的成熟脯厨,又在經(jīng)過(guò)長(zhǎng)時(shí)間的思考和大量實(shí)驗(yàn)铅祸,最終他們團(tuán)隊(duì)選擇了 Rust( Rust是Mozilla開(kāi)發(fā)的注重安全、性能和并發(fā)性的編程語(yǔ)言合武×俟#“Rust”,由web語(yǔ)言的領(lǐng)軍人物Brendan Eich(js之父)稼跳,Dave Herman以及Mozilla公司的Graydon Hoare 合力開(kāi)發(fā)盟庞。)。

TiDB 對(duì)比 NOSQL

TiDB 對(duì)于這些 NoSQL 來(lái)說(shuō)汤善,最大的特點(diǎn)是編程接口是 SQL什猖,SQL對(duì)于開(kāi)發(fā)者而言是更加靈活的操作數(shù)據(jù)庫(kù)的方式,且對(duì) MySQL 有著極高的兼容性—原業(yè)務(wù)的 MySQL切換到 TiDB 幾乎一行代碼都不用修改就可以完成红淡。TiDB 在支持 SQL 的同時(shí)有沒(méi)有喪失 HBase 這樣的系統(tǒng)的彈性擴(kuò)展能力不狮,業(yè)務(wù)層不需要再去關(guān)心數(shù)據(jù)庫(kù)的容量,不用去考慮分庫(kù)分表在旱,也不用像過(guò)去那樣投入很大的運(yùn)維力量摇零,擴(kuò)容只需簡(jiǎn)單加機(jī)器就好,存儲(chǔ)節(jié)點(diǎn)故障對(duì)業(yè)務(wù)透明颈渊,而且數(shù)據(jù)庫(kù)本身具有自我修復(fù)的能力,保證數(shù)據(jù)不會(huì)丟失终佛。 對(duì)于 MongoDB 也是一樣俊嗽,更重要的是不需要改變用戶已有的習(xí)慣和程序,而且為了定義未來(lái)的云上的數(shù)據(jù)庫(kù)形態(tài)铃彰,TiDB 設(shè)計(jì)的目標(biāo)是單集群需要可以 Scale 到 1000 以上物理節(jié)點(diǎn)的規(guī)模绍豁,支持 P 級(jí)別容量,萬(wàn)億以上的行的結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)牙捉,在這個(gè)前提約束下的設(shè)計(jì)和技術(shù)選型和 MongoDB 很不一樣竹揍,在大數(shù)據(jù)量的情況下 TiDB 的表現(xiàn)更穩(wěn)定敬飒,擴(kuò)展更加平滑。 TiDB 的 SQL 優(yōu)化器是黃東旭他們從頭開(kāi)始實(shí)現(xiàn)的一個(gè)面向分布式存儲(chǔ)設(shè)計(jì)的查詢優(yōu)化器芬位,使用了很多學(xué)術(shù)界很新的查詢優(yōu)化技術(shù)和分布式計(jì)算框架的思想无拗,保證 MySQL 兼容性的前提下比 MySQL 在復(fù)雜查詢下表現(xiàn)要好得多。

與 MySQL 兼容性對(duì)比

TiDB 支持包括跨行事務(wù)昧碉,JOIN 及子查詢?cè)趦?nèi)的絕大多數(shù) MySQL 的語(yǔ)法英染,用戶可以直接使用現(xiàn)有的 MySQL 客戶端連接。如果現(xiàn)有的業(yè)務(wù)已經(jīng)基于 MySQL 開(kāi)發(fā)被饿,大多數(shù)情況不需要修改代碼即可直接替換單機(jī)的 MySQL四康。

包括現(xiàn)有的大多數(shù) MySQL 運(yùn)維工具(如 PHPMyAdmin, Navicat, MySQL Workbench 等),以及備份恢復(fù)工具(如 mysqldump, mydumper/myloader)等都可以直接使用狭握。

不過(guò)一些特性由于在分布式環(huán)境下沒(méi)法很好的實(shí)現(xiàn)闪金,目前暫時(shí)不支持或者是表現(xiàn)與 MySQL 有差異。

一些 MySQL 語(yǔ)法在 TiDB 中可以解析通過(guò)论颅,但是不會(huì)做任何后續(xù)的處理哎垦,例如 Create Table 語(yǔ)句中?Engine?以及?Partition?選項(xiàng),都是解析并忽略嗅辣。更多兼容性差異請(qǐng)參考具體的文檔撼泛。

不支持的特性

? ??存儲(chǔ)過(guò)程

? ??視圖

? ??觸發(fā)器

? ??自定義函數(shù)

? ??外鍵約束

? ??全文索引

? ??空間索引

? ??非 UTF8 字符集

TiDB 基本操作

下面具體介紹 TiDB 中基本的增刪改查操作。

創(chuàng)建澡谭、查看和刪除數(shù)據(jù)庫(kù)

使用?CREATE DATABASE?語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)愿题。語(yǔ)法如下:

CREATE DATABASE db_name [options];

例如,要?jiǎng)?chuàng)建一個(gè)名為?samp_db?的數(shù)據(jù)庫(kù)蛙奖,可使用以下語(yǔ)句:

CREATE DATABASE IF NOT EXISTS samp_db;

使用?SHOW DATABASES?語(yǔ)句查看數(shù)據(jù)庫(kù):

SHOW DATABASES;

使用?DROP DATABASE?語(yǔ)句刪除數(shù)據(jù)庫(kù)潘酗,例如:

DROP DATABASE samp_db;

創(chuàng)建、查看和刪除表

使用?CREATE TABLE?語(yǔ)句創(chuàng)建表雁仲。語(yǔ)法如下:

CREATE TABLE table_name column_name data_type constraint;

例如:

CREATE TABLE person (

number INT(11),

name VARCHAR(255),

birthday DATE

);

如果表已存在仔夺,添加?IF NOT EXISTS?可防止發(fā)生錯(cuò)誤:

CREATE TABLE IF NOT EXISTS person (

number INT(11),

name VARCHAR(255),

birthday DATE

);

使用?SHOW CREATE?語(yǔ)句查看建表語(yǔ)句。例如:

SHOW CREATE table person;

使用?SHOW FULL COLUMNS?語(yǔ)句查看表的列攒砖。 例如:

SHOW FULL COLUMNS FROM person;

使用?DROP TABLE?語(yǔ)句刪除表缸兔。例如:

DROP TABLE person;

或者

DROP TABLE IF EXISTS person;

使用?SHOW TABLES?語(yǔ)句查看數(shù)據(jù)庫(kù)中的所有表。例如:

SHOW TABLES FROM samp_db;

創(chuàng)建吹艇、查看和刪除索引

對(duì)于值不唯一的列惰蜜,可使用?CREATE INDEX?或?ALTER TABLE?語(yǔ)句。例如:

CREATE INDEX person_num ON person (number);

或者

ALTER TABLE person ADD INDEX person_num (number);

對(duì)于值唯一的列受神,可以創(chuàng)建唯一索引抛猖。例如:

CREATE UNIQUE INDEX person_num ON person (number);

或者

ALTER TABLE person ADD UNIQUE person_num on (number);

使用?SHOW INDEX?語(yǔ)句查看表內(nèi)所有索引:

SHOW INDEX from person;

使用?ALTER TABLE?或?DROP INDEX?語(yǔ)句來(lái)刪除索引。與?CREATE INDEX?語(yǔ)句類似,DROP INDEX?也可以嵌入?ALTER TABLE?語(yǔ)句财著。例如:

DROP INDEX person_num ON person;

ALTER TABLE person DROP INDEX person_num;

增刪改查數(shù)據(jù)

使用?INSERT?語(yǔ)句向表內(nèi)插入數(shù)據(jù)联四。例如:

INSERT INTO person VALUES("1","tom","20170912");

使用?SELECT?語(yǔ)句檢索表內(nèi)數(shù)據(jù)。例如:

SELECT * FROM person;

+--------+------+------------+

| number | name | birthday |+--------+------+------------+

| 1 | tom | 2017-09-12 |+--------+------+------------+

使用?UPDATE?語(yǔ)句修改表內(nèi)數(shù)據(jù)撑教。例如:

UPDATE person SET birthday='20171010' WHERE name='tom';

SELECT * FROM person;

+--------+------+------------+

| number | name | birthday |+--------+------+------------+

| 1 | tom | 2017-10-10 |+--------+------+------------+

使用?DELETE?語(yǔ)句刪除表內(nèi)數(shù)據(jù):

DELETE FROM person WHERE number=1;

SELECT * FROM person;

Empty set (0.00 sec)

創(chuàng)建朝墩、授權(quán)和刪除用戶

使用?CREATE USER?語(yǔ)句創(chuàng)建一個(gè)用戶?tiuser,密碼為?123456:

CREATE USER 'tiuser'@'localhost' IDENTIFIED BY '123456';

授權(quán)用戶?tiuser?可檢索數(shù)據(jù)庫(kù)?samp_db?內(nèi)的表:

GRANT SELECT ON samp_db.* TO 'tiuser'@'localhost';

查詢用戶?tiuser?的權(quán)限:

SHOW GRANTS for tiuser@localhost;

刪除用戶?tiuser:

DROP USER 'tiuser'@'localhost';

TiDB資料

TiDB中文簡(jiǎn)介(墻裂推薦)

https://pingcap.com/docs-cn

TiDB最佳實(shí)踐等PPT

https://eyun.baidu.com/s/3huniXE0#sharelink/path=%2F

開(kāi)源項(xiàng)目地址

https://github.com/pingcap/tidb

tidb 部署指導(dǎo)?

https://github.com/pingcap/docs-cn/blob/master/op-guide/binary-deployment.md#%E5%8D%95%E8%8A%82%E7%82%B9%E6%96%B9%E5%BC%8F%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2?

TiDB整體架構(gòu)?

https://github.com/pingcap/docs-cn/blob/master/overview.md#tidb-%E6%95%B4%E4%BD%93%E6%9E%B6%E6%9E%84?

TiDB:支持 MySQL 協(xié)議的分布式數(shù)據(jù)庫(kù)解決方案?

http://www.sohu.com/a/55958574_255273

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末驮履,一起剝皮案震驚了整個(gè)濱河市鱼辙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌玫镐,老刑警劉巖倒戏,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異恐似,居然都是意外死亡杜跷,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)矫夷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)葛闷,“玉大人,你說(shuō)我怎么就攤上這事双藕∈缰海” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵忧陪,是天一觀的道長(zhǎng)扣泊。 經(jīng)常有香客問(wèn)我,道長(zhǎng)嘶摊,這世上最難降的妖魔是什么延蟹? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮叶堆,結(jié)果婚禮上阱飘,老公的妹妹穿的比我還像新娘。我一直安慰自己虱颗,他們只是感情好沥匈,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著忘渔,像睡著了一般高帖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辨萍,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天棋恼,我揣著相機(jī)與錄音,去河邊找鬼锈玉。 笑死爪飘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拉背。 我是一名探鬼主播师崎,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼椅棺!你這毒婦竟也來(lái)了犁罩?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤两疚,失蹤者是張志新(化名)和其女友劉穎床估,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體诱渤,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡丐巫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了勺美。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片递胧。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赦政,死狀恐怖尚猿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情游昼,我是刑警寧澤占卧,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布遗菠,位于F島的核電站,受9級(jí)特大地震影響屉栓,放射性物質(zhì)發(fā)生泄漏舷蒲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一友多、第九天 我趴在偏房一處隱蔽的房頂上張望牲平。 院中可真熱鬧,春花似錦域滥、人聲如沸纵柿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)昂儒。三九已至,卻和暖如春委可,著一層夾襖步出監(jiān)牢的瞬間渊跋,已是汗流浹背腊嗡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拾酝,地道東北人燕少。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蒿囤,于是被迫代替她去往敵國(guó)和親客们。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • MYSQL 基礎(chǔ)知識(shí) 1 MySQL數(shù)據(jù)庫(kù)概要 2 簡(jiǎn)單MySQL環(huán)境 3 數(shù)據(jù)的存儲(chǔ)和獲取 4 MySQL基本操...
    Kingtester閱讀 7,811評(píng)論 5 116
  • 摘要: 本文為今年年初 PingCAP 商業(yè)產(chǎn)品團(tuán)隊(duì)負(fù)責(zé)人劉寅在 TiDB DevCon2018 上分享的 《 T...
    nightwish夜愿閱讀 6,778評(píng)論 0 11
  • 文/喬安姑娘 結(jié)束了4天的雨天材诽,今早不下雨也夾帶著微風(fēng)底挫,但很舒服。天氣告訴我脸侥,今天會(huì)是個(gè)好日子建邓。果然預(yù)言不錯(cuò),今天...
    喬安姑娘閱讀 320評(píng)論 3 2
  • 十七歲的雨季 專屬白襯衫的回憶 球場(chǎng)上矯健的身影 浸濕了純白的襯衣 少年嘴角的笑意 十八歲的夢(mèng)季 風(fēng)度翩翩睁枕,亭亭玉...
    EX_1106閱讀 331評(píng)論 1 3
  • 打小我和媽媽就經(jīng)常跟兒子開(kāi)玩笑涝缝,問(wèn)他,你長(zhǎng)大以后要從事什么職業(yè)呀譬重??jī)鹤硬皇堑耐嶂^拒逮,似懂非懂,奶聲奶氣的說(shuō)臀规,我長(zhǎng)大...
    路書(shū)3026閱讀 174評(píng)論 0 1