TiDB基礎介紹、應用場景及架構

1. 什么是newsql

? ? ? ?NewSQL 是對各種新的可擴展/高性能數據庫的簡稱,這類數據庫不僅具有NoSQL對海量數據的存儲管理能力,還保持了傳統數據庫支持ACID和SQL等特性。

? ? ? ?NewSQL是指這樣一類新式的關系型數據庫管理系統,針對OLTP(讀-寫)工作負載,追求提供和NoSQL系統相同的擴展性能,且仍然保持ACID和SQL等特性(scalable and ACID and (relational and/or sql -access))。

? ? ? NewSQL比較流量的幾種:cockroachDB,tidb,yugabyteDB等 這些都是參考了google spanner論文的開源實現。

2.TiDB介紹

? ? TiDB是一個開源的NewSQL數據庫,支持HTAP(Hybrid Transactional and Analytical Processing),既支持事務型操作,也支持數據分析。同時TiDB和MySQL的大多數協議都是兼容的。支持水平擴展,強一致性和高可用。

? ? ?TiDB的目標是提供一個一站式數據庫解決方案。包括OLTP(Online Transactional Processing), OLAP (Online Analytical Processing), and HTAP services。TiDB 適合高可用、強一致要求較高、數據規模較大等各種應用場景。

3. TiDB的應用場景

? ? ? ?TiDB 的應用場景是典型的 OLTP 場景,它的設計目標是 100% 的 OLTP 場景和 80% 的 OLAP 場景,同時還提供 TiSpark 項目以完成更復雜的 OLAP 分析。

? ? ?替代 MySQL

? ? ? ?傳統的 MySQL 數據庫在數據量急速增長后,使用分庫分表的技術來對數據庫進行擴展,在分布式數據庫系統中也是使用分片技術,但是這些技術不管在維護成本或開發成本上都很高。

? ? ? 而 TiDB 提供了一個可彈性的橫向擴展的分布式數據庫,并且具有高可用性,它兼容 MySQL 協議和絕大多數的 MySQL 語法,在通常情況下,用戶無須修改代碼就可以將 MySQL 無縫遷移到 TiDB。

? ? ?替代 NoSQL 數據庫

? ? ?NoSQL 數據庫擁有彈性的伸縮能力,具有實時并發寫入能力,但是 NoSQL 數據庫不支持 SQL,也不支持事務的 ACID 特性,NoSQL 無法滿足某些強一致性的場景下的需求。

? ? ?TiDB 具備 SQL 所有的特性,同時滿足數據的在線擴展。在線旅行網站“去哪兒”目前使用了幾個 TiDB 集群來替代 MySQL 和 HBase,如機票離線集群、金融支付集群等。

? ? ?集群用來存儲支付信息表和訂單信息表,這些信息嚴格支持事務 ACID 特性,因此可以將原來存儲于 MySQL 中的數據同步到 TiDB 中,然后,運營或開發人員可以在 TiDB 上進行 merge 單表查詢或 OLAP 分析。

? ? 實時數據倉庫

? ? ?目前企業大多數的數據分析場景的解決方案都是圍繞著 Hadoop 生態系統展開的,包括 HDFS、Hive、Spark 等。但是單純使用 Hadoop 已經無法滿足一些實時的 OLTP 和復雜的 OLAP 需求。

? ? ? ?隨著 TiDB 的子項目 TiSpark 的發布,可以在擁有關系數據庫的事務寫入能力同時進行復雜的分析。

4. TiDB架構

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

TiDB Server:SQL 層,對外暴露 MySQL 協議的連接 endpoint,負責接受客戶端的連接,執行 SQL 解析和優化,最終生成分布式執行計劃。TiDB 層本身是無狀態的,實踐中可以啟動多個 TiDB 實例,通過負載均衡組件(如 LVS、HAProxy 或 F5)對外提供統一的接入地址,客戶端的連接可以均勻地分攤在多個 TiDB 實例上以達到負載均衡的效果。TiDB Server 本身并不存儲數據,只是解析 SQL,將實際的數據讀取請求轉發給底層的存儲節點 TiKV(或 TiFlash)。

PD (Placement Driver) Server:整個 TiDB 集群的元信息管理模塊,負責存儲每個 TiKV 節點實時的數據分布情況和集群的整體拓撲結構,提供 TiDB Dashboard 管控界面,并為分布式事務分配事務 ID。PD 不僅存儲元信息,同時還會根據 TiKV 節點實時上報的數據分布狀態,下發數據調度命令給具體的 TiKV 節點,可以說是整個集群的“大腦”。此外,PD 本身也是由至少 3 個節點構成,擁有高可用的能力。建議部署奇數個 PD 節點。

