数据库全景图总结

上一篇:数据库系统排名


1 数据库全景图

请添加图片描述

2 数据库分类

数据库可以分为3大类:

  • SQL:Structured Query Language,指传统的关系型数据库(RDBMS)。主要代表:SQL Server、Oracle、MySQL、PostgreSQL。
  • NoSQL:Not Only SQL,泛指非关系型数据库。主要代表:MongoDB、Redis、CouchDB。
  • NewSQL:对各种新的可扩展/高性能数据库的简称。主要代表:Clustrix、GenieDB。
SQLNoSQLNewSQL
关系模型×
SQL语句×
ACID×
水平扩展×
大数据×
无结构化××

三类数据库的对比:

  1. SQL:它坚持 ACID 准则 (原子性,一致性,隔离性,持久性)。好处来源于它的统一性和易用性,缺点是面对大量的数据时,他的性能会随着数据库的增大而急剧下降。
  2. NoSQL:以放宽ACID原则为代价,NoSQL采取的是最终一致性原则,而不是像关系型数据库那样地严格遵守着ACID的原则,这意味着如果在特定时间段内没有特定数据项的更新,则最终对其所有的访问都将返回最后更新的值。 这就是这样的系统通常被描述为提供基本保证的原因(基本可用,软状态,最终一致性), 而不是ACID。
  3. NewSQL:NewSQL选择汲取了SQL和NewSQL的优点,希望将ACID和可扩展性以及高性能结合。但是目前而言,不适用于所有的场景。

2.1 SQL

传统的关系型数据库(RDBMS),即SQL数据库。

单机版的SQL数据库难以满足海量数据的需求。通常的解救办法:

  1. 升级服务器硬件
  2. 数据分片,使用分布式集群结构

数据分片导致以前在一个库里的数据,现在跨了多个库,应用系统不能自己去多个库中操作,需要使用数据库分片中间件。但分片中间件做简单的数据操作时还好,但涉及到跨库join、跨库事务时就很头疼了。导致很多人干脆自己在业务层处理,复杂度较高。

MySQL

1、定位:
  开源、多平台、关系型数据库;目前使用最广泛、流行度最高的的开源数据库。

2、特点:

  • 支持事务,符合关系型数据库原理,符合ACID,支持多数SQL规范,以二维表方式组织数据,有插件式存储引擎,支持多种存储引擎格式

  • 用编译安装的方式,或者二进制包的方式,按照“安装软件-创建实例-库表用户初始化”,可以很快完成数据库部署

  • 使用标准的SQL语句进行数据库管理,简单SQL语句的并发和性能较好,对视图、存储过程、函数、触发器等支持的不是太好

  • 在命令行界面有一些常用的命令显示状态和性能,在图形界面方面,有比较多的开源监控工具来监控和记录数据库的状态,比如zabbix,nagios,cacti,lepus等

  • 逻辑备份 mysqldump/mysqldumper ,物理备份 用xtrabackup等工具进行备份;

  • MySQL高可用有多种方案,官方有基础的master-slave主从复制,新版本的innodb cluster,第三方的有MHA等高可用方案;

  • MySQL水平拆分,可以通过水平拆分proxy中间进行逻辑映射和拆分,扩大MySQL数据库的并发能力和吞吐量。

3、适用场景:

  • 默认的innodb存储引擎,支持高并发,简单的绝大部分OLTP场景;

  • Tokudb存储引擎,使用高并发insert的场景;

  • Inforbright存储引擎,可以进行列压缩和OLAP统计查询场景;

4、选择注意:

  • 使用MySQL进行OLTP业务时,需要注意数据量级,如果数据量级过大,需要进行水平拆分;

  • 如果有OLAP需求,可以结合其他架构综合考虑。

Oracle

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。

1、定位:

  • 商业、多平台、关系型数据库
  • 功能最强大、最复杂、市场占比最高的商业数据库

