大家好,今天来为大家分享仿宜搜网站源码分享的一些知识点,和宜搜游戏官网的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
因为了解和喜欢Java社区,所以尽管很少有人将NoSQL与某种语言绑在一起,我也要为全世界的Java开发者写下这篇文章。文中,我将为你展示几种NoSQL数据库。之后,我将根据实际在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数据库排名系统。
Indeed上职位数量
我在IndeedJobs上不区分地域搜索,结果除了Amazon的DynamoDB显示出的是排行榜的竞争者外,并没有新奇发现。
注意:把“PostgreSQLJSON”做为搜索条件很难得到准确的结果,因为很多招聘信息把“PostgreSQL”作为一个要求,而不是它对NoSQL的支持。因此我搜索“postgres+json”。Xodus是一家公司的名字,所以我添加“JetBrains”关键字来保证结果的准确。
GitHubStars
我搜索并找到了5个顶级(Star最多)的NoSQL项目,分别是Redis,MongoDB,ArangoDB,Neo4j和Cassandra。
注意:Cassandra,HBase和PostgreSQL是镜像库。DynamoDB,Couchbase和FaunaDB没有服务在GitHub上,因此,我统计他们的时候是基于他们的Java驱动。统计每个项目的Java驱动项目的星星数量是个好办法,但是Redis只有11颗星。
你可以使用TimQian的历史star项目来查看这5个项目的star增长情况。
StackOverflow标签
我在StackOverflow中搜索了上述每一个数据库的tag,发现MongoDB和PostgreSQL是最受欢迎的,接下来是Neo4j,Cassandra和Redis.
DockerPulls
我在DockerHub上搜索了相关的镜像,可以看到少部分数据库有1000万以上的DockerPull,Neo4j有500万以上,其他的大多数也有100多万,FaunaDB和JetBrainsXodus暂时没有可用的镜像
综合来看,这些数据和我的排名关系并不大,我觉得可能有两个原因,数据并不精确而且对于每一个数据库,并没有所谓标准的镜像
NoSQL选项矩阵
我创建了一个结合了职位数、星数和标签数的矩阵表格。我根据它们在每个类别的排名授予1-5分。如果一个选项没有进入前五,就得零分。结果排名前五的是MongoDB、Redis、Cassandra、Neo4j和PostgreSQL,如下表所示。
DB-Engines排名的前五个选项是PostgreSQL、MongoDB、Cassandra、Redis和HBase。
两个表格的前五排名非常接近!
NoSQL选项概述
由于我做出的前五个排名结果非常接近于DB-Engines的结果,所以我将使用我的前五个结果。下面是对每一个的概述,以及关于它们的SpringBoot支持的信息。
你可能会问“为什么是SpringBoot?”我的答案很简单:因为SpringBoot采用率很高。根据Redmonk对Java框架的最近的观察,SpringBoot采用率从2016年9月到2017年6月增长了76%。
自6月以来的增长速度并没有减缓:到2017年8月Maven下载量是2220万。
MongoDB
MongoDB在2007年由DoubleClick、ShopWiki和GiltGroupe的高级技术人员建立。它的源码在GitHub上,使用的是Apache和GNU-APGL许可证。它的众多大客户包括Adobe、eBay和eHarmony。
在start.spring.io上是否可用?是的,包括用于测试的嵌入式MongoDB。
是否能在SpringData上获得支持?是的,通过SpringDataMongoDB。
加分项:为HibernateOGM、NoSQLUnit和JHipster所支持。
Redis
Redis代表REmoteDictionaryServer(远程字典服务器),由SalvatoreSanfilippo开创。它最初发布于2009年4月10日根据redis.io的描述,Redis是采用BSD许可证的内存式数据结构存储,可以被用作数据库、缓存和消息代理。使用Redis的知名企业包括Twitter、GitHub、Snapchat和Craigslist。
是否在start.spring.io上可用?是。
是否为SpringData所支持?是的,通过SpringDataRedis。
加分项:为NoSQLUnit所支持。HibernateORM支持正在进行中。
Cassandra
Cassandra是“一个管理结构化数据的分布式存储系统,其设计的目的是支持扩展到大数量级的商用服务器,并避免单点的失败”(引至“Cassandra–在P2P网络中的一种结构化存储系统”在Facebook的工程博客上)。Facebook最初开发Cassandra用于支持其收件箱的搜索功能。它的创始人,AvinashLakshman(AmazonDynamoDB的一位创始者)和PrashantMalik在2008年七月把它作为开源项目发布。在2009年3月,Cassandra成为了Apache的孵化器项目并在2010年2月成为了最高等级的项目。
除了Facebook之外,Cassandra还帮助了许多企业实现网络规模的扩展。关于其可扩展性的介绍在其主页上有很多惊人的数字。
其中一个最大的产品部署者是苹果公司,有超过75000个节点存储超过10PB的数据。其他大的Cassandra使用者包括Netflix(2500节点,420TB,每天超过万亿的请求量),中国的搜索引擎宜搜(270节点,300TB,每天超过8亿请求),eBay(超过100节点,250TB)。
start.spring.io中是否支持?是。
SpringData中是否支持?是,通过SpringDataCassandra.
福利:NoSQLUnit和JHipster已支持,HibernateORM的支持正在进行中。
Neo4j
Neo4j可以作为基于GPL3许可的“社区版”使用,带有AfferoGPL下的一些扩展。社区版被限制只能在一个节点上运行,并且不包括对集群或热备份的支持。Neo4J的“企业版”支持横向扩展,内存页缓存和热备份。可以试用30天,没有提供定价。
Neo4j是众所周知的图数据库,所有内容都是以一个边,节点,或者一个属性的方式存储。版本1.0在2010年二月份发布,自此以来由Neo4j公司开发。它的大客户包括Walmart,Airbnb,Monsanto,和eBay.
是否在start.spring.io上可以使用?是。
SpringData是否支持Neo4j?是的,通过SpringDataNeo4j.
加分项:HibernateORM和NoSQLUnit也支持Neo4j
PostgreSQLJSON
PostgreSQL是一种传统的关系数据库管理系统(RDBMS),它通过其本地的JSON支持(在版本9.2中添加)来支持NoSQL。在9.4中,他们添加了对二进制JSON(也称为JSONB)和索引的支持。
LeighHalliday在2017年6月的博文中解释了如何释放在Postgres中存储JSON的功能。Halliday进一步展示了如何使用RubyonRails。一篇来自UmairShahid的博文展示了如何使用Java处理PostgreSQLJSON和JSONB数据。
我不确定PostgreSQL及其JSON支持是否应该被包括在推荐的NoSQL选项中。但如果你已经在使用PostgreSQL,并希望使你的数据架构能更自由流畅,那可以尝试这么做。正如DjWalker-Morgan所说:“PostgreSQL9.5不是你的下一个会选JSON数据库,但它是一个非常好的关系数据库,具有完整的JSON特性。”
在start.spring.io是否可用?是的。
是否由Spring数据支撑?是的,通过SpringDataJPA。
结束语
我对这个分析的结果感觉很满意,作为JHipster项目的提交者,我非常清楚该团队的实力,并认为它对MongoDB和Cassandra的支持就是对它们最好的认可。并且增加对Couchbase的支持的工作也在进行中。
此外,我还与我熟知的Java和NoSQL社区中几位专家分享了这一情况,并向他们询问了以下问题:
您是否同意我选出的前5个NoSQL选项(MongoDB,Redis,Cassandra,Neo4j和PostgreSQL及其JSON支持)?
在生产中使用这些数据库有什么好的坏的故事或经验分享吗?
在这些数据库中,有没有特别难以开始使用或者在长期使用过程中难以维护的?
你最喜欢的NoSQL数据库是什么?
还有什么你想分享的?
我将在几周后公布采访结果。届时我将会在博客中更新。如果你是NoSQL数据库的专家,欢迎与我取得联系!我很乐意将您的答案纳入面试。你只需发送消息到Twitter的@mraible或matt.raible@okta.com。
研究与笔结果记录
ITBusinessEdge有关于NoSQL数据库前五名的幻灯片。然而,那篇文章没有日期,它声明是RedisLabs做出的选择。该幻灯片列出了MongoDB、Cassandra、Redis、Cassandra、CouchDB和HBase。
KDnuggets的编辑MatthewMayo,在2016年6月写了一篇关于顶级NoSQL数据库引擎的类似文章。Mayo使用了db-engines.com排名和Google趋势选出了前五名:MongoDB、Cassandra、Redis、HBase和Neo4j。
Hackernoon有一个“值得你注意”的最受欢迎的NoSQL数据库的信息图表。那篇文章发布于2017年6月,评论说排名是基于https://db-engines.com/en/ranking_trend的统计数据。
注意:如果你今天(2017年9月6日)查看此排名,你会看到Redis已经取代了Couchbase。似乎Hackernoon超过了Redis?它还产生了一个问题:Elasticsearch是NoSQL数据库还是搜索引擎?Solr应该被认为是NoSQL数据库吗?两者均出现在DB-Engines排名趋势中。
JAXenter在2017年3月30日发布了他们对顶级数据库趋势的年度调查结果。他们将Elasticsearch和Solr列为数据库。他们还将ApacheSpark和Hadoop包括在内。MongoDB、Cassandra、Redis和Neo4j是最有趣的“NoSQL”数据库。Hazelcast被列为顶级内存数据网格,位于CouchDB和Oracle之上。
仿宜搜网站源码分享的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于宜搜游戏官网、仿宜搜网站源码分享的信息别忘了在本站进行查找哦。
