数据库有哪些软件 数据库有哪些( 二 )


PostgreSQL 数据库同时具备很多众多令人振奋的优点,比如在线备份、数据域、表分区、表空间、嵌套事务、时刻点恢复、两段式提交、多版本并发控制、子查询等 。
在 PostgreSQL 中,数据库大小没有限制,表大小上限为 32TB,一条记录的大小上限为 1.6TB,字段大小上限是 1GB,一个表包含的记录数没有限制,一条记录的字段数上限为 1600 个,一个表上创建的索引数目没有限制 。
另外,SQLite 是一个非常小型的 ACID 兼容的关系数据库,适合嵌入式系统 。
3. InfluxDBInfluxDB 是一个开源的时间序列数据库,能应付极高的写和查询并发数,主要用于存储大规模的时间戳数据(每条记录自动附加时间戳),如 DevOps 监控数据、应用系统运行指标数据、物联网感应器采集的数据及实时分析的结果数据等 。InfluxDB 具备如下特征:

  • 全部用 Go 语言编写,并被编译成单一运行程序,无须第三方依赖 。
  • 简洁、高效地写和查询 HTTP(S)编程接口(API) 。
  • 通过插件能与其他的数据采集工具集成,如 Graphite、collectd、OpenTSDB 。
  • 可以搭建高可用性的 InfluxDB 环境 。
  • 量身定制化的类-SQL 语言 。
  • 允许给序列数据附加标签来创建索引,以便快速高效查询 。
  • 通过定义策略轻松实现自动失效过时的数据 。
  • 基于 Web 的管理界面 。

对于一个具体的时间序列应用来说,除存储外,还需要集成数据采集、可视化和告警功能 。为此,InfluxData 社区相应提供了 Telegraf(数据采集)、Chronograf(数据可视化)、Kapacitor(告警)三个开源项目,再加上 InfluxDB,能部署成一个完整的时间序列应用系统(简称为 TICK) 。这四者的关系如图 1 所示 。
4. RedisRedis 是遵循 BSD 开源协议的存储系统,数据存储在内存中,因此具备极高的性能,可用作数据库、缓存和消息中间件 。Redis 支持多种类型的数据结构,如字符串、哈希、列表、 *** 、带范围查询的有序 *** 、位图、hyperloglogs 和带半径查询的地理空间索引 。
Redis 内置了复制、脚本语言编程、最近最少使用(LRU)淘汰、事务以及不同级别的磁盘持久化等功能,通过 Redis Sentinel 和集群自动分区机制实现高可用性 。Redis 采用 C 语言编写,能运行在 Windows、MacOS X、Linux、Solaris 等操作系统上,不过 Linux 是其最佳的运行平台,无须第三方依赖,它提供了最广泛的编程语言接口 。
5. MongoDBMongoDB 是排名第一的文档数据库,属于 NoSQL 大类,诞生于 2009 年,正好是云计算兴起的前夜 。MongoDB 采用 C++ 语言开发,能运行在 Windows、MacOS X、Linux、Solaris 操作系统上,提供了绝大部分计算机语言的编程接口 。保存在 MongoDB 中的一条记录称为一个文档,类似 JSON 语法,例如:
数据库有哪些软件 数据库有哪些

文章插图
从上面的例子可以看出,一个文档就是“键:值”对的 ***。
MongoDB 的主要优势包括:高性能、富查询语言(支持 CRUD、数据聚合、文本搜索和地理空间查询)、高可靠性、自动伸缩架构、支持多存储引擎 。MongoDB 适合文档存储、检索和加工的应用场合,如大数据分析 。
6. Neo4jNeo4j 是一个用 Java 语言开发的图数据库,它将结构化数据存储在由“点—边”组成的网络(数学术语叫“图”)上而不是表中 。与关系数据库相比,图数据库擅长处理大量复杂、互连接、低结构化的数据 。这些数据变化迅速,需要频繁查询,如果使用关系数据库,那么这些查询会导致大量的表连接,因此会产生性能上的问题 。
Neo4j 重点解决了拥有大量连接的传统关系数据库在查询时出现的性能衰退问题 。Neo4j 还提供了非常快的图算法、推荐系统和 OLAP 风格的分析,而这一切在目前的关系数据库系统中都无法实现 。Neo4j 提供了广泛使用的 REST 接口,能够方便地集成到基于 Java、PHP、.NET 和 JavaScript 的环境里 。

推荐阅读