突发奇想,对于数据库,想到了一些有意思的事情和功能,算是对将来数据库发展的一种畅想吧,期待将来有实力的公司或是科研机构能真正实现。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语法。这种数据库多是一种框架,其余的数据库直接热插拔,即插即用。最终一种数据库一统天下。服务器
想法不断更新中。。。网络