海量數據,Mysql分庫分表存儲麻煩,試試阿里雲的tableStore?

2021-01-08 老母雞上山

為啥要分庫分表

你在一個創業型小公司做架構師,做的是電商項目,剛開始註冊人數就幾萬而已,交易最多每天就幾百單數據生成,這種情況下不用分庫分表沒問題的。

後面公司項目發展越來越快,用戶活躍數幾十萬,訂單生成數一天幾百萬,這個時候你的資料庫伺服器明顯的扛不住的,單表的數據太多,磁碟資源有限,一系列的壓力最終會導致系統無法使用。

這個時候架構師應該想到的是要進行業務劃分,使用sharding-jdbc、mycat進行分庫分表存儲海量的數據。

這個是能解決上述的問題的,但是往往不是那麼簡單。

1、大量的編碼工作,需要對查詢集合計算結果,存儲的時候按照不同的規則存入不同的庫或者表中,工作量挺大的。

2、分庫分表還要看以什麼條件去進行切分,分的不好,可能查詢次數變多,join無法使用,對排序分組也有很大的影響。這是個很重要的問題,要全面分析。

3、進行分庫分表後,是不是又要保證原子性,改動後事務處理變得複雜。

等等。。。。還有一些其他的原因。

tableStore

tableStore也叫表格存儲 是阿里雲自研的NoSQL多模型資料庫,提供海量結構化數據存儲以及快速的查詢和分析服務。

表格存儲支持分布式存儲和強大的索引引擎,能夠支持PB級存儲、千萬TPS以及毫秒級延遲的服務能力。

主要特點:

全託管。你只需專注於業務研發,無需擔心軟硬體預置、配置、故障、集群擴展、安全等問題,在保證高服務可用性的同時,極大地減少了管理及運維成本。模型豐富。包括Wide column、Timeline、Timestream、Grid。各種模型有各自適合的使用場景。無縫擴展。表格存儲通過數據分片和負載均衡技術,實現了存儲無縫擴展。隨著表數據量的不斷增大,表格存儲會進行數據分區的調整從而為該表配置更多的存儲。查詢能力強。通過二元索引基本能滿足傳統資料庫的查詢。高可靠。表格存儲將數據的多個備份存儲在不同機架的不同機器上,並會在備份失效時進行快速恢復。數據強一致。表格存儲保證數據寫入強一致,寫操作一旦返回成功,應用程式就能立即讀到最新的數據。高並發讀寫。支持千萬級並發讀寫能力。我們現在的項目當初做的時候也是挺急的,為了避免後期的大改動,所以選擇了這個作為數據存儲。

使用過程中文檔齊全,最主要的是性能確實很不錯,查詢,寫入性能很強。但是也存在著問題。

開發過程中遇到的缺點:

二元索引構建慢。你對一個表的查詢會用到多個欄位的時候,通常都是要簡歷二元索引的。數據寫入的時候,構建二元索引較慢,所以你通過索引查詢的時候存在延遲,大概2s左右。事務的支持。表格存儲只支持局部事務也叫分區鍵事務,可以指定某個分區鍵下的操作是原子的。也就是說你對一個表的批量寫是有事務的,如果換了表那就沒辦法了。這個對於分布式系統來說確實也是存在問題的,一個表寫入了,另一個表的寫入異常了,回滾不了。你覺得這個tableStore怎麼樣呢,有沒有更好的便捷存儲方式推薦,請留言!!!