2、特点:

  • 支持事务,符合关系型数据库原理,符合ACID,支持多数SQL规范,以二维表方式组织数据
  • Oracle单实例数据库部署相对容易,但Oracle RAC集群环境,部署的步骤和依赖条件都比较多;
  • 通常使用命令行工具,进行各种数据库的管理,通常也可以用shell脚本和python脚本提高Oracle数据库管理效率;各种管理功能,都比较强大;
  • Oracle官方有比较全面的监控工具,常用的第三方监控平台,如zabbix,cacti,lepus等都有对Oracle数据库的各项指标的完善监控;
  • 支持冷备份和热备份,可以用 exp/imp , expdp/impdp等进行逻辑备份和恢复,可以使用强大的RMAN工具进行专业的物理热备份和恢复;
  • Oracle数据库的高可用架构,可以用第三方双机热备软件,结合Oracle单实例实现;可以使用Oracle Dataguard,实现master和standby的备份;可以使用 Oracle RAC集群实现实例级别的高可用和负载均衡,使用ASM实现存储级别的高可用;
  • 由于Oracle集群采用共享存储的方式,一般只能通过垂直硬件升级进行升级;

3、适用场景:
    绝大多数OLTP场景,部分OLAP

4、选择注意:
    Oracle从架构到运维,可以说是最难的数据库,学习和使用难度较高。

SQL Server

SQL Server是由微软开发的数据库管理系统,是Web上最流行的用于存储数据的数据库,它已广泛用于电子商务、银行、保险、电力等与数据库有关的行业。
    它只能在Windows上运行,操作系统的系统稳定性对数据库十分重要。并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限。
    SQL Server 提供了众多的Web和电子商务功能,如对XML和Internet标准的丰富支持,通过Web对数据进行轻松安全的访问,具有强大的、灵活的、基于Web的和安全的应用程序管理等。而且,由于其易操作性及其友好的操作界面,深受广大用户的喜爱。

1、定位:

  • 商业、Windows平台、关系型数据库
  • 最早接触、与微软体系结合紧密的的商业数据库,属于“微软技术体系”

2、特点:

  • 支持事务,符合关系型数据库原理,符合ACID,支持多数SQL规范,以二维表方式组织数据
  • 在Windows平台,使用SQL Server Mangement Studio图形界面进行安装;
  • 一般通过Windows资源管理和SQL server图形工具进行系统和数据库性能显示;
  • 通常用第三方备份恢复软件进行备份恢复,通过共享存储和双机热备的方式,可以实现SQL Server数据库的高可用;
  • SQL Server数据库集群采用共存存储的方式,通过硬件垂直升级来对数据库集群进行扩展;

3、适用场景:
    大多数OLTP场景(与微软体系配合)

4、选择注意:

  • SQL Server与微软技术体系结合比较紧密,绝大多数工作,都是通过图形界面完成,对于习惯使用命令行的DBA可能会有不习惯;
  • SQL server对双引号,大小写,元信息的管理和处理方式,与其他数据库很不相同,需要注意;
  • 使用SQL Server满足OLTP业务,会有比较好的效果,但对于大数据量的OLAP业务,最好还是选用专门的OLAP架构,不要在同一个SQL Server实例上混用OLTP和OLAP业务;

SQL server属于商业软件,需要注意版权和licence授权费用;

PostgreSQL

基础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引。免费使用、修改、和分发 PostgreSQL,不管是私用、商用、还是学术研究使用。

PostgreSQL 是一个免费的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird),和专有系统(比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server)之外的另一种选择。

1、定位:
    开源、多平台、关系型数据库,功能最强大的开源数据库。

2、特点:

  • 支持事务,符合关系型数据库原理,符合ACID,支持多数SQL规范,以二维表方式组织数据;
  • postgresql需要先准备好Python等环境,然后编译安装软件,初始化数据库,启动实例,整个部署过程相对比较清晰;
  • postgresql数据库可以使用命令行方式进行管理,也可以通过pgadmin图形工具进行管理;各种管理功能,都比较强大;
  • 可以再命令行中查看各种性能视图和状态视图;相对其他其他数据库,并没有太好的图形监控工具和平台;
  • 支持冷备份和热备份,可以用 COPY命令进行逻辑导出和导入;用pgdump和pgrestore进行物理备份和恢复;
  • postgresql 官方支持 master-standby复制;也可以用Slony-I第三方组件进行数据库同步;
  • postgresql可以通过修改源码实现的postgres-XC实现水平扩展;

