2019年最受程序员欢迎的10大非关系型(NoSQL)数据库
数据库是一组信息的集合,这些信息被组织起来以便于访问、管理和更新。在开始介绍最流行的NoSQL数据库之前。您必须了解NoSQL数据库。大多数程序员不知道它代表什么。它的全称是Not Only SQL。在了解了NoSQL数据库之后,我们将介绍2019年最受程序员欢迎的NoSQL数据库。
什么是NoSQL数据库?
NoSQL数据库(非关系型数据库)是用于存储和检索数据的非关系数据库系统。在当今世界,我们不应该只以没有预定义固定模式的表格式存储所有数据(固定没有列)。像用户生成的数据、地理位置数据、物联网生成的数据一样,社交图是真实世界数据呈指数级增长的例子。这些庞大的数据也需要大量的处理。这时NoSQL数据库就出现了。使用NoSQL数据库,我们可以存储和退休的文件,键值,图形为基础的数据容易和更快。我们可以很容易地避免复杂的SQL连接操作。易于使用NoSQL DBs对实际问题(web和企业业务应用程序)进行水平伸缩。Carlo Strozzi是在1998年引入NoSQL术语的。使用NoSQL的动机——设计的简单性、对机器集群的水平扩展。
NoSQL数据库类型
文档数据库——这些数据库通常将每个键与称为文档的复杂数据结构配对。文档可以包含键数组对、键值对甚至嵌套文档。示例:MongoDB、Apache CouchDB、ArangoDB、Couchbase、Cosmos DB、IBM Domino、MarkLogic、OrientDB。
键值存储——每个单独的项都存储为键值对。键值存储是所有NoSQL数据库中最简单的数据库。示例:Redis, Memcached, Apache Ignite, Riak。
宽列存储——这些类型的数据库针对大型数据集上的查询进行了优化,它们将数据列存储在一起,而不是行。示例:Cassandra,Hbase,Scylla。
图形存储——这些存储关于图形、网络的信息,例如社会关系、路线图、交通链接。示例:Neo4j,AllegroGraph。
2019最佳NoSQL数据库
MongoDB:是一个面向文档的开源NoSQL数据库。MongoDB使用JSON之类的文档来存储任何数据。它是用c++写的。
Cassandra:是Facebook为收件箱搜索开发的。Cassandra是一个用于处理大量结构化数据的分布式数据存储系统。
Redis:是最著名的键值存储。Redis是用C语言编写的。它是根据BSD授权的。
HBase:是谷歌为BigTable数据库设计的分布式非关系数据库。
Neo4j:称为原生图数据库,因为它有效地实现了属性图模型,一直到存储层。
Oracle NoSQL:实现了从用户定义的键到不透明数据项的映射。
Amazon DynamoDB:使用了一个NoSQL数据库模型,它是非关系型的,允许文档、图形和列在它的数据模型之间。
Couchbase:是一个用于交互式web应用程序的NoSQL文档数据库。它具有灵活的数据模型,易于扩展,提供一致的高性能。
Memcached:是一个开源、高性能、分布式内存缓存系统,旨在通过减少数据库负载来加速动态web应用程序。
CouchDB:是一个开源的NoSQL数据库,使用JSON存储信息,JavaScript作为查询语言。
1. MongoDB
MongoDB是最著名的NoSQL数据库。它是一个面向文档的开源数据库。MongoDB是一个可伸缩和可访问的数据库。它在c++中。MongoDB同样可以用作文件系统。在MongoDB中,JavaScript可以作为查询语言使用。通过使用sharding MongoDB水平伸缩。它在流行的JavaScript框架中非常有用。人们真的很享受分片、高级文本搜索、gridFS和map-reduce功能。惊人的性能和新特性使这个NoSQL数据库在我们的列表中名列第一。
特点:提供高性能;自动分片;运行在多个服务器上;支持主从复制;数据以JSON样式文档的形式存储;索引文档中的任何字段;由于数据被放置在碎片中,所以它具有自动负载平衡配置;支持正则表达式搜索;在失败的情况下易于管理。
优点:易于安装MongoDB;MongoDB Inc.为客户提供专业支持;支持临时查询;高速数据库;无模式数据库;横向扩展数据库;性能非常高。
缺点:不支持连接;数据量大;嵌套文档是有限的;增加不必要的内存使用。
2. Cassandra
Cassandra是Facebook为收件箱搜索开发的。Cassandra是一个用于处理大量结构化数据的分布式数据存储系统。通常,这些数据分布在许多普通服务器上。您还可以添加数据存储容量,使您的服务保持在线,您可以轻松地完成这项任务。由于集群中的所有节点都是相同的,因此不需要处理复杂的配置。Cassandra是用Java编写的。Cassandra查询语言(CQL)是查询Cassandra数据库的一种类似sql的语言。因此,Cassandra在最佳开源数据库中排名第二。Facebook、Twitter、思科(Cisco)、Rackspace、eBay、Twitter、Netflix等一些最大的公司都在使用Cassandra。
特点:线性可伸缩;;保持快速响应时间;支持原子性、一致性、隔离性和耐久性(ACID)等属性;使用Apache Hadoop支持MapReduce;分配数据的最大灵活性;高度可伸缩;点对点架构。
优点:高度可伸缩;无单点故障;Multi-DC复制;与其他基于JVM的应用程序紧密集成;更适合多数据中心部署、冗余、故障转移和灾难恢复。
缺点:对聚合的有限支持;不可预知的性能;不支持特别查询。
3. Redis
Redis是一个键值存储。此外,它是最著名的键值存储。Redis支持一些c++、PHP、Ruby、Python、Perl、Scala等等。Redis是用C语言编写的。此外,它是根据BSD授权的。
特点:自动故障转移;将其数据库完全保存在内存中;事务;Lua脚本;将数据复制到任意数量的从属服务器;钥匙的寿命有限;LRU驱逐钥匙;支持发布/订阅。
优点:支持多种数据类型;很容易安装;非常快(每秒执行约11万组,每秒执行约81000次);操作都是原子的;多用途工具(在许多用例中使用)。
缺点:不支持连接;存储过程所需的Lua知识;数据集必须很好地适应内存。
4. HBase
HBase是谷歌为BigTable数据库设计的分布式非关系数据库。HBase的主要目标之一是托管数十亿行X数百万列。您可以随时添加服务器来增加容量。多个主节点将确保数据的高可用性。HBase是用Java 8编写的。它是在Apache下授权的。Hbase还简单地利用Java API进行客户访问。
特点:支持自动故障;线性可伸缩;提供了数据复制;与Hadoop集成,作为源和目标。
优点:为较大的表提供快速查找;提供对来自数十亿条记录的单行的低延迟访问;简单的Java API为客户端;自动分片;License-free;处理HDFS文件存储之上的大型数据集;灵活的模式设计;高速。
缺点:不支持事务;没有权限或内置身份验证;仅按键索引和排序;单点故障(当只使用一个HMaster时);不支持SQL结构;集群上的内存问题。
5. neo4j
Neo4j被称为原生图数据库,因为它有效地实现了属性图模型,一直到存储层。这意味着数据完全按照白板的方式存储,数据库使用指针导航和遍历图。Neo4j有数据库的社区版和企业版。企业版包括Community Edition必须提供的所有功能,以及额外的企业需求,如备份、集群和故障转移功能。
特点:它支持唯一的约束;Neo4j支持完整的ACID(原子性、一致性、隔离性和持久性)规则;Java API: Cypher API和本机Java API;使用Apache Lucence索引;简单查询语言Neo4j CQL;包含用于执行CQL命令的UI: Neo4j Data Browser。
优点:容易检索其相邻节点或关系细节,无需连接或索引;易于学习Neo4j CQL查询语言命令;不需要复杂的连接来检索数据;非常容易地表示半结构化数据;大型企业实时应用程序的高可用性;简化的调优。
缺点:不支持分片。
6. Oracle NoSQL
Oracle刚刚用Oracle NoSQL启动了NoSQL数据库。它在2018年变得流行起来。与MongoDB和Casandra数据库相比,它不那么流行。Oracle NoSQL数据库实现了从用户定义的键到不透明数据项的映射。尽管它记录了键/值对的内部版本号,但是它只维护存储中的最新版本。Oracle的12c版本是为云而设计的,可以托管在一台服务器或多台服务器上,并支持管理包含数十亿条记录的数据库。Oracle最新版本的一些特性包括网格框架以及物理和逻辑结构的使用。Oracle Database 18c现在为客户提供了一个高性能、可靠和安全的平台,使他们的事务和分析工作负载(无论是在云环境中,还是在本地环境中,或者在混合云配置中)更容易、更经济地实现现代化。
特点:Oracle NoSQL数据库处理大数据;支持SQL,可以从Oracle关系数据库访问它;Oracle NoSQL数据库使用Java/C API读写数据;分布式数据库;通过节点为请求的密钥提供对数据的访问。
优点:基于PL/SQL编程结构;对等社区有助于解决所有问题;Oracle数据库是安全的,并确保不会通过提示更新篡改用户数据。
缺点:小型组织的高成本;安装需要大量的资源;甚至可能需要硬件升级才能实现Oracle;占用了很多空间。
7. Amazon DynamoDB
DynamoDB使用了一个NoSQL数据库模型,它是非关系型的,允许文档、图形和列在它的数据模型之间。每个DynamoDB查询由用户标识的主键执行,主键唯一标识每个项。它还减轻了客户操作和扩展分布式数据库的负担。因此,硬件供应、设置、配置、复制、软件补丁、集群扩展等都由Amazon管理。
特点:高可伸缩性;用于索引值范围的散列范围;将数据存储在分区中;使用JSON作为传输协议,而不是存储格式。
优点:易于设置;提供底层AWS DynamoDB API;自动伸缩;降低管理高可用性和高峰使用时间伸缩的复杂性;静止加密;DynamoDB的安全性由AWS标识控制。
缺点:不免费备份您的表;大小限制。
8. Couchbase
重点是易用性,包括web。它是一个NoSQL文档存储数据库。Couchbase Server是一个用于交互式web应用程序的NoSQL文档数据库。它具有灵活的数据模型,易于扩展,提供一致的高性能。Couchbase Server、JSON文档用于表示应用程序对象和对象之间的关系。
特点:与Kubernetes一起大规模自动故障转移部署和管理Couchbase;索引分区;通过N1QL查询本地支持JSON数据;数据压缩;事件服务。
优点:综合优化;降低网络、内存和存储的成本;极棒的管理面板,提供了大量关于您的集群如何执行的见解。
缺点:Couchbase不是开源的。
9. Memcached
Memcached是一个开源、高性能的分布式内存缓存系统,旨在通过减少数据库负载来加速动态web应用程序。它是存储在内存中的字符串、对象等的键值字典,由数据库调用、API调用或页面呈现生成。它现在被Netlog、Facebook、Flickr、Wikipedia、Twitter和YouTube等网站使用。
特点:通过TCP或UDP的客户机-服务器应用程序;减少数据库负载;Memcached服务器是一个大哈希表;高效的网站与高数据库负荷;根据Berkeley Software Distribution license进行分发;将内存缓存合并到逻辑池中。
优点:安装快;广泛记录在一个巨大的社区中。
缺点:只支持Linux操作系统和类似于BSD的系统;不支持数据冗余;不支持锁、通读、CAS。
10. CouchDB
CouchDB是一个开源的NoSQL数据库,它使用JSON存储信息,JavaScript作为查询语言。它采用了一种多版本控制系统,避免了DB文件在写入过程中被阻塞。Erlang。它是在Apache下授权的。它在2016年最受欢迎的NoSQL数据库中排名第一。
特点:Map/Reduce列表和显示;提供数据库级安全;身份验证像web应用程序一样通过会话cookie打开;JSONP是免费的;按照文档存储;支持ACID属性;提供最简单的复制形式;基于浏览器的GUI来处理数据、权限和配置。
优点:Map/Reduce,查询数据在某种程度上与数据本身是分离的;存储任何JSON数据。
缺点:任意查询都很昂贵;使用CouchDB需要额外的空间;不支持XML。