突發奇想,對於數據庫,想到了一些有意思的事情和功能,算是對將來數據庫發展的一種暢想吧,期待將來有實力的公司或是科研機構能真正實現。sql
聊數據庫,先要說說操做系統,畢竟數據庫要安裝部署在操做系統上。
目前應用服務常見的硬故障分爲電源、CPU、硬盤、內存、網絡等,這些都是常見的、不可抗拒的故障。非分佈式操做系統下,各個服務器資源不能最大化的獲得合理利用,即便是如今的K8S容器時代,也是這樣。目前在應用服務層面,存在讀寫性能、CPU、內存、網絡等瓶頸,但在分佈式操做系統下的數據庫將突破這些瓶頸,將實現永動機型的應用,永不宕機,資源足夠的狀況下,各類資源自動彈性伸縮,性能永遠沒有瓶頸,總體的資源也獲得合理的利用,應用服務再也不關心硬件問題。
目前實現了文件存儲的分佈式(如ceph等文件系統),可是尚未實現CPU、內存、網絡的分佈式,即便只實現文件系統的分佈式,也帶來了數據庫的巨大變革,表明Aurora、PolarDB等,實現存儲與計算分離,在硬件上,基本上不用在關注硬盤故障的問題,安全、性能和彈性擴展能力獲得極大提高。
若是最主要的CPU、硬盤、內存、網絡所有實現了真正的分佈式,再也不區分單機CPU、硬盤、內存、網絡,全部的資源都在一個大池子中,全部分佈式集羣中的CPU和內存等資源是集羣共有的、能夠共享的,既能夠限定使用服務資源使用,也能夠實現自動彈性擴展,那麼則能夠實現提供100%可靠的應用服務,此時的服務不是運行在某個物理機上,是動態運行在分佈式操做系統中,即便其中的一個物理節點故障,徹底不會影響業務的正常運行、不影響數據的安全可靠性。
離開成本談架構是不且實際的,出現這種分佈式操做系統,須要軟件和硬件的支持,但隨着軟件和硬件技術的飛速發展,相信在將來會出現這種操做系統。數據庫
目前的數據庫智能化,應該說是自動化,運維的智能化也可能是如此,真正實現智能化的公司很少。對於智能數據庫,我的的暢想應該是利用機器學習,自動、自適應各類複雜環境,無人值守安裝部署、運維,並使數據庫時刻保持運行的最佳最優狀態。
1:性能參數自動調優,無配置文件化,CPU、內存、硬盤、網絡、內核、線程、TCP鏈接等自動調優,數據庫啓動開始到運行過程當中時刻保持各類參數的設置是最佳的、數據庫的性能是最優的。
2:自動添加和優化索引,數據庫表在建立的時候不須要指定索引,由數據庫根據實時的狀況建立最優的索引。
3:數據庫運維人員能夠動態指定開發規範,好比禁用大字段、沒有主鍵的表在建立的時候直接報錯,增長數據庫開發規範中的審覈功能。
4:SQL語句的自動重寫功能,對於複雜的SQL能夠自動的進行重寫,簡化並優化SQL執行效率。
5:並行查詢提高查詢效率。
6:詳盡的庫表訪問統計,可以區分冷熱數據,並能夠自動的進行冷熱數據分離,使數據庫熱數據始終處於最優最佳讀寫狀態。
7:數據存儲列式存儲和行式存儲並存,相似excel,橫豎都能計算,都能讀取,實現數據庫真正的HTAP,完美支持OLTP和OLAP場景。
8:集羣化管理更加簡化、實現傻瓜式管理,部署完成即成熟集羣,故障切換管理更加安全可靠。安全
目前的數據庫能夠說是你中有我,我中有你,你有的,你支持的,我必須也要有、也要支持。各類數據庫都有本身的最優適用場景,但場景是多樣化的,就出現了Oracle、MySQL、PG、Redis、MongoDB、Flink、Kafka等多種數據庫並存,這樣對研發和運維人員都是巨大的挑戰,用的越多越複雜,只是安裝這些軟件就須要耗費很大的精力。
在將來可能出現一種數據庫,兼具各類數據庫特長,並能代碼零修改直接使用的多種數據庫集,就像MariaDB支持Oralce數據庫同樣,只需修改sql_mode=Oracle,便可徹底兼容oralce語法。這種數據庫多是一種框架,其餘的數據庫直接熱插拔,即插即用。最終一種數據庫一統天下。服務器
想法不斷更新中。。。網絡