3、适用场景:

  • 绝大多数OLTP场景,部分OLAP
  • 适合目前互联网需要的一些信息,比如地理位置信息处理;
  • 以postgresql作为底层数据库的greenplum数据仓库,是主流的MPP数据仓库;
  • 基于postgresql的TimeScaleDB,是目前比较火的时序数据库之一;

4、选择注意:

  • Postgresql的架构、使用难度、功能性介于Oracle数据库和MySQL数据库之间,但因其开源的推动,各方面也有不错的发展;
  • Postgresql目前还没有比较主流和好用的监控平台,这是postgresql数据库目前存在的一个不足。

2.2 NoSQL

非关系型数据库。弃了传统SQL的强事务保证和关系模型,重点放在数据库的高可用性和可扩展性。

  • NoSQL采取最终一致性原则,通常被描述为只提供基本了保证(基本可用,软状态,最终一致性),牺牲了ACID原则。对于普通应用没问题,但还是有不少像金融一样的企业级应用有强一致性的需求。

  • NoSQL 不支持 SQL 语句,兼容性是个大问题,不同的 NoSQL 数据库都有自己的 api 操作数据,比较复杂。

NoSQL 的主要优势:

  • 高可用性和可扩展性,自动分区,轻松扩展
  • 不保证强一致性,性能大幅提升
  • 没有关系模型的限制,极其灵活

1 键值存储数据库

键值(Key-Value)数据库

键值数据库就类似传统语言中使用的哈希表。可以通过key来添加、查询或者删除数据库,因为使用key主键访问,所以会获得很高的性能及扩展性。

键值数据库主要使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署、高并发。

典型代表:Memcached、Redis

Memcached

Memcaced是一个开源的、高性能的、具有分布式内存对象的缓存系统。通过它可以减轻数据库负载,加速动态的web应用,最初版本由LiveJoumal 的Brad Fitzpatrick在2003年开发完成。目前全球有非常多的用户都在使用它来架构主机的大负载网站或提升主机的高访问网站的响应速度。注意:Memcache 是这个项目的名称,而Memcached是服务端的主程序文件名。
    缓存一般用来保存一些进程被存取的对象或数据,通过缓存来存取对象或数据要比在磁盘上存取块很多,前者是内存,后者是磁盘、Memcached是一种纯内存缓存系统,把经常存取的对象或数据缓存在memcached的内存中,这些被缓存的数据被程序通过API的方式被读取,memcached里面的数据就像一张巨大的hash表,数据以key-value对的方式存在。Memcached通过缓存经常被存取的对象或数据,从而减轻频繁读取数据库的压力,提高网站的响应速度,构建出快速更快的可扩展的Web应用。

Redis

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

1、定位:

  • 开源、Linux平台、key-value键值型Nosql数据库
  • 简单稳定,非常主流的、全数据in-momory、定位于“快”的键值型nosql数据库

2、特点:

  • 命令执行速度非常看,读写性能可达10万/秒;数据结构是key-value类似字典的功能,可以键过期-缓存,发布订阅-消息系统,简单的事物功能;
  • 用下载软件介质,编译安装的方式,可以很快完成数据库部署;服务启动redis-server,可以用默认配置、运行参数配置、配置文件启动,三种方式;redis在Linux平台支撑较好,官方没有Windows版本,微软维护了一个分支;
  • 用redis-cli客户端连接,一般用简单的 set ,get,del 进行数据管理; 在单实例redis的基础上,进行可以数据持久化,主从复制,高可用和分布式等功能;
  • 在命令行界面有一些常用的命令显示状态和性能,在图形界面方面,有开源监控工具来监控和记录数据库的状态,比如cachecloud;
  • 直接备份成物理问价的RDB持久化,基于AOF日志的实时AOF持久化
  • 官方的 redis sentinel哨兵高可用集群
  • 官方基于分配槽的 redis cluster分布式集群

3、适用场景:

  • 缓存
  • 基础消息队列系统
  • 排行榜系统
  • 计数器使用
  • 社交网站的点赞、粉丝、下拉刷新等应用;

4、选择注意:

  • Redis的使用场景,是redis适合的解决的问题,也有不适合解决的问题。
  • 从数据规模角度讲,小数据规模使用redis比较合适,大数据规模使用redis不合适;(大数据规模,在一定程度上,可以用SSDB替代redis使用);
  • 从数据冷热角度看,热数据适合放在redis中,冷数据不适合放在redis中。

