為啥要分庫分表
你在一個創業型小公司做架構師,做的是電商項目,剛開始註冊人數就幾萬而已,交易最多每天就幾百單數據生成,這種情況下不用分庫分表沒問題的。
後面公司項目發展越來越快,用戶活躍數幾十萬,訂單生成數一天幾百萬,這個時候你的資料庫伺服器明顯的扛不住的,單表的數據太多,磁碟資源有限,一系列的壓力最終會導致系統無法使用。
這個時候架構師應該想到的是要進行業務劃分,使用sharding-jdbc、mycat進行分庫分表存儲海量的數據。
這個是能解決上述的問題的,但是往往不是那麼簡單。
1、大量的編碼工作,需要對查詢集合計算結果,存儲的時候按照不同的規則存入不同的庫或者表中,工作量挺大的。
2、分庫分表還要看以什麼條件去進行切分,分的不好,可能查詢次數變多,join無法使用,對排序分組也有很大的影響。這是個很重要的問題,要全面分析。
3、進行分庫分表後,是不是又要保證原子性,改動後事務處理變得複雜。
等等。。。。還有一些其他的原因。
tableStore
tableStore也叫表格存儲 是阿里雲自研的NoSQL多模型資料庫,提供海量結構化數據存儲以及快速的查詢和分析服務。
表格存儲支持分布式存儲和強大的索引引擎,能夠支持PB級存儲、千萬TPS以及毫秒級延遲的服務能力。
主要特點:
全託管。你只需專注於業務研發,無需擔心軟硬體預置、配置、故障、集群擴展、安全等問題,在保證高服務可用性的同時,極大地減少了管理及運維成本。模型豐富。包括Wide column、Timeline、Timestream、Grid。各種模型有各自適合的使用場景。無縫擴展。表格存儲通過數據分片和負載均衡技術,實現了存儲無縫擴展。隨著表數據量的不斷增大,表格存儲會進行數據分區的調整從而為該表配置更多的存儲。查詢能力強。通過二元索引基本能滿足傳統資料庫的查詢。高可靠。表格存儲將數據的多個備份存儲在不同機架的不同機器上,並會在備份失效時進行快速恢復。數據強一致。表格存儲保證數據寫入強一致,寫操作一旦返回成功,應用程式就能立即讀到最新的數據。高並發讀寫。支持千萬級並發讀寫能力。我們現在的項目當初做的時候也是挺急的,為了避免後期的大改動,所以選擇了這個作為數據存儲。
使用過程中文檔齊全,最主要的是性能確實很不錯,查詢,寫入性能很強。但是也存在著問題。
開發過程中遇到的缺點:
二元索引構建慢。你對一個表的查詢會用到多個欄位的時候,通常都是要簡歷二元索引的。數據寫入的時候,構建二元索引較慢,所以你通過索引查詢的時候存在延遲,大概2s左右。事務的支持。表格存儲只支持局部事務也叫分區鍵事務,可以指定某個分區鍵下的操作是原子的。也就是說你對一個表的批量寫是有事務的,如果換了表那就沒辦法了。這個對於分布式系統來說確實也是存在問題的,一個表寫入了,另一個表的寫入異常了,回滾不了。你覺得這個tableStore怎麼樣呢,有沒有更好的便捷存儲方式推薦,請留言!!!