不做铺垫,因为公司在进行数据库转型,ORACLEtoMYSQL基于云上的MYSQL在使用中主要分为两派1传统型的RDS,也就是与我们自己安装的数据库有差别,但差别不大,2根据云上的硬件环境,最大最充分的修改数据库的内部结构,让数据库更能使用到我们的硬件环境,去适配他。
这也是我理解的云原生的数据库,云原生的数据库本身的依托就是硬件,没有更强悍的硬件作为宿主,和云底层技术,那么也就没有云原生数据库。
1POLARDB的底层POLARStore,Polarstore是整体是基于新型的硬件基础上进行的存储平台设计,在针对数据计算和存储中进行了数据计算与存储层的分离。在此基础上计算节点的扩容和存储节点的扩容,以及整体基于此硬件方式的POSTGRESQL和MYSQL都会快速的进行节点的扩展。
硬件方面使用了超高水平的NVMe硬件设备,RemoteDirectMemoryAccessRDMA,这是一个内部通过直接内存访问的模式来进行远程直接内存访问是一种技术,使两台联网的计算机可以在不依赖处理器、缓存或操作系统的情况下交换主存储器中的数据。与基于本地的直接内存访问(DMA)一样,RDMA提高了吞吐量和性能,因为它释放了资源,导致更快的数据传输速率和更低的RDMA支持系统之间的延迟。
基于POLARDB的产品主要以上的几个模块组成
1prolarproxy(智能代理)
2polardb(数据库)
3polarStore(硬件设备)
基于这套产品,我们整体的数据库的性能有很大的提升,以同样的硬件基础上,我们的数据库在POLARDBMYSQL与RDSMYSQL之间的性能区别在%以上。
在文件底层上传统我们的服务器数据底层使用的是EXT4或者XFS的文件系统,而我们的POLARDB使用的是POLARFS文件系统。
polarFS通过在一个线程中绑定CPU的方式来避免上下文切换导致的资源损耗,同时PolarFS优化了内存的分配,用内存池减少了内存对象的在分配和收回,使用超大内存页面来减少分页和虚拟内存和物理内存的切换导致的性能消耗,俗称TLBUPDATE。
同时POLARFS针对数据库系统将元数据信息缓存在内存中,减少或避免了I/O方面的元数据损耗。
同时对网络方面的堆栈也进行了考量在I/O系统中建立了完整的用户I/O栈,包含了RDMA,SPDK。
以上是基于在硬件层基础上的工作,同时在数据库的层面,对于sharednothinglogicalreplication的复制方式进行了改变,将复制改完了sharedstoragephysicalreplicaiton的方式。这对数据库的内核的源代码进行了修改。以MYSQL为例,原来通过binlog进行复制的方式,改变为通过redolog在polardbstore的基础上进行纯物理方式的复制。
这样的改变对于数据库的一些操作的性能是有改变的,以DDL操作为例,之前的操作需要主库操作后,从库进行操作,而使用了REDO的方式进行了改变后,整体的UPDATEmetadata的方式中,数据的metadata将不存在不一致的情况。而数据也将更新一次。
基于redo的数据更新模式,原有的集群中的数据传输模式被彻底的改变,数据的传输中底层的数据对于多少数据库前端都是一套,所以可以快速的进行数据节点的扩充,所有的数据库从节点的数据更新将基于共享数据存储的模式,直击数据库的MVCC等数据库原有的控制事务的模式。
从节点的数据和主节点的数据不一致的情况,与磁盘本身再无特殊的关联。
同时通过POLARDB的上层的代理层,将数据的访问进行读写的分离,通过读写分离模块与loadbalance模块,来整体对数据库的访问进行接管。组件可以判断整体的读操作与主节点之间的是否同步来返回结果。
那么POLOARDB的优点有那些
1存储和计算单元分离
独立的单元扩展
易于控制的消耗
2sharedStorage
高吞吐,低延迟
高可用
快速的
3基于物理的复制
更少使用I/O
不在因为DDL的原因BLOCKING数据的操作
更加有效的通过REDO来进行数据方面的复制
4并且的查询能力,可以获得更少的延迟,支持更复杂的查询
总结,POLARDB是阿里整体数据库产品的一个体系,他将强悍的硬件产品以及重新设计的软件数据库+智能的中间件封装在一起,属于彻彻底底的云原生数据库,基于云的硬件,云的数据库源代码,云方式的高可用方式。
carol11