2 文档数据库

面向文档(Document-Oriented)数据库

面向文档数据库会将数据以文档形式存储。每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个名词与对应值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或JSONB等多种形式存储。

典型代表:MongoDB、CouchDB

MongoDB

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

1、定位:

  • 开源、多平台、文档型nosql数据库
  • 非常主流的文档型nosql数据库,“最像关系型数据库”,定位于“灵活”的nosql数据库

2、特点:

  • 数据文件存储格式为BSON,模式自由,整体架构与关系型数据库有对应关系,具有较好的高可用性和伸缩性,有插件式存储引擎,新版本默认是writedtiger存储引擎;
  • 部署比较简答,下载软件,设置好配置文件即可启动服务;
  • 不支持SQL语句,使用与SQL对应的json方式管理数据库;
  • 有比较丰富的监控和性能命令,官方有比较完善的图形监控系统,但需要购买;
  • 支持冷备份和热备份,可以使用mongoexport/mongimport进行逻辑备份,也可以使用基于oplog的mongodump/mongorestore物理热备份;
  • MongoDB master-slave主从复制:在master节点上加 --master参数,从数据库加 -slave和-source参数,就可以实现同步,这种目前不建议;ReplicaSets复制集,在mongodb 1.6之后,开发了新的 replicaset,着呢家了故障自动切换和自动修复成员节点,各个DB将数据一致,建议使用这种方式;可以测试读写分离和故障转移;
  • mongodb海量数据水平拆分,将数据分别存储在sharding各个节点上,构建出分布式集群。Sharding架构由 底层多个mongodb Shared Server,config水平拆分配置库config server,前端路由 route process,三部分构成。Sharding集群底层可以是mongodb单实例,也可以高可用的replicaSet复制集。

3、适用场景:

  • 网站后台数据库:mongodb非常适合实话实说插入、更新与查询,并可以实时复制和高伸缩性,适合更新迭代快、需求变更多、以对象为主的网站应用;
  • 小文件系统:对于json文件,二进制数据,适合用mongodb进行存储和查询
  • 日志分析系统:对于数据量大的日志文件,IM会话消息记录,适合用mongodb来保存和查询;
  • 缓存系统:mongodb数据库也会使用大量的内存,合理的设计,也可以作为缓存系统使用;不过目前缓存系统使用更多的方案是 memcached和redis。

4、选择注意:
Mongodb不适合的场景:

  • 高度事务性的系统:即传统的OLTP业务,mongodb,乃至其他nosql,对事务性支持都不太好;
  • 传统的统计分析应用:即传统的OLAP业务,需要高度优化的查询方式,mongodb支持不好;
  • 使用SQL语句比较方便的业务:mongodb是json类型的查询方式,虽然也灵活,但不如用SQL方便,如果业务和适合SQL,则就不太合适mongodb了。
CouchDB

3 列式存储数据库

列存储(Column-oriented)数据库

列存储数据库将数据存储在列族中,一个列族存储经常被一起查询的相关数据,比如人类,我们经常会查询某个人的姓名和年龄,而不是薪资。这种情况下姓名和年龄会被放到一个列族中,薪资会被放到另一个列族中。

这种数据库通常用来应对分布式存储海量数据。

典型代表:HBase、Cassandra

HBase

HBase是一个分布式的、面向列的开源数据库,是 Apache Hadoop 中的一个子项目,属于 bigtable 的开源版本,所实现的语言为Java(故依赖 Java SDK)。

HBase 依托于 Hadoop 的 HDFS(分布式文件系统)作为最基本存储基础单元。

HBase在列上实现了 BigTable 论文提到的压缩算法、内存操作和布隆过滤器。HBase的表能够作为 MapReduce 任务的输入和输出,可以通过Java API来访问数据,也可以通过REST、Avro或者Thrift的API来访问。

1、定位:

  • 开源、Linux平台、列存储nosql数据库
  • 可用于海量数据存储、与Hadoop生态圈结合、定位于“大”的列存储nosql数据库