存儲節點

TiKV Server:負責存儲數據,從外部看 TiKV 是一個分布式的提供事務的 Key-Value 存儲引擎。存儲數據的基本單位是 Region,每個 Region 負責存儲一個 Key Range(從 StartKey 到 EndKey 的左閉右開區間)的數據,每個 TiKV 節點會負責多個 Region。TiKV 的 API 在 KV 鍵值對層面提供對分布式事務的原生支持,默認提供了 SI (Snapshot Isolation) 的隔離級別,這也是 TiDB 在 SQL 層面支持分布式事務的核心。TiDB 的 SQL 層做完 SQL 解析后,會將 SQL 的執行計劃轉換為對 TiKV API 的實際調用。所以,數據都存儲在 TiKV 中。另外,TiKV 中的數據都會自動維護多副本(默認為三副本),天然支持高可用和自動故障轉移。

TiFlashTiFlash 是一類特殊的存儲節點。和普通 TiKV 節點不一樣的是,在 TiFlash 內部,數據是以列式的形式進行存儲,主要的功能是為分析型的場景加速。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40051.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40051.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40051.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

經驗分享:企業數據倉庫建設方案總結!

導讀 在企業的數字化轉型浪潮中,數據被譽為“新時代的石油”,而數據倉庫作為數據管理與分析的核心基礎設施,在企業的信息化建設中扮演著重要的角色。本文將深入探討企業數據倉庫建設過程中所遇到的問題以及解決經驗,為正在籌備或…

進程/線程上下文切換會用掉你多少CPU?

進程是操作系統的偉大發明之一,對應用程序屏蔽了CPU調度、內存管理等硬件細節,而抽象出一個進程的概念,讓應用程序專心于實現自己的業務邏輯既可,而且在有限的CPU上可以“同時”進行許多個任務。但是它為用戶帶來方便的同時&#…

嵌入式Linux Qt5 (C++)開發欄目概述

本欄目開始介紹Linux系統下的Qt C程序開發,資源是以嵌入式為切入點(現在Linux系統下的Qt C程序開發好像就是應用于嵌入式),那就跟著一起學習Linux系統下的Qt C程序開發知識,再擴展一下嵌入式的知識吧。我這里默認已經熟…

php初解

php是什么? PHP,全稱 Hypertext Preprocessor ,中文翻譯“超文本預處理器”。 PHP是一種被廣泛應用的開源通用腳本語言,尤其適用于 Web 開發。 擁有快速,靈活,實用的特點,PHP能做任何事&#xf…

ORACLE中UNION、UNION ALL、MINUS、INTERSECT學習

1、UNION和UNION ALL的使用與區別 如果我們需要將兩個select語句的結果作為一個整體顯示出來,我們就需要用到union或者union all關鍵字。union的作用是將多個結果合并在一起顯示出來。 union和union all的區別是union會自動壓縮多個結果集合中的重復結果&#xff…

高速下載VisualGLM模型文件的解決方案

大家好,我是愛編程的喵喵。雙985碩士畢業,現擔任全棧工程師一職,熱衷于將數據思維應用到工作與生活中。從事機器學習以及相關的前后端開發工作。曾在阿里云、科大訊飛、CCF等比賽獲得多次Top名次。現為CSDN博客專家、人工智能領域優質創作者。喜歡通過博客創作的方式對所學的…

GO語言自底向上優化

Go Ballast(通過嘗試降低 GC 頻率以提高整體性能,針對所有 Go應用都適用) 首先我們明白GO語言GC觸發條件是由比例來觸發的。例如,當前存活內存10GB,觸發比例是100%,因此下次觸發GC的時候是當內存達到20GB的時候觸發GC。這種機制在…

碎片筆記|圖數據與圖神經網絡基礎介紹

前言:前段時間了解了一下圖神經網絡,本篇博客記錄一下相關知識,以備不時之需。 強烈推薦這篇博客(作者來自 Google Research),個人認為是圖神經網絡基礎入門的不二選擇! 目錄 一、圖數據1.1 定義…

Windows上使用FFmpeg實現本地視頻推送模擬海康協議rtsp視頻流

