站長資訊網
        最全最豐富的資訊網站

        tidb是go語言么

        是,TiDB采用go語言編寫。TiDB是一個分布式NewSQL數(shù)據(jù)庫;它支持水平彈性擴展、ACID事務、標準SQL、MySQL語法和MySQL協(xié)議,具有數(shù)據(jù)強一致的高可用特性。TiDB架構中的PD儲存了集群的元信息,如key在哪個TiKV節(jié)點;PD還負責集群的負載均衡以及數(shù)據(jù)分片等。PD通過內嵌etcd來支持數(shù)據(jù)分布和容錯;PD采用go語言編寫。

        tidb是go語言么

        php入門到就業(yè)線上直播課:進入學習
        Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調試工具:點擊使用

        本教程操作環(huán)境:windows7系統(tǒng)、GO 1.18版本、Dell G3電腦。

        Go 語言不少重量級項目,而國內最牛逼的 Go 開源項目應該就是 TiDB 了吧。TiDB 是一個分布式數(shù)據(jù)庫,很多人可能對此一無所知。今天就跟大家聊聊這個話題。

        TiDB設計簡單,官網和代碼都非常易讀,是學習分布式數(shù)據(jù)庫的首選開源項目。

        數(shù)據(jù)庫、操作系統(tǒng)和編譯器并稱為三大系統(tǒng),可以說是整個計算機軟件的基石。

        很多人用過數(shù)據(jù)庫,但是很少有人實現(xiàn)過一個數(shù)據(jù)庫,特別是實現(xiàn)一個分布式數(shù)據(jù)庫。了解數(shù)據(jù)庫的實現(xiàn)原理和細節(jié),一方面可以提高個人技術,對構建其他系統(tǒng)有幫助,另一方面也有利于用好數(shù)據(jù)庫。

        一、TiDB簡介

        TiDB是一個分布式 NewSQL 數(shù)據(jù)庫。它支持水平彈性擴展、ACID 事務、標準 SQL、MySQL 語法和 MySQL 協(xié)議,具有數(shù)據(jù)強一致的高可用特性,是一個不僅適合 OLTP 場景還適合 OLAP 場景的混合數(shù)據(jù)庫

        OLTP:On-Line Transaction Processing,聯(lián)機事務處理
        OLAP:On-Line Analytical Processing,聯(lián)機分析處理

        • 高度兼容 MySQL 5.7

        TiDB 高度兼容 MySQL 5.7 協(xié)議、MySQL 5.7 常用的功能及語法。雖然 TiDB 支持 MySQL 語法和協(xié)議,但是 TiDB 是由 PingCAP 團隊完全自主開發(fā)的產品,并非基于MySQL開發(fā)。

        MySQL 5.7 生態(tài)中的系統(tǒng)工具 (PHPMyAdmin、Navicat、MySQL Workbench、mysqldump、Mydumper、Myloader)、客戶端等均適用于 TiDB。

        TiDB 目前還不支持觸發(fā)器、存儲過程、自定義函數(shù)、外鍵。

        • 易用性

        TiDB 使用起來很簡單,可以將 TiDB 集群當成 MySQL 來用,可以將 TiDB 用在任何以 MySQL 作為后臺存儲服務的應用中,并且基本上不需要修改應用代碼,同時可以用大部分流行的 MySQL 管理工具來管理 TiDB。

        只要支持 MySQL Client/Driver 的編程語言,都可以直接使用 TiDB

        • 支持分布式事務

        無論是一個地方的幾個節(jié)點,還是跨多個數(shù)據(jù)中心的多個節(jié)點,TiDB 均支持 ACID 分布式事務

        TiDB 事務模型靈感源自 Google Percolator 模型,主體是一個兩階段提交協(xié)議,并進行了一些實用的優(yōu)化。該模型依賴于一個時間戳分配器,為每個事務分配單調遞增的時間戳,這樣就檢測到事務沖突。在 TiDB 集群中,PD 承擔時間戳分配器的角色

        TiDB不需要像MySQL一樣通過支持XA來滿足跨數(shù)據(jù)庫事務,TiDO的本身的分布式事務模型無論是在性能上還是在穩(wěn)定性上都要比 XA 要高出很多,所以不會也不需要支持 XA。

        與傳統(tǒng)的單機數(shù)據(jù)庫相比,TiDB 具有以下優(yōu)勢

        • 純分布式架構,擁有良好的擴展性,支持彈性的擴縮容
        • 支持 SQL,對外暴露 MySQL 的網絡協(xié)議,并兼容大多數(shù) MySQL 的語法,在大多數(shù)場景下可以直接替換 MySQL
        • 默認支持高可用,在少數(shù)副本失效的情況下,數(shù)據(jù)庫本身能夠自動進行數(shù)據(jù)修復和故障轉移,對業(yè)務透明
        • 支持 ACID 事務,對于一些有強一致需求的場景友好,例如:銀行轉賬
        • 具有豐富的工具鏈生態(tài),覆蓋數(shù)據(jù)遷移、同步、備份等多種場景

        簡單來說,TiDB 適合具備下面這些特點的場景

        • 數(shù)據(jù)量大,單機保存不下
        • 不希望做 Sharding 或者懶得做 Sharding
        • 訪問模式上沒有明顯的熱點
        • 需要事務、需要強一致、需要災備
        • 希望 Real-Time HTAP,減少存儲鏈路

        五大核心特性

        • 一鍵水平擴容或者縮容

          得益于 TiDB 存儲計算分離的架構的設計,可按需對計算、存儲分別進行在線擴容或者縮容,擴容或者縮容過程中對應用運維人員透明。

        • 金融級高可用

          數(shù)據(jù)采用多副本存儲,數(shù)據(jù)副本通過 Multi-Raft 協(xié)議同步事務日志,多數(shù)派寫入成功事務才能提交,確保數(shù)據(jù)強一致性且少數(shù)副本發(fā)生故障時不影響數(shù)據(jù)的可用性。可按需配置副本地理位置、副本數(shù)量等策略滿足不同容災級別的要求。

        • 實時 HTAP

          提供行存儲引擎 TiKV、列存儲引擎 TiFlash 兩款存儲引擎,TiFlash 通過 Multi-Raft Learner 協(xié)議實時從 TiKV 復制數(shù)據(jù),確保行存儲引擎 TiKV 和列存儲引擎 TiFlash 之間的數(shù)據(jù)強一致。TiKV、TiFlash 可按需部署在不同的機器,解決 HTAP 資源隔離的問題。

        • 云原生的分布式數(shù)據(jù)庫

          專為云而設計的分布式數(shù)據(jù)庫,通過 TiDB Operator 可在公有云、私有云、混合云中實現(xiàn)部署工具化、自動化。

        • 兼容 MySQL 5.7 協(xié)議和 MySQL 生態(tài)

          兼容 MySQL 5.7 協(xié)議、MySQL 常用的功能、MySQL 生態(tài),應用無需或者修改少量代碼即可從 MySQL 遷移到 TiDB。提供豐富的數(shù)據(jù)遷移工具幫助應用便捷完成數(shù)據(jù)遷移。

        四大核心應用場景

        • 對數(shù)據(jù)一致性及高可靠、系統(tǒng)高可用、可擴展性、容災要求較高的金融行業(yè)屬性的場景

          眾所周知,金融行業(yè)對數(shù)據(jù)一致性及高可靠、系統(tǒng)高可用、可擴展性、容災要求較高。傳統(tǒng)的解決方案是同城兩個機房提供服務、異地一個機房提供數(shù)據(jù)容災能力但不提供服務,此解決方案存在以下缺點:資源利用率低、維護成本高、RTO (Recovery Time Objective)RPO (Recovery Point Objective) 無法真實達到企業(yè)所期望的值。TiDB 采用多副本 + Multi-Raft 協(xié)議的方式將數(shù)據(jù)調度到不同的機房、機架、機器,當部分機器出現(xiàn)故障時系統(tǒng)可自動進行切換,確保系統(tǒng)的 RTO <= 30s 及 RPO = 0。

        • 對存儲容量、可擴展性、并發(fā)要求較高的海量數(shù)據(jù)及高并發(fā)的 OLTP 場景

          隨著業(yè)務的高速發(fā)展,數(shù)據(jù)呈現(xiàn)爆炸性的增長,傳統(tǒng)的單機數(shù)據(jù)庫無法滿足因數(shù)據(jù)爆炸性的增長對數(shù)據(jù)庫的容量要求,可行方案是采用分庫分表的中間件產品或者 NewSQL 數(shù)據(jù)庫替代、采用高端的存儲設備等,其中性價比最大的是 NewSQL 數(shù)據(jù)庫,例如:TiDB。TiDB 采用計算、存儲分離的架構,可對計算、存儲分別進行擴容和縮容,計算最大支持 512 節(jié)點,每個節(jié)點最大支持 1000 并發(fā),集群容量最大支持 PB 級別。

        • Real-time HTAP 場景

          隨著 5G、物聯(lián)網、人工智能的高速發(fā)展,企業(yè)所生產的數(shù)據(jù)會越來越多,其規(guī)模可能達到數(shù)百 TB 甚至 PB 級別,傳統(tǒng)的解決方案是通過 OLTP 型數(shù)據(jù)庫處理在線聯(lián)機交易業(yè)務,通過 ETL 工具將數(shù)據(jù)同步到 OLAP 型數(shù)據(jù)庫進行數(shù)據(jù)分析,這種處理方案存在存儲成本高、實時性差等多方面的問題。TiDB 在 4.0 版本中引入列存儲引擎 TiFlash 結合行存儲引擎 TiKV 構建真正的 HTAP 數(shù)據(jù)庫,在增加少量存儲成本的情況下,可以在同一個系統(tǒng)中做聯(lián)機交易處理、實時數(shù)據(jù)分析,極大地節(jié)省企業(yè)的成本。

        • 數(shù)據(jù)匯聚、二次加工處理的場景

          當前絕大部分企業(yè)的業(yè)務數(shù)據(jù)都分散在不同的系統(tǒng)中,沒有一個統(tǒng)一的匯總,隨著業(yè)務的發(fā)展,企業(yè)的決策層需要了解整個公司的業(yè)務狀況以便及時做出決策,故需要將分散在各個系統(tǒng)的數(shù)據(jù)匯聚在同一個系統(tǒng)并進行二次加工處理生成 T+0 或 T+1 的報表。傳統(tǒng)常見的解決方案是采用 ETL + Hadoop 來完成,但 Hadoop 體系太復雜,運維、存儲成本太高無法滿足用戶的需求。與 Hadoop 相比,TiDB 就簡單得多,業(yè)務通過 ETL 工具或者 TiDB 的同步工具將數(shù)據(jù)同步到 TiDB,在 TiDB 中可通過 SQL 直接生成報表。

        二、快速上手

        TiDB 是一個分布式系統(tǒng)。最基礎的 TiDB 測試集群通常由 2 個 TiDB 實例、3 個 TiKV 實例、3 個 PD 實例和可選的 TiFlash 實例構成。通過 TiUP Playground,可以快速搭建出上述的一套基礎測試集群,步驟如下:

        • step1、下載并安裝 TiUP。

          curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
          登錄后復制

        安裝完成后顯示:

        Successfully set mirror to https://tiup-mirrors.pingcap.com Detected shell: bash Shell profile:  /home/user/.bashrc /home/user/.bashrc has been modified to add tiup to PATH open a new terminal or source /home/user/.bashrc to use it Installed path: /home/user/.tiup/bin/tiup =============================================== Have a try:     tiup playground ===============================================
        登錄后復制

        • step2、聲明全局環(huán)境變量。 source ${your_shell_profile}

          source /home/user/.bashrc
          登錄后復制

        • step3、在當前 session 執(zhí)行以下命令啟動集群。

          tiup playground
          登錄后復制

        • step4、驗證。【現(xiàn)在可以像使用MySQL一樣使用TiDB啦

          #新開啟一個 session 以訪問 TiDB 數(shù)據(jù)庫。 #使用 TiUP client 連接 TiDB: tiup client #也可使用 MySQL 客戶端連接 TiDB mysql --host 127.0.0.1 --port 4000 -u root #通過 http://127.0.0.1:9090 訪問 TiDB 的 Prometheus 管理界面。 #通過 http://127.0.0.1:2379/dashboard 訪問 TiDB Dashboard 頁面,默認用戶名為 root,密碼為空。 #通過 http://127.0.0.1:3000 訪問 TiDB 的 Grafana 界面,默認用戶名和密碼都為 admin。
          登錄后復制

        三、TiDB架構原理

        在內核設計上,TiDB 分布式數(shù)據(jù)庫將整體架構拆分成了多個模塊,各模塊之間互相通信,組成完整的 TiDB 系統(tǒng)。對應的架構圖如下:

        tidb是go語言么

        • TiDB Server 負責處理SQL相關的邏輯,將SQL語句轉成key,通過PD來查找數(shù)據(jù)具體在哪個TiKV。TiDB本身是無狀態(tài)的,不存儲數(shù)據(jù),只負責計算。TiDB采用go語言編寫。【

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 日韩精品国产自在久久现线拍| 精品亚洲欧美中文字幕在线看| 91精品国产自产在线老师啪| 曰韩精品无码一区二区三区| 国产高清国内精品福利99久久| 久久九九精品99国产精品| 久久精品国产精品亚洲人人| 欧美极品欧美精品欧美视频| 久久精品国产亚洲AV无码麻豆| 无码国产亚洲日韩国精品视频一区二区三区 | 亚洲动漫精品无码av天堂| 国产精品高清视亚洲精品| 亚洲一区精品无码| 国产精品自产拍在线观看花钱看 | 91精品国产福利在线观看| 97久久精品无码一区二区| 色久综合网精品一区二区| 亚洲欧美日韩精品久久亚洲区| 久久精品亚洲精品国产欧美| 国产精品九九九| 国产精品1024在线永久免费| 午夜精品美女自拍福到在线| 国产成人精品综合网站| 国产精品久线在线观看| 精品不卡一区二区| 精品成在人线AV无码免费看| 国产日产韩国精品视频| 国产精品白丝AV网站| 精品无人码麻豆乱码1区2区| 国内精品伊人久久久久av一坑 | 精品福利一区二区三| 免费精品国产自产拍在线观看| 日韩精品一区二区三区大桥未久| 国产精品莉莉欧美自在线线 | 久久久久人妻一区精品| 精品国产一区二区三区在线观看 | 国产高清日韩精品欧美激情| 97久视频精品视频在线老司机| 91精品国产色综久久| 国产精品H片在线播放| 国产一级精品高清一级毛片|