2、特点:

  • 命令执行速度非常看,读写性能可达10万/秒;数据结构是key-value类似字典的功能,可以键过期-缓存,发布订阅-消息系统,简单的事物功能;
  • 相对其他数据库,hbase的部署比较复杂,依赖Hadoop,zookeeper等组件,Hbase集群包括一个mater节点,多个regionServer,zookeeper管理所有regionServer,需要依次部署Hadoop、zookeeper之后,再部署HBASE集群;
  • 用redis-cli客户端连接,一般用简单的 set ,get,del 进行数据管理; 在单实例redis的基础上,进行可以数据持久化,主从复制,高可用和分布式等功能;
  • 在命令行界面有一些常用的命令显示状态和性能,在图形界面方面,有开源监控工具来监控和记录数据库的状态,比如cachecloud;
  • Hbase一般用作海量数据的仓库,本身通过多层副本来保证数据安全性,不用进行专门的备份
  • HBASE集群基于Hadoop,需要依次部署Hadoop单机模式、集群模式、HA模式,通过Hadoop HA实现高可用;
  • HBASE以集群形式,依次是单机模式,伪分布模式,完全分布模式,底层基于HDFS,zookeeper可以很好地进行扩展;

3、适用场景:

  • 用于简单数据写入和海量、结构简单数据查询的业务场景;
  • 用于成为其他数据库备份和下沉的数据库;

4、选择注意:
Hbase不适合的场景:

  • 对数据分析需求高,需要能够用sql或者简单的MapReduce实现分析需求的业务场景,不适合用Hbase;
  • 单表数据量,不超过千万时,使用Hbase,体现不出Hbase的优势,而且会比较慢,不适合用Hbase。
Cassandra

4 图形数据库

图形(Graph)数据库

图形数据库允许我们将数据以图的方式存储。实体会被作为顶点,而实体之间的关系则会被作为边。比如我们有三个实体,Steve Jobs、Apple和Next,则会有两个“Founded by”的边将Apple和Next连接到Steve Jobs。

典型代表:Neo4J、Infinite Graph、OrientDB

Neo4J

2.3 NewSQL

对各种新的可扩展/高性能数据库的简称。NewSQL选择汲取了SQL和NewSQL的优点,希望将ACID和可扩展性以及高性能结合。

  • 针对OLTP的读写,提供与NOSQL相同的可扩展性和性能,同时能支持满足ACID特性的事务
  • 即保持NoSQL的高可扩展和高性能,并且保持关系模型

传统的SQL架构设计基因中是没有分布式的,而 NewSQL 生于云时代,天生就是分布式架构。

为什么需要NewSQL

  • NoSQL 不能完全取代 RDBMS

  • 单机RDBMS 无法满足性能需求

  • 使用“单机RDBMS + 中间件”方式,在中间件层很难解决分布式事务、高可用问题

NewSQL 的主要优势

  • SQL 支持,支持复杂查询和大数据分析。
  • 支持 ACID 事务,支持隔离级别。
  • 弹性伸缩,扩容缩容对于业务层完全透明
  • 高可用,自动容灾。

NewSQL设计架构

  • 可以基于全新的数据库平台,也可以基于现有的SQL引擎优化。
  • 无共享存储(MPP架构)是比较常见的架构
  • 基于多副本实现高可用和容灾
  • 分布式查询
  • 数据Sharding机制
  • 通过2PC,Paxos/Raft等协议实现数据一致
Vitess

开源,Vitess 是一个分布式 MySQL 工具集,它可以自动分片存储 MySQL 数据表,将单个 SQL 查询改写为分布式发送到多个 MySQL Server 上,支持行缓存(比 MySQL 本身缓存效率高)与复制容错等。Vitess 4.0 中有许多改进,可以使新用户更容易使用,可以很容易的在k8s上部署Vitess,从单一的 MySQL 或 MariaDB 迁移到Vitess 成为可能,而应用对此有所感知。

CockroachDB

CockroachDB (蟑螂数据库)是一个可伸缩的、支持地理位置处理、支持事务处理的数据存储系统。CockroachDB 提供两种不同的的事务特性,包括快照隔离(snapshot isolation,简称SI)和顺序的快照隔离(SSI)语义,后者是默认的隔离级别。

