询问任何企业应用程序的开发人员,你就会知道他们对关系数据库的局限性感到多么沮丧。在2009年的背景下,旧金山召开了一次会议,与同行讨论开源、分布式、非关系数据库。NoSQL最初被选为在那次会议上做得很好的TwitterHashTag,NoSQL像野火一样传播开来,但直到现在还没有一个普遍接受的定义。快进到2021年,企业在数据存储解决方案方面拥有丰富的选择,包括关系型和非关系型。但是,有一点是相同的:轻松收集、存储、分析数据和提取见解的能力始于您选择的数据库。因此,在为您的应用程序选择最佳数据库时,您必须了解7个基本的NoSQL思想,以避免那些可怕的陷阱和遗憾。一念之间,让我们开始吧。了解NoSQL为何诞生1.从持久数据存储到支持现代应用程序要了解NoSQL为何诞生,我认为退一步快速了解一下数据存储解决方案的演变是很有用的。在1950年代和70年代之间,创建了早期的数据管理系统,例如平面文件、层次数据库和网络数据库。只有当世界持久数据存储避免数据丢失时,它才足够好。在20世纪70年代,关系数据库正处于解决数据不一致问题的边缘。如此强大,它们已成为行业标准,使独立的团队和多个应用程序能够搜索、查询和操作单个逻辑上一致的数据,从而产生巨大的生产力优势。但2000年代Web应用程序、电子商务和社交媒体的指数级增长带来了新的挑战。谷歌和亚马逊等技术巨头已经发现需要支持网络上的大量用户,从单个数据库应用程序支持数以千计的商业用户。具体来说,我们现在有一个新的问题:如何在不连续的情况下,对大数据集进行一致性存储,并支持持续处理大量用户请求的现代应用程序?用适当的技术术语来说,以下问题是:支持大量读取和写入确保低延迟响应时间保持高可用性。虽然使用关系数据库可以在一定程度上解决这个问题,但它通常会增加复杂性和潜在的高成本。于是,两个极具影响力的NoSQL数据库的例子诞生了:亚马逊的DynamoDB和谷歌的Bigtable。这标志着NoSQL数据库的爆炸式增长,从那时起,人们就再也没有回头。定义NoSQL功能>作者2的图像。是架构无神论,架构无神论,NoSQL数据库不需要schema设计。这意味着关系数据库有两个好处。首先,避免数月的前期架构设计工作意味着更短的开发时间,最终转化为更快的网络和移动应用程序时间。其次,架构无神论使您可以灵活地在应用程序开发中途更改数据结构(而不??是经历可怕的模式重新设计过程)。如果您要处理不同的数据结构,这很重要。例如,电子商务应用程序需要存储具有不同产品规格的不同项目。时尚产品包括尺寸、颜色、形状和品牌属性,而微波炉可能包括尺寸、容量、瓦数和制造商的保修详细信息。3.NoSQL数据库的非关系使用,不强制将非关系数据放入行和列中。由于开发人员可以使存储的数据结构更接近其原始形式,因此他们可以最大限度地减少用于存储、管理和搜索信息的代码的数量和复杂性。这反过来又使测试、故障排除和错误修复更易于管理。此外,由于数据以非正式格式存储,NoSQL数据库中的销售订单与所有相关产品和送货地址一起保存。这转化为简单的数据存储和检索以及更快的查询。如果您认为非规范化数据也有其缺点,例如冗余和更高的数据存储成本。你是绝对正确的!归根结底,这是判断您是否愿意为更快的应用程序开发和数据查询付费的问题。4.本质上分布在商品硬件上鉴于任何现代应用程序都必须分布在各种商品服务器上。这不仅迎合了海量数据,也迎合了消费者对无缝始终在线的网站和应用程序的期望。它们必须在几毫秒内做出响应,并且在需要时始终可供许多并发用户使用。OracleRAC或SQLServerAlwayson是分布式关系数据库的示例。不幸的是,关系数据库必须依赖于手动分片,这通常会导致更大的复杂性和运营成本。相比之下,HBase、Riak和Cassandra等许多NoSQL数据库本质上是分布式的,具有内置选项来控制数据如何在廉价商品服务器上复制和分布。即使您的其中一台服务器崩溃和烧毁,您的数据仍然可以访问,您的应用程序将继续运行并满足用户需求。这使得NoSQL数据库更适合大规模数据存储,以支持网站和面向客户的应用程序。注意:并非所有NoSQL数据库都设计为分布式或必须分布式。然而,当可用性和可伸缩性成为最重要的考虑因素时,选择分布式产品是有意义的。NoSQL数据库的选择5.NoSQL数据库有多种类型NoSQL数据库中使用最广泛的有四种类型:键值数据库、文档数据库、列族数据库和图数据库。每个目的都非常不同。键值数据库将数据存储为一组键值对。键充当概述关联值的唯一标识符。一些示例包括Memcached、Voldemort、Redis和Riak。文档数据库在类似JSON的文档中存储和查询具有嵌套结构的数据。两个主要的开源选项是MongoDB和CouchDB。面向列的数据库的设计方式是将给定列的数据存储在一起。一些比较流行的产品是HBase、Cassandra、Hypertable。图数据库的优势在于它们的模型网络(即连接到其他事物的事物)。通常在社交网络应用程序中发现,图形数据库可以快速遍历节点和关系以提取相关数据。您可能听说过它最著名的例子:Neo4j。NoSQL数据库有很多选择,但并不是所有的选择都是一样的。NoSQL产品的广度意味着一个可以擅长管理文档,而另一个可以在管理社交网络方面提供无与伦比的优势。以下是每种NoSQL数据库类型的一些实际用例。>图片由Author6提供。最适合您的业务问题在选择采用哪种NoSQL数据库时,您要问自己的问题不是“这个数据库可以存储我的数据吗?”但是,“它是否最适合我的业务问题和应用需求?”但我很清楚,考虑到如此多的因素,许多其他关于“最适合”的决定可能会很艰难。每个考虑因素对不同用例的最终决定都有不同的影响。为了给您一个起点,这里有6个关键因素,在决定最适合的数据存储解决方案时必须考虑这些因素。>图片由作者7提供。每种选择都需要权衡取舍由于数据库格局的变化比我们敢于预测的要快,因此选择最佳选择非常复杂。例如,虽然像Neo4j这样的图数据库适用于Facebook这样的社交媒体,但存储的大量内存很容易使任何现有的图数据库不堪重负。因此,倾向于更大规模的选项(如HBase或RIAK)是有意义的,它们最初与社交网络无关。这里的重点是,每个NoSQL数据库都应该作为一种单独的技术来评估,而不是基于其分类来千篇一律和透明化。必须仔细考虑潜在的权衡,因为它们可能会破坏交易。为了说明这一点,这里是书中所选数据库在七周内的简化比较。注意:在表中,我还包括了关系型PostgreSQL,以强调选择关系型数据库而不是其他非关系型数据库的权衡。此外,可以发布新功能以解决我们所说的一些潜在权衡,因此最好检查最新更新。>ImagebyAuthor总结NoSQL意味着“不仅仅是SQL”,它并不仅仅代表帮助组织存储和管理数据的新手。“不只是”概念描述了向关系数据库(使用SQL)的转变,其中数据存储的唯一选择仍然存在但不再存在。这是我们有其他替代方案来满足传统关系数据库无法提供的新需求的地方。由于没有单一的选项可以返回到数据存储,组织现在可以自由地混合使用不同的数据库来解决不同的问题(A.a.Polyglot持久性)。每个人都将发挥自己的优势,但他们将在同一个生态系统中共存(希望在一起)。这给我们带来了这篇文章最重要的收获。每个选择都有后果。因此,重要的是要投入时间和精力来理解我们的数据存储技术决策的影响、潜在的权衡和最终责任。毕竟,无论你多么喜欢他们,你都无法逃避你选择的后果。如果您正在阅读本文,感谢您抽出宝贵时间,我真的希望您能从这篇文章中获得一些价值。随时在LinkedIn和Twitter上与我联系。祝你有美好的一天!最初于2021年3月8日发表于http://thedigitalskye.com。原文链接:https://towardsdatascience.com/7-must-know-ideas-about-nosql-5b00a760d368
