数据库选型咨询服务



随着数据量急增,用户群体需求变得复杂,作为数据资产的载体—数据库,在近些年随着数据库技术的发展,孕育而生各种数据库,可谓是百花齐放。
如何选择适合企业管理和发展的数据库,正成为企业架构人员思考的难题。


数据库需求现状


db-engines

图来自:https://db-engines.com/


由此可以看出,在各类型数据库的市场变动中,Oracle、MySQL和SQL Server还是占据绝对优势地位,无可撼动。

2019年最流行的开源数据库

2019年最流行的开源数据库


但随着国内数据库技术的成长,以及某些政策因素,使得国内开源数据库得到了蓬勃发展,其中占据主导的依然是MySQL数据库,其次是PostgreSQL以 13.4% 的开源数据库用户比例位居第二。

以上可以看出,目前处于使用多种数据库类型来满足应用程序需求的市场环境,其表现的增长趋势不可小视。例如,PostgreSQL 连续两年是人气增长最快的数据库,其用户群中有 11.5% 是目前正在迁移 PostgreSQL的组织。孕育在国产的数据库,例如,OceanBase,TELEDB也异军突起。


数据库选型技巧


功能需求

●  数据模型

在进行数据库选型前,首先需要知道自己所处业务的数据处理类型,关系型与非关系型。

  •  关系型,是建立在“有关系”基础上的数据,常见的结构就是由二维表及其之间的联系所组成的一个数据组织。其特点为:数据存储在关系表中,操作的性能瓶颈可能涉及很多个表,所以要支持更多并发量,SQL数据库是纵向扩展,提高处理能力,使用速度更快的计算机,这样处理相同的数据集就更快了。

    a. 优点:

        - 易于维护:都是使用表结构,格式一致
        - 使用方便:SQL语言通用,可用于复杂查询
        - 复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询
    b. 缺点:
        - 读写性能比较差,尤其是海量数据的高效率读写
        - 固定的表结构,灵活度稍欠
        - 高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈
    c. 代表:Oracle、MySQL、DB2、postgreSQL等

  •  非关系型,非关系型数据通常存储在数据集中,就像文档、键值对或者图结构,因此这类存储数据的数据库是横向扩展的,存储方式就是分布式的,其扩展方式,是通过给资源池添加更多普通的数据库服务器。

    a. 优点:
        - 格式灵活:存储数据的格式可以是key、value形式、文档形式、图片形式等等,文档形式、图片形式等等,应用场景广泛,而关系型数据库则只支持基础类型
        - 速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘,并且具有高拓展性
        - 成本低:nosql数据库部署简单,基本都是开源软件。
    b. 缺点:
        - 不提供sql支持,学习和使用成本较高
        - 无事务处理
        - 数据结构相对复杂,复杂查询方面稍欠
    c. 代表:MongoDB、Neo4j、HBase、Redis等

●  业务负载
根据业务处理的负载来看,可划分为OLTP数据库(交易型)和OLAP数据库(分析型)。
  •  OLTP数据库,OLTP(OnLine Transacion Processing),是传统关系型数据库的主要应用,主要面向基本的、日常的事务处理,例如银行交易等,这类业务处理要求实时性高,且并发性要求高,并且严格要求事务的完整性,安全性。

  •  OLAP数据库,OLAP(OnLine Analysis Processing),具有灵活的分析功能、直观的数据操作和分析结果可视化表示等突出优点,从而用户对基于大量复杂数据的分析变得轻松而高效。侧重点在于对大量数据的分析,而不讲究实时性。

OLTP数据库(交易型)和OLAP数据库(分析型)

  •  OLTP代表:Oracle、MySQL、DB2、SQL Server、PostgreSQL
  •  OLAP代表:Teradata、Sybase IQ、KADB

企业在构建自己的IT系统时,需要根据自己的具体的业务处理和数据,实际选择适合业务模式的数据库产品,这样才能设计和构建高效、稳定的企业应用系统。

架构方式
主流的数据库架构方式,主要分为:
●  集中式架构
作为该架构的典型代表就是过去辉煌的“IOE”架构,也即是I(IBM小型机),O(Oracle数据库),E(EMC高端存储),当然近些年“I”与“E”,相继被更为价格实惠其性能稳定的产品替换。其使用的架构方式,依旧采用共享存储,或本地互备架构。例如,Oracle RAC集群,HACMP数据库管理等。
但是在这种集中式架构,单机计算能力充裕,但是面对互联网大数据,高并发的访问下出现性能瓶颈。那解决这种场景,就需要进行水平扩展和垂直扩展,那通常就是升级硬件能力,实现数据库服务能力扩展。
●  分布式架构
不同于集中式架构,分布式数据库架构具备的弹性扩容和多中心的特点,能够通过提供在线扩容、在线迁移等多种弹性扩容方式,应对业务变更及不定期扩容缩容要求,同时实现多个机房内数据同步并保持数据一致,以及数据机房容灾,做到对业务连续性的全面保障分布式在架构上,可以及时扩展性能应对变化的数据量。                                                               

