<form id="dlljd"></form>
        <address id="dlljd"><address id="dlljd"><listing id="dlljd"></listing></address></address>

        <em id="dlljd"><form id="dlljd"></form></em>

          <address id="dlljd"></address>
            <noframes id="dlljd">

              聯系我們 - 廣告服務 - 聯系電話:
              您的當前位置: > 關注 > > 正文

              每日報道:什么是OTS?阿里云飛天分布式系統之上的數據庫

              來源:CSDN 時間:2023-03-10 14:58:01

              什么是OTS

              OTS 是Open Table Service的簡稱,現在已更名為表格存儲Table Store,官網對它的解釋為:OTS是構建在阿里云飛天分布式系統之上的 NoSQL 數據庫服務,提供海量結構化數據的存儲和實時訪問。OTS 以實例和表的形式組織數據,通過數據分片和負載均衡技術,達到規模的無縫擴展。OTS 向應用程序屏蔽底層硬件平臺的故障和錯誤,能自動從各類錯誤中快速恢復,提供非常高的服務可用性。OTS 管理的數據全部存儲在 SSD 中并具有多個備份,提供了快速的訪問性能和極高的數據可靠性。用戶在使用 OTS 服務時,只需要按照預留和使用的資源進行付費,無需關心數據庫的軟硬件升級維護、集群縮容擴容等復雜問題。

              上面的介紹我們可以簡單的概括為:OTS是一個NoSQL的數據庫(你可以將它類比為HBase),在使用方面我們可以將OTS類比為一個技術黑箱,它已經為我們把存儲擴容、數據備份、負載均衡等工作做了,使用過程中我們只需透明的使用其提供的高可用和高并發的特性即可。


              (資料圖片僅供參考)

              OTS和傳統數據關系型數據庫的區別

              估計很多人看了上面的介紹加上對上面提到的HBase不是很了解,現在對于OTS還是有很多疑問。沒關系,接下來將它和傳統關系型數據庫Mysql、SQLServer等做一個比較,或許這下你就能更加清晰的認識OTS了。

              OTS的數據模型也是以二維表為中心的,表有行和列的概念,但是與傳統數據庫不一樣,OTS的表是稀疏的,稀疏指的是它的每一行可以有不同的列,可以動態增加或者減少屬性列,建表時不需要為表的屬性列定義嚴格的schema。相對于傳統數據庫的豐富功能(視圖、索引、事務、豐富的SQL語句支持),OTS提供較為基礎的功能,但是具有更好的規模擴展性,能夠較容易的支持更大的數據規模(百TB級別)和并發訪問(單表10萬QPS)。在編程方面,OTS提供統一的HTTP Restful API,不支持傳統的SQL語句標準。

              OTS的特點

              對OTS做了初步的了解后,那么問題來了,它有什么特性,在存儲產品如此豐富的現狀下我們有什么理由去選用它呢?

              它的主要特性我們可以大致概括為以下幾個方面:

              擴展性動態調整預留讀寫吞吐量

              應用在創建表的時候,需要根據業務訪問的情況來配置預留讀寫吞吐量。OTS 根據表 的預留讀寫吞吐量進行資源的調度和預留,從而保證應用獲得可預期的性能。在使用 過程中,應用還可以根據應用的情況動態修改預留讀寫吞吐量。

              無限容量

              OTS 表的數據量沒有上限,隨著表數據量的不斷增大,OTS 會進行數據分區的調整 從而為該表配置更多的存儲。

              數據可靠性OTS 通過存儲多個數據備份及備份失效時的快速恢復,提供極高的數據可靠性。 高可用性通過自動的故障檢測和數據遷移,OTS 對應用屏蔽了機器和網絡的硬件故障,提供高可用 性。 管理便捷應用程序無需關心數據分區的管理,軟硬件升級,配置更新,集群擴容等繁瑣運維任務。 靈活的數據模型OTS 的表無固定格式要求,每行的列數可以不相同,支持多種數據類型 (Integer、Boolean、 Double、String、Binary)。 監控集成用戶可以從 OTS 控制臺實時獲取每秒請求數、平均響應延時等監控信息。

              這些概括性的對OTS的特點進行了描述,具體量化的服務提供標準如可用率等可以參見官網:

              表格存儲(Table Store)服務等級協議

              這里可以給大家提供幾個主要數據,供大家參考:

              單表百TB級別數據規模,十萬級別QPS。(傳統單機數據庫的100倍)10毫秒級別單行讀寫延遲分鐘級別單機故障恢復時間

              OTS數據模型

              OTS數據模型概念包括表、行、主鍵和屬性。

              表是行的集合,行由主鍵和屬性組成。主鍵列和屬性列均由名稱和值組成。表中的所有行都必須包含相同數目和名稱的主鍵列,但每行包含的屬性列的數目可以不固定,名字和數據類型也可以不同。

              與主鍵列不同,每個屬性列可以包含多個版本,每個版本號(時間戳)對應一個列值。

              圖示如下:

              對于接觸過數據庫的人來說,理解上面的模型不是很困難,同樣也有主鍵和屬性列之分,但需要我們注意的是復合主鍵最多只能包含4列,此外讓我們疑惑的是模型里面出現了分區鍵(partition key)這個概念,這又是干什么的?

              分區鍵(Partition Key)

              還記得我們在說OTS特點的時候第一個就提到了它的擴展性,對于OTS來說擴展性是它很大的一個亮點,而要實現它的擴展性,與分區鍵的關系密不可分。

              一般情況下,我們將組成主鍵的第一個主鍵列作為分區鍵, 具有相同分區鍵的行屬于同一個分片,一個分片可能包含多個分片鍵。分片的過程是自動進行的,無需用戶進行干涉。

              我們需要牢記的是,分區鍵對于OTS來說是一個很重要的因素,我們在設計表結構的時候一定要根據應用需求設計出一個合理的分區鍵,設計的一些準則和建議可以參考這篇文章——OTS最佳實踐——設計良好的主鍵

              列值類型

              OTS一共支持五種類型的列值String、Integer、Double、Boolean、Binary。每種類型有如下限制:

              類型值能否作為主鍵空間占用限制

              StringUTF-8 字符串,可以為空字符串是不超過 64KB,如果為主鍵列不超過1KB

              Integer范圍為 -2?63 ~ 2?63-1 的 64 位整型是固定 8Byte

              Double范圍為 -10?308 ~ 10?308 的雙精度浮點數否固定 8Byte

              Boolean值為 True 或 False否固定 1Byte

              Binary二進制數據,可以為空否不超過64KB

              OTS支持的操作

              表操作

              ListTable -- 列出實例下的所有表CreateTable -- 創建表DeleteTable -- 刪除表DescribeTable -- 獲取表的屬性信息UpdateTable -- 更新表的預留讀寫吞吐量配置

              數據操作

              單行操作

              GetRow -- 讀取單行數據PutRow -- 新插入一行。如果該行內容已經存在,先刪除舊行,再寫入新行UpdateRow -- 更新一行。應用可以增加、刪除一行中的屬性列,或者更新已經存在的 屬性列的值。如果該行不存在,那么新增一行DeleteRow -- 刪除一行

              批量操作

              BatchGetRow -- 批量讀取一張或者多張表的多行數據BatchWriteRow -- 批量插入、更新、刪除一張表或者多張表的多行數據

              范圍讀取

              GetRange -- 讀取表中一個范圍內的數據

              操作說明

              在OTS中開發者是通過統一的HTTP Restful API來完成上述操作的。詳細的操作說明,和數據的格式請參考官網文檔:API操作概覽

              OTS典型應用場景

              看到這里我們對于OTS已經有了一個大致的了解,它有很多特別的優點,但任何一款產品并不是萬能的,并不能適用于所有的領域。下面我們來看看根據OTS的這些特性,它針對那些應用場景特別適用:

              移動社交

              使用OTS來存儲人與人之間產生的大量社交信息,包括聊天、評論、跟帖和點贊,OTS的彈性資源按量付費能夠以較低的成本滿足訪問波動明顯大并發低延時的需要。

              金融風控

              低延時、高并發,彈性資源可以讓的風控系統永遠工作在最佳狀態,牢牢控制交易風險,靈活的數據結構能夠讓業務模式跟隨市場需求快速迭代。

              電商物流

              大量的交易訂單及物流跟蹤信息,使用OTS能夠讓使用者無需擔心數據規模,它的彈性資源,可以從容應對節日促銷活動。

              云存儲解決方案

              大量的聯系人、短信、通話記錄、便箋等結構化信息與圖片、視頻、文件的元數據正好與OTS數據模型相對應,并且OTS的備份機制可以保障這些數據的安全性。

              日志監控

              我們可以將應用程序的監控和日志信息寫入OTS,提供在線的日志檢索,并利用離線數據處理服務ODPS進行監控與日志分析,挖掘其中的數據價值。

              目前阿里內部采用OTS的產品有:

              云OS云空間釘釘即時聊天、用戶關系和行為跟蹤數據冰火鳥TCIFODPS meta存儲

              實例說明

              我們通過一個例子來應用下上面的知識點,加深對OTS的理解吧。

              手機云空間

              我們就拿OTS典型的手機云空間這個例子來做說明:

              應用需求

              存儲手機用戶的聯系人、通話記錄、短信、便簽目標是上千萬的手機用戶,每個用戶數據永久保留,數據規模未來可達幾百TB

              基于OTS的解決方案

              不同的業務數據放在不同的數據表中,屬于一個表組,以userid為partition key進行數據分區每張業務表都附帶多張視圖,滿足不同順序的數據查詢需求表組中還有一張用戶數據統計表,對其他表的操作同時對該表的記錄內容進行更新,確保數據的一致性

              表結構設計模型

              用戶表

              用戶ID短信數目聯系人數目總容量

              U00012000200100,000,00

              U00021024500100,000,00

              ............

              短信表

              用戶ID接收時間唯一ID對方號碼短信內容短信類型

              U00012016-08-090001123456hello接收

              U00022016-08-090002123445hi發送

              用戶其他信息的表格設計類似于短信表。我們可以看到對于這些不同的表,我們可以將用戶ID作為其 分區鍵這樣同一用戶的所有信息都會存儲在同一數據分區下,讀寫遍歷的同時,也可以支持對同一用戶不同表數據的事務操作。

              接著我們的分析,我們短信表中有個唯一ID這個屬性列,這個列起到的作用是防止主鍵重復,我們知道在所有的數據庫中主鍵可用于唯一區分數據庫不同的行不能重復,但有些情況下當我們用幾個屬性列設置了復合主鍵后依然會有重復的可能例如這里的短信表,這時候我們就可以引如一個沒有實際意義的屬性列作為復合主鍵中的唯一區分不同行的變量因素,這就是唯一ID屬性段的作用。

              其他的一些分析不是很難,大家按照自己的理解即可。可以看到當我們熟悉關系型數據庫的使用后,理解和使用OTS沒有多大的障礙。

              責任編輯:

              標簽:

              相關推薦:

              精彩放送:

              新聞聚焦
              Top 中文字幕在线观看亚洲日韩