CockroachDB是一个分布式的K/V数据仓库,支持ACID事务,多版本值存储是其首要特性。主要的设计目标是全球一致性和可靠性,从蟑螂的命名上是就能看出这点。蟑螂数据库能处理磁盘、物理机器、机架甚至数据中心失效情况下最小延迟的服务中断;整个失效过程无需人工干预。蟑螂的节点是均衡的,其设计目标是同质部署(只有一个二进制包)且最小配置。CockroachDB 无需重新配置,也无需进行大规模的架构大修 就可以水平扩展,只需在集群中添加一个新节点就可以了,CockroachDB就会处理底层的复杂性。

  • 只需向集群添加新节点即可进行扩展
  • 自动平衡和分配分段的范围,不是分片
  • 在所有节点上均匀地优化,以提升服务器利用率
TiDB

https://pingcap.com/
企业版收费,TiDB 是一款定位于在线事务处理/在线分析处理( HTAP: Hybrid Transactional/Analytical Processing)的融合型数据库产品,实现了一键水平伸缩,强一致性的多副本数据安全,分布式事务,实时 OLAP 等重要特性。同时兼容 MySQL 协议和生态,迁移便捷,运维成本极低。但是从使用情况来看,它对硬件要求较高。目前也分社区版和企业版。

ClustrixDB

http : //http://www.clustrix.com/
收费,MariaDB 2018年收购了ClustrixDB,它目前是一个类MYSQL的关系数据库, 可以很容易的从MySQL迁移 到ClustrixDB。ClustrixDB与MySQL客户机兼容,但与mazon Aurora不同,它是分布式的,可以扩展写操作,并且不会产生单独的IO和存储费用,它从底层就支持web、移动和物联网(IoT)等具有最极端的可扩展性要求的应用程序,并且是在不损害关键特性的情况下做到这一点,数据库需要为带有关键型任务应用程序提供对可靠数据访问服务:事务和SQL。

MemSQL

http://www.memsql.com/
收费,MemSQL最大的卖点就是性能,同时兼容兼容MySQL。MemSQL,2012年12月14日发布,是世界上最快的关系数据库,能实现每秒150万次事务。MemSQL是一个分布式的、高度可伸缩的SQL数据库,可以在任何地方运行。我们使用熟悉的关系模型为事务性和分析性工作负载提供最高性能.MemSQL是一个可扩展的SQL数据库,它不断地吸收数据,为您的业务一线执行操作分析。使用ACID事务每秒接收数百万个事件,同时以关系SQL、JSON、地理空间和全文搜索格式分析数十亿行数据。

NuoDB

商用需要授权,NuoDB 是世界上首个也是唯一一个具有专利的、弹性可伸缩的SQL关系数据库,主要用于去集中化的计算资源。我们完全从头开始设计这么一个全新的数据库,100% ACID 保证以及兼容 SQL 标准规范。支持复杂数据库管理任务如分区、缓存集群和性能调优等等。

Alitbase

商用收费,Alitbase数据库完美结合了,并提出了一个新概念—Hybrid DBMS。ALTIBASE 提供高性能、容错能力和事务管理的方便性,特别是在通信、网上银行、证券交易、实时应用和嵌入式系统领域。

VoltDB

http://voltdb.com/
商用收费,VoltDB是一个内存中的开源OLTP SQL数据库,能够保证事务的完整性(ACID)。它是Postgres和Ingres联合创始人Mike Stonebraker领导开发的下一代开源数据库管理系统。它能在现有的廉价服务器集群上实现每秒数百万次数据处理。VoltDB大幅降低了服务器资源 开销,单节点每秒数据处理远远高于其它数据库管理系统。不同于NoSQL的key-value储存,VoltDB能使用SQL存取,支持传统数据库的 ACID模型。

Citus

商用收费,Citus面向高速简单的事务,高吞吐量批量加载以及高速亚秒级分析查询。它还集成了cstore/hll等很多插件。一个限制是在某些情况下它不支持所有SQL查询或复杂事务。CitusDB采用PostgreSQL的插件形式(not a fork),即享受PostgreSQL的强大支持,又同时拥有分布式数据库能力。Citus的企业版是要收费的。

ScaleDB

http : //http://scaledb.com/

2.4 其它数据库

1 时序数据库

