每个数据分析师必须知道的5种流行的NoSQL数据库
我希望有人在我刚开始从事数据科学时给了我这条建议-尽可能多地学习使用数据库的知识。
快速浏览一下您的数据库知识将如何发挥作用:
还有更多!
不可争议的事实是,我们现在正在
总览介绍 我希望有人在我刚开始从事数据科学时给了我这条建议-尽可能多地学习使用数据库的知识。 快速浏览一下您的数据库知识将如何发挥作用: 还有更多! 不可争议的事实是,我们现在正在以前所未有的速度和规模生成数据。短短一秒钟内,Instagram上上传了8,500多条推文和900张照片,这真是令人震惊。它令人迷惑不解–当今的数据库如何应对如此大量的数据? 为了处理大量数据,我们需要一个分布式数据库系统,该系统可以运行多个节点,并且还具有分区容限。这意味着,即使其中一个节点由于任何原因出现故障,系统也应无缝运行。因此,分区容限是必不可少的。现在根据CAPs定理,我们不能同时拥有分区容限,可用性和一致性。 我们必须在可用性和一致性之间进行权衡。例如,在银行应用程序中,客户应该看到正确的余额,无论他/她从何处访问该余额。结果可能会延迟几秒钟,但它们应该高度一致。 在本文中,我们将看到不同类型的NoSQL数据库,它们的功能以及何时使用每种数据库类型。 目录什么是NoSQL数据库?NoSQL数据库的类型基于文档的数据库关键值数据库基于宽列的数据库基于图的数据库 不同的NoSQL数据库MongoDB卡桑德拉弹性搜索亚马逊DynamoDBHBase的 什么是NoSQL数据库? 那么什么是NoSQL数据库? 您可能听说过有人说NoSQL数据库是任何非关系数据库,它们之间的数据没有任何关系。好吧,那不是完全正确的。它们还可以以不同的方式存储数据之间的关系。 我们可以说“ NoSQL”代表“不仅仅是SQL”。此处,数据不会拆分为多个表,因为它允许所有以任何可能方式关联的数据都在一个数据结构中。当您处理大量数据时,您无需担心查询NoSQL数据库时的性能滞后。无需运行昂贵的连接!它们具有高度的可扩展性和可靠性,并设计为可在分布式环境中工作。 NoSQL数据库的类型 现在我们知道什么是NoSQL数据库,让我们在本节中探索不同类型的NoSQL数据库。 1.基于文档的NoSQL数据库 基于文档的数据库将数据存储在JSON对象中。每个文档都有类似结构的键值对: 基于文档的数据库对开发人员来说很容易,因为JSON是Web开发人员使用的一种非常常见的数据格式,因此文档直接映射到对象。它们非常灵活,允许我们随时修改结构。 基于文档的数据库的一些示例是MongoDB,Orient DB和BaseX。 2.关键值数据库 顾名思义,它将数据存储为键值对。在这里,键和值可以是字符串,整数甚至复杂对象之类的任何东西。它们是高度可分区的,并且在水平缩放方面是最好的。它们在面向会话的应用程序中非常有用,在这些应用程序中,我们尝试捕获特定会话中客户的行为。 一些示例是DynamoDB,Redis和Aerospike。 3.基于宽列的数据库 该数据库将数据存储在类似于任何关系数据库的记录中,但是它具有存储大量动态列的能力。它按逻辑将列分组为列族。 例如,在关系数据库中,您有多个表,但在基于大列的数据库中,我们有多个列族,而不是多个表。 图片来源 这是一个很好的资源,可以了解有关基于列的数据库的更多信息: 这些类型的数据库的流行示例是Cassandra和HBase。 4.基于图的数据库 它们以节点和边的形式存储数据。数据库的节点部分存储有关主要实体(例如人物,地点,产品等)的信息,而边缘部分则存储它们之间的关系。当您需要找出社交网络,推荐引擎等数据点之间的关系或模式时,这些方法最有效。 其中的一些例子是Neo4j,Amazon Neptune等。 现在,让我们看一些NoSQL数据库及其功能。 不同的NoSQL数据库列表1. MongoDB MongoDB是使用最广泛的基于文档的数据库。它将文档存储在JSON对象中。 根据stackshare.io网站,有3400多家公司在其技术堆栈中使用MongoDB。Uber,谷歌,eBay,诺基亚和Coinbase就是其中一些。 何时使用MongoDB?如果您打算集成数百个不同的数据源,MongoDB的基于文档的模型将非常适合,因为它将提供数据的统一视图当您期望从应用程序进行大量读取和写入操作,但是您不太关心服务器崩溃中丢失的某些数据时您可以使用它来存储点击流数据,并将其用于客户行为分析2.卡桑德拉 Cassandra是一个开放源代码的分布式数据库系统,最初由Facebook构建(并由Google的Big Table推动)。它是广泛可用的,并且具有很好的可扩展性。它每秒可以处理PB级信息和数千个并发请求。 同样,根据stackshare.io的统计,超过400家公司正在其技术堆栈中使用Cassandra。其中包括Facebook,Instagram,Netflix,Spotify,Coursera。 何时使用Cassandra?当您的用例比阅读需要更多的写作操作时在需要更多可用性而不是一致性的情况下。例如,您可以将其用于社交网络网站,但不能将其用于银行目的您对数据库的查询所需的联接和聚合次数更少运行状况跟踪器,天气数据,订单跟踪和时间序列数据是一些好用例,您可以在其中使用Cassandra数据库3. ElasticSearch 这也是一个开源的分布式NoSQL数据库系统。它具有高度的可扩展性和一致性。您也可以将其称为Analytics Engine。它可以轻松地分析,存储和搜索大量数据。 如果全文搜索是用例的一部分,那么ElasticSearch将最适合您的技术堆栈。它甚至允许使用模糊匹配进行搜索。 超过3000家公司在其技术堆栈中使用Elasticsearch,包括Slack,Udemy,Medium和Stackoverflow。 何时使用ElasticSearch?如果您的用例需要全文搜索,那么Elasticsearch将是最合适的选择如果您的用例涉及聊天机器人,而这些聊天机器人可以解决大多数查询,例如,当有人键入内容时,则很可能会出现拼写错误。您可以利用ElasticSearch的内置模糊匹配实践另外,ElasticSearch在存储日志数据和对其进行分析时很有用。4.亚马逊DynamoDB 它是由Amazon创建的基于键值对的分布式数据库系统,具有高度可扩展性。但不幸的是,它不是开源的。它每天可以轻松处理10万亿个请求,因此您可以了解原因! 包括Snapchat,Lyft和Samsung在内的700多家公司正在其技术堆栈中使用DynamoDB。 何时使用DynamoDB?如果您正在寻找一个可以处理简单键值查询的数据库,但是这些查询的数量很大如果您正在处理OLTP工作负载(例如在线机票预订或银行业务)mssql 使用序列,而这些工作需要高度一致的数据 5. HBase的 它也是一个开源的高度可扩展的分布式数据库系统。HBase是用JAVA编写的,并且在Hadoop分布式文件系统(HDFS)之上运行。 超过70个公司在其技术堆栈中使用Hbase,例如Hike,Pinterest和HubSpot。 何时使用HBase?您至少应有PB级的数据要处理。如果您的数据量很小,那么您将无法获得理想的结果如果您的用例需要随机且实时地访问数据,那么HBase将是适当的选择如果您想轻松地为数十亿人存储实时消息尾注 这绝不是详尽的清单。还有更多的NoSQL数据库,但是它们是业内使用最广泛的数据库。 如果您使用过任何这些数据库或任何其他NoSQL数据库,请在下面的评论部分中告诉我。我希望知道您的经历! (编辑:92站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |