突发奇想,对于数据库,想到了一些有意思的事情和功能,算是对未来数据库发展的一种畅想吧,期待未来有实力的公司或是科研机构能真正实现。
一:分布式操作系统---永动机型操作系统
聊数据库,先要说说操作系统,毕竟数据库要安装部署在操作系统上。
目前应用服务常见的硬故障分为电源、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语法。这种数据库可能是一种框架,其他的数据库直接热插拔,即插即用。最终一种数据库一统天下。
想法不断更新中。。。