相關焦點

  • MyCat分庫分表策略詳解
    常見的分庫分表方式有兩種:客戶端模式和伺服器模式,這兩種的典型代表有sharding-jdbc和MyCat。        作為服務端模式的典型代表,MyCat不僅提供了豐富的分庫分表策略,也提供了非常靈活的讀寫分離策略,並且其對客戶端的侵入性是非常小的。本文主要講解MyCat主要提供的分庫分表策略,並且還會講解MyCat如果自定義分庫分表策略。1. 配置格式介紹        在講解MyCat分庫分表策略之前,我們首先介紹一下其配置文件的格式。
  • 基於代理的資料庫分庫分表框架 Mycat實踐
    概 述在如今海量數據充斥的網際網路環境下,分庫分表的意義我想在此處就不用贅述了。而分庫分表目前流行的方案最起碼有兩種:方案一:基於應用層的分片,即應用層代碼直接完成分片邏輯方案二:基於代理層的分片,即在應用代碼和底層資料庫中間添加一層代理層,而分片的路由規則則由代理層來進行處理而本文即將要實驗的 MyCAT框架就屬於第二種方案的代表作品。
  • 面試官:「談談分庫分表吧?」
    應聘者:「前後端分離啊,限流啊,分庫分表啊。。」 面試官:"談談分庫分表吧?" 應聘者:「bala。bala。bala。。」1、分庫分表的原因1、隨著單庫中的數據量越來越大,相應的,查詢所需要的時間也越來越多,這個時候,相當於數據的處理遇到了瓶頸2、單庫發生意外的時候,需要修復的是所有的數據,而多庫中的一個庫發生意外的時候,只需要修復一個庫(當然,也可以用物理分區的方式處理這種問題)2、分庫分表的常用策略2.1 垂直切分:根據業務的不同,
  • 不信你看看,MySQL分庫分表沒有那麼難
    資料庫分庫分表估計很多夥伴都沒有實踐過,就是因為自己公司的業務不是很多,沒有那麼多數據。假如有一天項目的人數上來了,你寫的系統支撐不住了,希望這篇文章帶給你一絲絲的思路。 前言 在面試過程中你是不是會經常遇到對於資料庫分庫分表你有什麼方案啊!
  • MyCat入門篇-使用案例2:垂直拆分(分庫)
    例如採用如下的拆分方式:訂單模塊的表放在一個MySQL伺服器上。物流模塊的表放在另外一個MySQL伺服器上。用戶模塊的表再放在另外一個MySQL伺服器上。這樣來實現不同業務模塊的表分別放在不同的MySQL實例上,來分攤整個資料庫的壓力。整體的這個概念就是把不同的模塊的表分開存放在不同的MySQL資料庫實例中,我們有時候也稱之為分庫的操作。
  • MySql DAL中間件總結
    來源:民工哥技術之路ID:jishuroad作者:西門飛冰1.前言mysql作為網際網路公司都會用到的資料庫,如果在使用過程中出現性能問題,會採用mysql的橫向擴展,使用主從複製來提高讀性能,要是解決寫入問題,需要進行分庫分表。
  • 可以不會,不能不知的SpringBoot+Sharding-JDBC分庫分表項目實戰
    Sharding-JDBC 作為面向開發的微服務雲原生基礎類庫,完整地實現了分庫分表、讀寫分離和分布式主鍵功能,並初步實現柔性事務。它使用客戶端直連資料庫,以jar包形式提供服務,無需額外部署和依賴,可理解為增強版的JDBC驅動,完全兼容JDBC和各種ORM框架。
  • 分庫分表 or NewSQL資料庫?終於看懂應該怎麼選-愛可生
    分庫分表模式下需要應用設計之初就要明確各表的拆分鍵、拆分方式(range、取模、一致性哈希或者自定義路由表)、路由規則、拆分庫表數量、擴容方式等。相比NewSQL資料庫,這種模式給應用帶來了很大侵入和複雜度,這對大多數系統來說也是一大挑戰。
  • 架構秘笈:移花接木,使用MySQL模擬Redis
    改業務代碼是來不及了,只好用一些持久化存儲 ,來模擬redis的一些數據結構。redis支持近十種數據類型,最常用的有5種。string、hash、zset、set、list等。本文將針對幾種常見的數據結構,探討一下常用操作的模擬實現。
  • 一千行MySQL學習筆記
    >        不同的引擎在保存表的結構和數據時採用不同的方式        MyISAM表文件含義:.frm表定義,.MYD表數據,.MYI表索引        InnoDB表文件含義:.frm表定義,表空間數據和日誌文件        SHOW ENGINES -- 顯示存儲引擎的狀態信息        SHOW ENGINE 引擎名 {LOGS|STATUS}
  • MySQL資料庫高可用集群搭建-PXC集群部署
    PXC原理描述:分布式系統的CAP理論:C:一致性,所有的節點數據一致A:可用性,一個或者多個節點失效,不影響服務請求P:分區容忍性,節點間的連接失效,仍然可以處理請求其實,任何一個分布式系統,需要滿足這三個中的兩個。
  • MySQL數據克隆的用戶權限設計
    最近完成了初版的數據邏輯備份恢復的功能,和業務方做了一些交流和演示,發現他們對於備份恢復側的一些東東還是不夠敏感,因為因為一些術語的差異,他們不大理解所謂的備份恢復能幹什麼,所以我們做了一些討論,最後決定改為「數據克隆」。1.產品定位:數據克隆是高效,安全的從通過從線上指定資料庫/表克隆數據,從而快速構建虛擬環境,提供更高效的數據交付服務。
  • 專訪Mycat核心開發成員王金劍 :藉助Mycat輕鬆抵禦海量並發
    Mycat是一個開源的分布式資料庫系統,其核心功能是分表分庫,即將一個大表水平分割為多個小表,存儲在後端MySQL或者其他資料庫裡。取名Mycat原因一是簡單好記,另一個則是希望未來能夠入駐 Apache,Apache的開源產品Tomcat也是一隻貓。
  • DTCC2020阿里雲李飛飛:雲原生分布式資料庫與數據倉庫系統點亮數據...
    雲原生資料庫與數據倉庫有哪些獨特優勢?在日前的 DTCC 2020大會上,阿里巴巴集團副總裁、阿里雲資料庫產品事業部總裁、ACM傑出科學家李飛飛就《雲原生分布式資料庫與數據倉庫系統點亮數據上雲之路》進行了精彩分享。