Le0
发布于

OushuDB 学习心得&学习笔记

数据基础设施的技术架构(MPP)

1980 年代,Teradata 首次推出了采取 MPP 无共享存储架构的数据库,其主要特点是基于大规模并行处理(MPP)架构,即在每个计算节点都有自己独有的存储节点,数据并均匀打散到所有节点存储,并将多个并行任务分散到不同的节点上执行。此外,Teradata 继续采用了类似早期 Oracle、DB2 等数据库的专有物理硬件。到 1990 年代之后,MPP 数据库被越来越多的应用到数据仓库的构建之中。
2006 年前后,Greenplum、Vertica 等支持 x86 通用服务器的 MPP 数据库出现,降低了数据仓库的建设和扩容成本。

数据基础设施的功能及性能特点

功能特点:无共享架构使得节点扩展变得更加容易,而不再受到共享存储架构的制约,节点数量上限一般能达到数百个;基于 x86 通用服务器的无共享架构,降低了扩展成本,提升了灵活性;对 SQL 标准、ACID 特性的支持性较好。性能特点:主导 MPP 数仓的 Teradata、EMC(收购 Greenplum)、惠普(收购 Vertica)等公司,在整体实力上同样较为雄厚,具备较强的基础研究和性能优化能力;无共享和 MPP 架构消除了在大数据场景下的性能瓶颈,提升了负载均衡能力,在大数据分析场景中有着超越交易型数据库的性能表现。
2005 年后,由于互联网、移动互联网的逐步普及,业务系统的终端用户量的爆发式增长,企业内沉淀的数据量同样呈现爆发式增长,数据基础设施开始进入“大数据平台”阶段。
先,数据类型十分多样,包括结构化数据(关系型数据库中的表)、半结构化数据(如 CSV、XML、日志、JSON)、非结构化数据(电子邮件、文档)、二进制数据(图形、音频、视频)等。
其次,数据维度更多,包含了用户的各类行为数据。此外,存储的数据量也从过去的 GB、TB 级别,进一步提升高 PB、EB 级别。该阶段的数字化展现形式更加多样,除了传统报表、可视化大屏,具备自助式分析能力的敏捷 BI 工具逐步普及。这使得在部分场景下,业务人员能够自行进行数据探索与分析,而不再需要 IT 人员、数据分析师随时进行技术支持。但是,MPP 数据仓库的扩展规模仅能到数百节点,难以进一步扩容,而且不支持非结构化、半结构化数据,逐渐难以满足企业需求。在这样的背景下,以 Hadoop 为代表的大数据技术逐步成为数据基础设施的核心技术之一。

数据基础设施的功能及性能特点(仅针对 SQL-on-Hadoop 数据仓库)

功能特点:由于计算存储分离架构的特点,SQL-on-Hadoop 数仓能够实现计算、存储分别扩展,因此在扩展性、在线扩容等方面有明显优势,支持上千节点的扩展规模;但是,由于 HDFS 的只读限制,SQL-on-Hadoop 数仓在对传统事务型数据库所具备的 SQL 标准、ACID 特性支持较差,这也使得应用从事务型数据库、MPP 数据库向 SQL-on-Hadoop 数仓迁移的过程中,存在大量不兼容的问题,即应用易迁移性较差。
性能特点:SQL-on-Hadoop 数仓由开源项目、互联网公司、初创型公司所主导,生态相比于前两代数仓更加开放,但是由于缺乏针对性能和功能的深度优化,在大多企业客户中只被应用于边缘场景,一直未达到能够全面取代传统数仓的要求。

数据基础设施的功能特点(云原生)

基于云原生、计算存储分离、虚拟计算集群等新型技术架构,数据云平台实现计算、存储节点独立扩展,突破了基于 MPP、SQL-on-Hadoop 技术的大数据平台在扩展性、灵活性方面的局限。
此外,数据云平台还克服了 SQL-on-Hadoop 数据库在 SQL 标准、ACID 特性等方面的不足,可以支持数字化应用从传统共享存储数据仓库、MPP 数仓向数据云平台的平滑迁移。最后,大数据平台的基础上,数据云平台吸纳了来自“数据中台”理念的数据资产层与数据服务层,从而形成“数据平台-数据资产-数据服务”的三层架构。
LAVA 数据管理平台(数据平台-数据资产-数据服务)
LittleBoy 自动化机器学习平台(数据开发建模)

