面向 Java 开发者的 NoSQL 选项
2018-04-20
因为了解和喜欢Java社区,所以尽管很少有人将NoSQL与某种语言绑在一起,我也要为全世界的Java开发者写下这篇文章。文中,Java培训机构将为你展示几种NoSQL数据库。之后,Java培训机构将根据实际在Githubstars和StackOverflowtags的项目中的使用情况,选出最常用的五个。并且我会让你知道它们是否支持SpringData和SpringBoot。
为什么使用NoSQL?
NoSQL数据库帮助许多互联网公司通过最终一致性实现高可拓展性。因为NoSQL数据库通常分布在多台机器上,而且有一些延迟,所以它只保证所有的实例最终都是一致的。最终一致性服务通常被称为BASE(基本可用,软状态,最终一致性)服务,这点与传统的ACID正好相反。
选择NoSQL的候选项
定义前五名可能很困难。最近许多人都在尝试这个。请参考本文结尾处的研究和注释部分。
八月中旬,我在推特上告诉我的粉丝,我正在写这篇文章。我询问了关于NoSQL数据库的正面或负面的评述,收到了人们的反馈,其中有希望我涵盖的一些选项。
我收到许多建议,以下按字母顺序列出:
ArangoDB
Cassandra
Couchbase
DynamoDB
FaunaDB
Hazelcast
MongoDB
Neo4j
PostgreSQLJSON
Redis
(JetBrains)Xodus
人们还提到HibernateOGM(NoSQL的JPA)和NoSQLUnit来作为帮助访问和测试NoSQL数据库的工具。
请注意,我没有收到需要将CouchDB,HBase,Elasticsearch或Solr包括在内的任何请求。由于CouchDB和Couchbase的名称相似,它们经常被混淆,但是它们是完全不一样的。由于CouchDB是一个文件存储数据库,我将其包括在我的排名中。我还添加了HBase,因为它在ITBusinessEdge,KDnuggets和DB-Engines被提到过(在研究和注释部分)。我没有将Elasticsearch或Solr包括在内,因为我相信这些并不常用作主数据存储。
Raible的排序技术
我用Indeed上职位数量、GitHub上star数量、StackOverflow标签数和Docker上pull的数量作为指标去开发我的TOP5NoSQL数据库排名系统。
面向Java开发者的NoSQL选项
Indeed上职位数量
我在IndeedJobs上不区分地域搜索,结果除了Amazon的DynamoDB显示出的是排行榜的竞争者外,并没有新奇发现。
NOTE:把“PostgreSQLJSON”做为搜索条件很难得到准确的结果,因为很多招聘信息把“PostgreSQL”作为一个要求,而不是它对NoSQL的支持。因此我搜索“postgres+json”。Xodus是一家公司的名字,所以我添加“JetBrains”关键字来保证结果的准确。
GitHubStars
面向Java开发者的NoSQL选项
我搜索并找到了5个顶级(Star最多)的NoSQL项目,分别是Redis,MongoDB,ArangoDB,Neo4j和Cassandra。
注意:Cassandra,HBase和PostgreSQL是镜像库。DynamoDB,Couchbase和FaunaDB没有服务在GitHub上,因此,我统计他们的时候是基于他们的Java驱动。统计每个项目的Java驱动项目的星星数量是个好办法,但是Redis只有11颗星。
你可以使用TimQian的历史star项目来查看这5个项目的star增长情况。
面向Java开发者的NoSQL选项
StackOverflow标签
我在StackOverflow中搜索了上述每一个数据库的tag,发现MongoDB和PostgreSQL是最受欢迎的,接下来是Neo4j,Cassandra和Redis.
面向Java开发者的NoSQL选项
DockerPulls
我在DockerHub上搜索了相关的镜像,可以看到少部分数据库有1000万以上的DockerPull,Neo4j有500万以上,其他的大多数也有100多万,FaunaDB和JetBrainsXodus暂时没有可用的镜像
面向Java开发者的NoSQL选项
综合来看,这些数据和我的排名关系并不大,我觉得可能有两个原因,数据并不精确而且对于每一个数据库,并没有所谓标准的镜像
NoSQL选项矩阵
我创建了一个结合了职位数、星数和标签数的矩阵表格。我根据它们在每个类别的排名授予1-5分。如果一个选项没有进入前五,就得零分。结果排名前五的是MongoDB、Redis、Cassandra、Neo4j和PostgreSQL,如下表所示。
面向Java开发者的NoSQL选项
DB-Engines排名的前五个选项是PostgreSQL、MongoDB、Cassandra、Redis和HBase。
面向Java开发者的NoSQL选项
两个表格的前五排名非常接近!
NoSQL选项概述
由于我做出的前五个排名结果非常接近于DB-Engines的结果,所以我将使用我的前五个结果。下面是对每一个的概述,以及关于它们的SpringBoot支持的信息。
你可能会问“为什么是SpringBoot?”我的答案很简单:因为SpringBoot采用率很高。根据Redmonk对Java框架的最近的观察,SpringBoot采用率从2016年9月到2017年6月增长了76%。