2017年时序数据库忽然火了起来。开年2月Facebook开源了beringei时序数据库;到了4月基于PostgreSQL打造的时序数据库TimeScaleDB也开源了,而早在2016年7月,百度云在其天工物联网平台上发布了国内首个多租户的分布式时序数据库产品TSDB,成为支持其发展制造,交通,能源,智慧城市等产业领域的核心产品,同时也成为百度战略发展产业物联网的标志性事件。时序数据库作为物联网方向一个非常重要的服务,业界的频频发声,正说明各家企业已经迫不及待的拥抱物联网时代的到来。

时序数据是基于时间的一系列的数据。在有时间的坐标中将这些数据点连成线,往过去看可以做成多纬度报表,揭示其趋势性、规律性、异常性;往未来看可以做大数据分析,机器学习,实现预测和预警。

时序数据库就是存放时序数据的数据库,并且需要支持时序数据的快速写入、持久化、多纬度的聚合查询等基本功能。

对比传统数据库仅仅记录了数据的当前值,时序数据库则记录了所有的历史数据。同时时序数据的查询也总是会带上时间作为过滤条件。

典型代表:InfluxDB、Prometheus(普罗米修斯)

InfluxDB

InfluxDB 是 InfluxData 公司在 2013 年开源的数据库,是为了存储物联网设备、DevOps 运维这类场景下大量带有时间戳数据而设计的。

InfluxDB 源码采用 Go 语言编写,在 InfluxDB OSS 的版本中,部署方式上又分为两个版本,单机版和集群版。单机版开源,目前在 github 上有 21k+ star。集群版闭源,走商业路线。

单机版的InfluxDB 比较鸡肋。因为一旦选择使 InfluxDB,那么数据量肯定一定达到了某个很高的程度。这时候必须使用集群版。而在数据量不够高的情况下,InfluxDB 并不会比 MongoDB 或者 ElasticSearch 有更明显的优势。

InfluxDB1.x版本采用了一种类似 SQL 的 InfluxQL 语言来操作数据。

InfluxDB2.0 alpha版本受到 2018 年最流行的脚本语言 JavaScript 影响,推出了全新的查询语言 Flux。

InfluxDB 2.0 正式版本分为两个系列,云模式的 InfluxDB Cloud 和独立部署的 InfluxDB OSS。Flux 不是绑定在 InfluxDB 上的查询脚本语言,它是一个独立的项目,图灵完备,便于处理数据,也可以用作 InfluxDB 以外。

2 搜索引擎

搜索引擎存储:搜索引擎数据库最近比较火的包括Solr和Elasticsearch等。

典型代表:Elasticsearch、Solr

Elasticsearch

Elasticsearch是一个建立在Apache Lucene基础上的实时的分布式搜索和分析引擎,是基于Lucene实现的、当今最先进,最高效的全功能开源搜索引擎框架。

Elasticsearch使用Lucene作为内部索引引擎,而实际使用中,我们只需要使用统一开发好的API即可,而不需要理解其背后复杂的Lucene工作原理。

Elasticsearch经常与Logstash和Kibana配合,部署成日志采集和分析,简称ELK,它们都是开源软件。最近新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash。

Solr

Solr是Apache 的一个开源项目,基于Apache Lucene。在过去的十年里,solr发展壮大,拥有广泛的用户群体。

solr提供分布式索引、分片、副本集、负载均衡和自动故障转移和恢复功能。如果正确部署,良好管理,solr就能够成为一个高可靠、可扩展和高容错的搜索引擎。

3 OLTP和OLAP

3.1 OLTP

  • 强调支持短时间内大量并发的小型操作(增删改查)能力,每个查询涉及的数据量都很小(比如几十到几百字节)
  • 强调事务的强一致性(想想银行转账交易,容不得差错)

举例:“双十一”期间,可能有几十万用户在同一秒内下订单。后台数据库要能够并发的、以近乎实时的速度处理这些订单请求(如果下了订单,十几分钟还没有反应,用户肯定要骂人了)

3.2 OLAP

  • 偏向于复杂的只读查询,读取海量数据进行分析计算,查询时间往往很长

举例:“双十一”结束,淘宝的运营人员对订单进行分析挖掘,找出一些市场规律、分析刷单行为等等。这种分析可能需要读取所有的历史订单进行计算,耗时几十秒甚至几十分钟都有可能。

典型代表:Greenplum、TeraData、阿里 AnalyticDB

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值