OushuDB

OushuDB 属于 OLAP 数据库,是新一代云原生数据仓库。该产品采用了存储与计算分离技术架构,具有 MPP 的所有优点,同时还具有弹性,支持混合工作负载和高扩展性等优点。 同时支持公有云与私有云。高可扩展,遵循 ANSI-SQL 标准,具有极速执行器,提供 PB 级数据交互式查询能力。并且提供对主要 BI 工具的描述性分析支持和高级机器学习功能。兼容主流数据库的数据分析应用。并且原生支持 Kubernetes 容器平台,帮助企业无缝迁移到最新的云计算平台。
OushuDB 和 Apache HAWQ 有很多不同之处:

全新执行引擎,充分利用硬件的所有特性,比 Apache HAWQ 性能高出 5-10 倍

  • 支持 Update 和 Delete,以及索引
  • C++ 可插拔外部存储
  • 替换 Java PXF,性能高数倍,无需安装部署 PXF 额外组件,极大简化了用户安装部署和运维
  • 原生支持 CSV/TEXT 外部存储
  • 可以用于不同集群之间共享数据,比如数据仓库和集市之间共享及传输数据
  • 可以用于高速数据加载和数据导出
  • 可以实现高速备份和恢复
  • 可以实现可插拔文件系统:比如 S3, Ceph 等
  • 可以实现可插拔文件格式:比如 ORC,Parquet 等
  • 支持 ORC/TEXT/CSV 作为内部表格式,支持 ORC 作为外部表格式 (通过 C++ 可插拔外部存储)
  • 对 PaaS/CaaS 云平台的原生支持
  • 世界上首个可以原生运行与 PaaS 容器平台中的 MPP++ 分析型数据库
  • 支持 Kubernetes 集群容器编排与部署
  • CSV 和 text 文件格式中对非 ASCII 字符串或长度大于 1 的字符串作为分隔符的支持
  • 关键 Bug fixes
  • 极速执行器: 高效的执行器,比传统数仓/MPP 快 5-10 倍,比 Hadoop SQL 引擎要快 5-30 倍。
  • 公有云和私有云部署:支持亚马逊和阿里云等公有云平台,同时可以支持主流 PaaS 云平台(比如 Kubernetes 等)和 Docker 部署。
  • 对标准的完善支持:ANSI SQL 标准,OLAP 扩展,标准 JDBC/ODBC,比 Hadoop SQL 引擎都要完善。
  • 具有非常成熟的并行优化器。优化器是并行 SQL 引擎的重要组成部分,对性能影响很大,尤其是对复杂查询。
  • 支持 ACID 事务特性:这是很多现有基于 Hadoop 的 SQL 引擎做不到的,对保证数据一致性很重要。可以有效减少开发及运维人员的负担。
  • 动态数据流引擎:基于 UDP 的高速互联网络。
  • 弹性调度执行:可以根据查询大小来决定执行查询使用的节点及 Segment 个数。
  • 支持多种分区方法及多级分区:支持 List 分区和 Range 分区。分区表对性能有很大提升作用,如果用户只想访问最近一个月的热数据,查询只需要扫描最近一个月数据所在分区。
  • 支持多种压缩方法:snappy,gzip,zlib, zstd, lz4, RLE 等。
  • 多种存储过程语言支持:python, c/c++, perl 等。
  • 动态扩容:动态按需扩容,按照存储大小或者计算需求,秒级添加节点。
  • 多级资源和负载管理:和外部资源管理器 YARN 集成;可以管理 CPU,Memory 资源等;支持多级资源队列;具有方便的 DDL 管理接口。
  • 支持访问任何 HDFS 及其他系统的数据:各种 HDFS 格式(文本,ORC 等等)以及其他外部系统(Hive 等),并且用户自己可以开发插件来访问新的数据源。
  • 原生的机器学习数据挖掘库 MADLib 支持:易于使用及高性能。
  • 与 Hadoop 系统无缝集成:存储、资源、安装部署、数据格式和访问等。
  • 完善的安全及权限管理:kerberos;数据库,表等各个级别的授权管理。
  • 支持多种第三方工具:比如 Tableau,SAS,较新的 Apache Zeppelin 等。
评论
    test