您的位置  > 互联网

全球最大的CRM软件:数据库的优势:应用现状和发展趋势

01什么是

该数据库是一个功能强大的开源数据库,支持丰富的数据类型(如JSON和JSONB类型、数组类型)和自定义类型。

数据库提供了丰富的接口,可以方便地扩展其功能。 例如,您可以在GiST框架下实现自己的索引类型,支持使用C语言编写自定义函数和触发器,也支持使用流行的编程语言编写自定义函数。

PL/Perl提供了使用Perl语言编写自定义函数的功能,当然还有PL/、PL/Java、PL/Tcl等。

数据库的优点

数据库具有以下优点:

应用现状及发展趋势

目前在国外非常流行,尤其是近年来,越来越多的公司在使用数据库。

日本电报电话公司(NTT)使用大量替代数据库,并在其基础上开发了-XC。 -XC是一个共享架构的数据库集群,为用户提供完全兼容的接口。

亚信科技()基于-XC开发了AntDB数据库。 AntDB是面向金融、电信、政务、安防、能源等行业的分布式事务型关系数据库产品。 具有自动集群高可用、秒级在线扩缩容、异地容灾、SQL语句级自定义分片、分布式事务和MVCC等功能,兼容性强。 AntDB与数据库完全兼容。

腾讯基于-XC开发了TBase分布式数据库。 与-XC相比,其稳定性得到了很大的提高。 同时,TBase创造性地在内核中引入了GROUP概念,提出了双Key分配策略,有效解决了数据倾斜问题; 它根据数据的时间戳,将数据分为冷数据和热数据并存储在不同的存储设备中,有效解决了存储成本问题。

网络电话公司 Skype 也广泛使用它,并贡献了以下支持该数据库的开源软件。

全球最大的CRM软件服务商也开始使用它,并招募了核心开发人员Tom Lane。

著名的照片共享网站也被大量使用。

2012年,美国联邦机构转移焦点; 法国还积极推动政府机构采用数据库取代商业数据库。

在中国,越来越多的企业开始使用它。 比如Skye 的后端数据库基本都是使用数据库。 去哪儿网和平安科技也大量使用数据库。

亚马逊、阿里云、腾讯云、华为云等主流云服务商也提供云数据库服务。

有关数据库当前状态的更多信息可以在官方网站上找到:

数据库与其他数据库的比较

本节主要介绍该数据库与主流数据库MySQL和MySQL的异同。

1.与MySQL数据库的比较

有人可能会问,既然已经有了非常流行的开源数据库MySQL,为什么还要使用它呢? 这主要是因为不同的数据库有不同的特点,应该针对合适的场景选择合适的数据库。 在某些应用场景中,使用MySQL有以下主要缺点。

MySQL 8.0之前,多表连接查询方式仅支持“Nest Loop”,不支持Hash JOIN和Sort Merge JOIN(注:.0版本开始支持Hash JOIN,但并不完善,存在一些问题。

另外,由于MySQL没有完整的基于COST的优化器(CBO),从长远来看会出现一定的问题)。 不仅如此,它不支持很多SQL语法,而且子查询性能也比较低。 例如MySQL不支持单机,有的公司为此专门开发了统一序列号分配中心的软件。

如果MySQL运行过程中出现问题,性能监控数据很少,维护人员很难准确定位问题。

第一,大额交易会造成比较大的延迟; 第二,容易导致数据库不一致。 原因是逻辑复制很容易导致数据不一致,而MySQL的双层日志会让这个问题变得更加复杂,即主备库的复制是通过逻辑层实现的,但是还有一个物理层存储引擎下的Redo Log层。 整个过程复杂,很难保证主备库完全一致。

由于有两层日志(日志和Redo日志),因此/Slave异常切换过程中也很难做到数据零丢失。 一些第三方公司修改MySQL源代码来实现同步复制,但这些解决方案要么不开源,要么开源但不是很稳定。 因此,对于普通用户来说,如何实现数据库零丢失的同步复制是一个挑战。 让人头疼。

很多在线DDL需要重建表,成本非常高,而且有些操作还会锁表。 一些大型互联网公司要么修改MySQL源码实现在线DDL功能,要么通过上层架构解决这个问题。 例如,先在Slave数据库上完成DDL,然后将应用程序从数据库切换到Slave数据库,再切换到原数据库。 完成 DDL。

对于第一种方法,需要公司有较强的MySQL研发能力,而第二种方法则要求公司有较强的开发能力,能够设计强大的应用架构。 这对于一些中小企业来说并不容易实现。

虽然使用UDF或者外部动态库中的函数来扩展一些功能,但是能够扩展的功能非常有限。 例如MySQL访问其他数据库中的数据就比较困难。

与MySQL的这些弱点相比,它具有以下优点。

支持所有主流多表连接查询方式,如“Nest Loop”、“Hash JOIN”、“Sort Merge JOIN”等; 支持大多数SQL语法,例如CTE(.0之前不支持CTE)。

是笔者见过的对正则表达式支持最强、内置功能最丰富的数据库。 它的字段类型也支持数组类型。 除了使用PL/PGSQL来编写存储过程之外,还可以使用各种主流开发语言的语法(如语言的PL/、Perl语言的PL/Perl来编写存储过程)。

这些强大的功能可以大大节省开发资源。 很多开发者在网上开发的时候,会发现数据库实现了很多功能,甚至有些业务功能不再需要写代码来实现。 直接利用数据库的功能就可以解决这个问题。

数据库中有大量的性能视图可以很方便地定位问题(例如可以看到正在执行的SQL,通过锁视图可以看到谁在等待以及哪条记录被锁定)。 设计了特殊的架构和流程来收集性能数据,包括物理I/O的统计信息,以及表扫描和索引扫描的性能数据。

添加空值列时,您实际上只是在系统表上定义该列,而不更新物理结构。 这允许立即完成添加列。 还支持在线创建索引的功能,并且可以在索引创建过程中解锁更新操作。

提供安装和编写插件的整体框架,比如提供SQL语句方便加载插件; 编写动态库,方便添加功能; 提供外部数据源(FDW)框架和编程接口。 根据此框架和编程接口,可以轻松编写访问其他数据库和外部数据源的插件。

现在已经有针对现有常见外部数据源的第三方插件,比如MySQL、SQL等数据库。 通过这些第三方插件,可以方便地访问数据库中的外部数据。 另外还提​​供了hook函数接口,可以实现更强大的插件,比如分区表插件、citus分库分表插件等。

另外,由于MySQL对SQL语法的支持较弱,所以基本上不适合数据仓库。 虽然有厂商开发了MySQL数据仓库的存储引擎(如MySQL),但这种方案只解决了部分数据仓库问题,并不能完全解决SQL功能弱的问题。

而且社区版有很多功能限制,比如不支持数据更新、不支持太多并发执行(最多十几个)等。它不仅支持复杂的SQL,还支持大量的分析功能,这使得非常适合数据仓库。

数据库中还有一些支持移动互联网的新功能,比如空间索引。 它是最著名的开源GIS系统。 它是一个插件。 在 中使用起来非常方便。 LBS中的一些位置计算问题也可以轻松解决。

综上所述,该数据库是一个功能强大、具有移动互联网特点的开源数据库。

如果你只是想把数据库作为一个简单的存储软件(像一些大型互联网公司的情况),想在应用中实现一些比较复杂的功能,那么选择MySQL或者一些NoSQL产品是比较合适的。 如果你的应用程序的数据访问非常简单(比如大多数博客系统),那么使用MySQL作为后端也是合适的。

但如果你的应用程序不像博客系统那么简单,并且你不想消耗太多的开发资源,那么它是一个非常明智的选择。 最有说服力的例子就是照片分享公司。 采用“+”结构后,只有十几个人支撑起整个公司的业务。

在数据库中工作就像在开发语言中工作一样,使您的工作更简单、更高效。

2. 与数据库的比较

从功能上来说,它类似于数据库。 该数据库是目前最强大的商业数据库和最强大的开源数据库。 它在RAC、ASM等集群功能方面比较强,但也有一些比较强的特性,比如索引、可扩展性等。

它们都使用共享内存进程结构。 客户端与数据库服务器建立连接后,数据库服务器启动一个进程来为该连接提供服务。 这与MySQL的线程模型不一样。

和WAL日志、Redo日志一样,都是用来记录物理块数据的变化,这一点与MySQL不同。

主备数据库都很齐全。 可以构建同步备库、异步备库、延迟备库。 在同步备库中,您可以配置将数据同步到任意备库。 只读备库在查询和应用日志之间的冲突解决方面提供了更多的参数控制,使DBA更容易控制只读备库中的查询冲突。 配置备用数据库的过程更加简单,并且备用数据库的设置也更加灵活。

不同的是,支持互联网功能的功能更多。 例如数据类型支持网络地址类型、XML类型、JSON类型、UUID类型和数组类型,并具有强大的正则表达式功能。 例如where条件中可以使用正则表达式匹配,存储过程也可以用Perl、Perl等语言编写。 等待。

另外,它更加紧凑。 它可以完美运行在内存很小的机器上,比如512MB的云主机上,而数据库基本上需要运行在几GB的云主机上。

安装包大小往往有几GB甚至更大,而中国的安装包大小只有几十MB。 可以轻松安装在任何环境中。 数据库安装的时间是小时级别的,安装可以在分钟级别完成。

作者简介:唐成在数据库、操作系统、存储领域拥有20多年的工作经验。 现任中启倍增科技CTO,从事高性能、高可靠、高可用分布式数据库研究及数据库内核开发。 曾任阿里巴巴高级数据库专家、网易杭州研究院开发专家。

本文节选自《修炼之道:从同行到专家》(第二版),经出版社许可发表。