場景 Nginx搭建RTMP服務器FFmpeg實現海康威視攝像頭預覽: Nginx搭建RTMP服務器FFmpeg實現海康威視攝像頭預覽_nginx rtmp 海康攝像頭_霸道流氓氣質的博客-CSDN博客 上面記錄的是使用FFmpeg拉取海康協議攝像頭的rtsp流并推流到流媒體服務器。 如果在其它業務場景…

TCP/IP協議組

TCP/IP通信協議是目前最完整、使用最廣泛的通信協議。它的魅力在于可使不同硬件結構、不同操作系統的計算機相互通信。TCP/IP協議既可用于廣域網,也可用于局域網,它是Internet/Intranet的基石。TCP/IP通信協議事實上是一組協議。 TCP/IP協議可分為5層也可…

使用 Redis 實現共享 Session 的高效解決方案

系列文章目錄 文章目錄 系列文章目錄前言一、為什么需要共享 Session?二、使用 Redis 實現共享 Session1.安裝和配置 Redis2.實現 Session 存取操作3.使用 Session 數據三、測試共享 Session四、注意事項總結前言 在分布式系統中,實現共享 Session 是一個重要的問題。本文將…

GT Code - 圖譯算法編輯器(集成QT、C++、C、Linux、Git、java、web、go、高并發、服務器、分布式、網絡編程、云計算、大數據項目)

目錄 項目概述 發文意義 項目介紹 功能分析 設計概要 功能展示 項目文檔 項目概述 “GT Code 圖譯算法編輯器”是一款跨平臺、輕量級的代碼編輯器,主要面向軟件開發人員,它實現了編輯、編譯、繪制代碼流程圖、生成調試演示動畫等功能,以…

go版本glog/klog 參數使用方法心得

問題 glog很好用,但是官方文檔卻很爛,對于很多參數并沒有做詳細說明,于是通過看源碼測試,總結出以下使用方法 可選參數 flag.BoolVar(&logging.toStderr, "logtostderr", false, "log to standard error in…

空間分析專屬 Python 學習資料

空間數據分析能夠幫助我們更好地理解地理空間中的模式和關系,從而為決策提供支持。例如,城市規劃者可以使用空間數據分析來確定城市發展的最佳方向,環境科學家可以使用空間數據分析來評估污染的影響,而商業分析師可以使用空間數據…

react go實現用戶歷史登錄列表頁面

refer: http://ip-api.com/ 1.首先需要創建一個保存用戶歷史的登錄的表,然后連接go 2.在用戶登錄的時候,獲取用戶的IP IP位置,在后端直接處理數據即可(不需要在前端傳遞數據) (1)增加路由&am…

使用Java服務器實現UDP消息的發送和接收(多線程)

目錄 簡介:1. 導入必要的庫2. 創建服務器端代碼3. 創建客戶端代碼4. 實現多線程處理5. 測試運行示例代碼:函數說明服務器端代碼說明:客戶端代碼說明: 總結: 簡介: 在本篇博客中,我們將介紹如何…

genism word2vec方法

文章目錄 概述使用示例模型的保存與使用訓練參數詳解([原鏈接](https://blog.csdn.net/weixin_44852067/article/details/130221655))語料庫訓練 概述 word2vec是按句子來處理的Sentences(句子們) 使用示例 from gensim.models import Word2Vec #sent…

《起風了》C++源代碼

使用方法 Visual Studio、Dev-C、Visual Studio Code等C/C創建一個 .cpp 文件&#xff0c;直接粘貼賦值即可。 #include <iostream> #include <Windows.h> #pragma comment(lib,"winmm.lib") using namespace std; enum Scale {Rest 0, C8 108, B7 …

目錄——車載網絡安全

本文主要匯總車載網絡安全專欄文章,以方便各位讀者閱讀。 ISO21434 概述(一) ISO21434 組織網絡安全管理(二) ISO21434 項目網絡安全管理(三) ISO21434 分布式網絡安全(四) SO21434 持續進行的網絡安全(五) ISO21434 概念階段網絡安全(六)

線性代數(四) 特征值相似矩陣

前言 前面主要講述的是方程組和矩陣的關系&#xff0c;現在了解下矩陣和矩陣的關系 方陣的特征值與特征向量 假設A為n階方陣&#xff0c;對于一個數 λ \lambda λ 若存在&#xff1a;非零列向量 α \alpha α&#xff0c;使得&#xff1a; A α ? λ α ? A\vec{\alp…