常见的分布式的数据库产品

●  TiDB——由tidb、tikv、pd、tispark等组件组成,底层使用rocksdb kv存储引擎。Pd负责全局事务管理,数据层基于region级别做raft复制,节点间数据根据负载实时移动。产品开源、轻量、社区生态良好,是互联网企业分布式数据库首选。
●  SequoiaDB——NoSQL数据库,在金融行业历史数据平台和归档平台上有着十分广泛的应用。目前加入了MySQL Server层做SQL解析,正在做全局事务管理器,底层是巨杉的可插拔式多模存储引擎。产品整体在朝着交易型NewSQL数据库方向发展。
●  OceanBase——阿里为应对淘宝双十一等业务场景由蚂蚁金服团队专门开发的数据库,因为数据库有着一定的场景局限性,所以目前在市场上应用其实并不广泛,而且在双十一场景下为了保证性能数据库是基本不允许使用分布式事务的。
●  PolarDB——阿里研发的云数据库产品,采用计算存储分离的架构,由上层计算层DBServer和存储层chunk server组成,之间通过rdma高速网络连接。计算层基于MySQL或者PostgreSQL数据库,能够做到弹性伸缩。
●  GoldenDB——中兴通讯GoldenDB是一款具有银行基因的金融级分布式数据库产品,基于MySQL,从架构层面保证事务强一致和数据高可靠,并可根据业务需要实现在线扩容。
●  Tbase——基于经典pgxc架构做的偏分析型分布式数据库。
●  TDSQL——腾讯基于MySQL半同步做的分布式数据库,使用ZooKeeper做元数据管理,在上层加入网关层做路由转发个主备切换。
●  GaussDB——华为研发的金融级分布式数据库,基于经典pgxc架构,但是做了很大的改动,目前Gauss300是面向交易型的分布式数据库,具备高可靠、高性能、强一致等特点。
●  Antdb——基于经典pgxc架构开发。
●  ……

成本控制
●  产品成本
Oracle、DB2、SQL Server、MySQL(企业版)等均是商业型数据库,需要购买其软件授权许可和服务。
MySQL(社区版)、MongoDB、PostgreSQL均有开源社区版,能够免费提供用户使用,因此积累了较多的用户群体,本身的性能和稳定性也得到了很好的改善,在大多数小型企业中此类数据库是首先之一。

●  运维成本
Oracle、DB2、SQL Server、MySQL(企业版)等商业型数据库,投入了大量的工程师资源开发,其本身涵盖的工具以及服务能力是比较成熟的,因此在使用过程中比较简便。
MySQL(社区版),MongoDB ,PostgreSQL目前也有大量的开源工具使用,但由于这些开源工具大多是基于自身环境定制开发的,因此在使用场景上不一定能够完全吻合,还需要结合自己环境和需求进行二次开发。

●  代码迭代成本
商业数据库具备成熟、完整的研发售后体系,产品的成熟度高,稳定性好。此类产品的迭代周期较长,因此企业部分业务需求实现受限于数据库产品公司功能研发。
开源数据库具备新场景,产品的迭代周期短,企业可根据自己的需求模式,进行二次开发,以实现关键业务。但是,在此类产品下,对数据库技术人员要求较高,仅了解和使用是难以承担架构扩展的。
此外,需要考虑一个额外因素,也即是厂商支持。开源技术能够增强灵活性,降低成本,但是缺少商业化支持,因此其本身所需的运维知识成本就会急剧增加。特别是一些业务型企业,其科技人员更多是专注与实现业务需求,对开源底层技术掌握有限。


服务指导


云和恩墨,依托业界先进经验、最佳实践为客户提供从底层架构到上层数据库系统的全方位系统架构设计,提供健壮、高效、适用、平滑扩展的企业级数据库系统架构规划;
在企业数据环境中,如何构建可靠、稳定、安全的系统架构,越来越成为企业IT建设的重点,我们依据专业经验,可以在构建数据架构中为企业提供专项或长期的咨询、建设以及运维服务,帮助企业实现数据架构设计目标。

相关案例
乐蜂网
行 业:商业流通
项 目:乐蜂网
服务价值:最终实现系统的快速部署、无缝割接,成功实现了用户的新一代系统规划。