首页 > 编程知识 正文

nosql数据库,玩转mongodb从入门到实践

时间:2023-05-03 09:49:48 阅读:56569 作者:2666

nosql数据库入门

你中可能有无SQL专家,但通常缺乏对无SQL的扎实知识和一般神话。 具体而言,诸如NoSQL适用性/用例与关系数据库的比较(公平和不公平)等主题通常由不完整的知识驱动。 虽然我不声称自己是NoSQL领域的专家,但是记下一些对NoSQL不太了解的信息可能会有帮助。 从初学者的角度(相对地)看待NoSQL的人可以从这篇文章中获益(也许? 请参阅。 所以,开始吧。

NoSQL…这不意味着“没有SQL”(请参阅空格的混乱方式)。 这与事实不符。 其实,的意思是“不仅仅是SQL”! 你看到不一样吗? no甚至基于SQL的技术也使用某种“主要是自己的”语言来“查询”本机存储。 当时与结构化查询语言没有很大不同。

是的,所以“不仅仅是SQL”。 但是…。

其主要特征是什么? no很难准确列出SQL解决方案的所有特定属性。 虽然某些解决方案可能支持或不支持所有这些属性,但通常这些解决方案是最常见的解决方案

没有体系结构可能是所有最基本的属性。 NoSQL解决方案没有架构概念。 (一堆关于数据容器的元数据。 行和列) )。

大多数自然分布的NoSQL解决方案都支持在多个实例之间对数据本身进行分区和负载平衡的分布式体系结构(请参见)。

这省略了http://www.Sina.com/ASIC ally 3358 www.Sina.com/http://www.Sina.com /始终状态“Bventual一致性” 好吧,我不想解释[因为我不完全理解那个! () )。 但我知道的事实是,base (对于no SQL )和ACID (对于RDBMS )常常是争论的重点。

NoSQL解决方案的类型这些是NoSQL解决方案最常见的类别/类型/变体

键值对:将数据存储为键值对。 其中,Redis、Oracle NoSQL文档存储等值是不固定的。 将文档(XML、JSON、BSON等)存储为MongoDB、Couchbase Graph等值。 在类似结构的图形(如Neo4j )中存储信息,或上述一种或多种组合!

是的,那么为什么我应该在旧的RDBMS上选择NoSQL解决方案呢? 好了,现在是讨论一些差异的合适时机。 即使不是100%准确,我也希望能大致得到这些结果

可扩展性可以方便地(至少从理论上)添加NoSQL数据存储的其他节点/实例,以满足APP应用程序不断增长的需求。 NoSQL解决方案旨在以分布式方式工作,这一事实使其成为可能。

这与“无模式”的特性有关。 从某种意义上说,NoSQL解决方案是灵活的。 这意味着您可以存储相对非结构化的数据,而无需任何体系结构或管理更改。 例如,对于RDBMS,它将进化体系结构。)

如果能使用高度,一开始听起来可能很愚蠢。 通过添加更多实例,您可能会说任何东西(包括RDBMS )都是多余的(高可用性)。 确实如此。 使用NoSQL解决方案时,通常从一开始就设计,考虑到极端的可扩展性,它会自动提供高可用性,即使节点发生故障,APP应用程序也不会中断。 在剩馀节点之间重新分配(重新分区)数据并继续播放。

性能分布式NoSQL解决方案的性能在与大型数据集相关的问题域中非常有用,因为可以通过添加更多节点来水平扩展

适合云计算的云计算,特别是与PaaS相关的服务,基于灵活的扩展、资源高效管理、负载、体积、时间等因素的策略,进一步增加和减少实例,设置和配置更加简单,升级更加方便NoSQL解决方案非常适合该法案。 (至少从扩展的角度来看) ) ) ) ) ) ) ) ) ) ) ) ) ) )。

再次存在成本效益,这一切都是关于水平缩放而不是垂直缩放。 水平缩放意味着旋转更多的实例,而不是升级一台机器的硬件。 在特定时间点成本可能会增加。

那么.那么NoSQL的“无警告”吗? 绝对不做! 和任何技术一样,其使用方法可能非常适合用例,但有优缺点

对于RDBMS纯粹主义者来说,NoSQL解决方案的最终一致性还不够。 对于特定的用例/域,缺少ACID属性通常是NoSQL存储的最大缺点。 缺乏异构产品和标准:无SQL解决方案急剧增长。 虽然许多基本概念和特征保持不变,但向不同供应商学习无SQL解决方案会使学习过程变得更加困难。 这是因为这个技术还没有特定的标准/API,(至少我还没看到)比较新。 听起来不像是严重警告,但RDBMS (几十年来一直有效! )相比之下,团队可能要花更多的时间来开发这项技术。 no什么时候应该使用SQL解决方案? 虽然我没有在生产中实现无SQL解决方案的个人经验,但一直以来

识的角度来看,这就是我的想法。
众所周知,最好的答案是“取决于” ;-)好吧,也许不是吗? 无论您是在考虑NoSQL与RDBMS还是在比较各种NoSQL产品,都应该查看用例,然后从那里进行学习。 如果需要ACID属性,请避免使用NoSQL。 如果您有大型数据集,并且数据类型本质上是非关系的,则最好利用NoSQL及其可伸缩性属性。 就从图形,键值,基于文档或基于列的NoSQL存储中进行选择而言,答案(或可能是问题)仍然保持不变-“您的用例需要什么?”

好奇? 探索 !

干杯!

翻译自: https://www.javacodegeeks.com/2015/09/introductory-nosql-stuff.html

nosql数据库入门

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。