当前位置: 首页 > Web前端 > JavaScript

学了这么多NoSQL数据库!NoSQL到底是什么?

时间:2023-03-27 17:15:18 JavaScript

文章内容:学了这么多NoSQL数据库,到底什么是NoSQL?关系型数据库。  2009年,Last.fm的JohanOskarsson发起了分布式开源数据库的讨论,Rackspace的EricEvans再次提出了NoSQL的概念。此时NoSQL主要指的是非关系型、分布式、ACID数据库设计模式。  2009年在亚特兰大举行的“no:sql(east)”研讨会是一个里程碑,其口号是“选择乐趣,从real_worldwhererelational=false中获利”。因此,对NoSQL最普遍的解释是“非关系型”,强调Key-ValueStores和文档数据库的优点,而不是简单地反对RDBMS。什么是NoSQL  NoSQL(NotOnlySQL),意为“不只是SQL”,泛指非关系型数据库,是区别于传统关系型数据库的数据库管理系统的总称。  NoSQL用于超大规模数据的存储。这些类型的数据存储不需要固定的架构,无需冗余操作即可横向扩展。为什么要使用NoSQL  随着互联网的飞速发展和普及,网民在上网时产生的数据也与日俱增,从GB到TB再到PB。这些数据的很大一部分由关系数据库管理系统(RDBMS)处理。  由于关系数据库的范式约束、事务特性、磁盘IO等特性,如果服务器使用关系数据库,当产生大量数据时,传统的关系数据库已经不能满足快速的需求查询和数据插入。NoSQL的出现解决了这个危机。它通过降低数据安全性、减少对事务的支持、减少对复杂查询的支持来获得性能提升。但是NoSQL在一些特定的场景下仍然不是最佳人选,比如一些绝对需要事务和安全指标的场景。  NoSQL是一个新的数据库革命运动,很早就提出来了,2009年的发展趋势越来越高。NoSQL的支持者提倡使用非关系数据存储。与关系数据库的铺天盖地的使用相比,这个概念无疑是一种新的思维注入。RDBMSvs.NoSQL常见的数据库管理系统  根据DB-Engines的排名:https://db-engines.com/en/ran...,本文截取排名Top50如图以下。DB-Engines排名根据受欢迎程度对数据库管理系统进行排名。该排名每月更新一次。NoSQL数据库四大家族键值(Key-Value)存储  特点:键值数据库就像传统语言中使用的哈希表。通过Key添加、查询或删除数据。  优点:查询速度快。  缺点:数据是非结构化的,通常只存储为字符串或二进制数据。  应用场景:内容缓存、会话等用户信息、配置信息、购物车等,主要用于处理大量数据的高访问负载。  NoSQL代表:Redis、Memcached...文档(Document-Oriented)存储  特点:文档数据库以文档的形式存储数据,类似于JSON,是一系列数据项的集合。每个数据项都有一个名称和对应的值,值可以是简单的数据类型,如字符串、数字、日期等;它也可以是复杂类型,例如有序列表和关联对象。  优点:数据结构要求不严格,表结构可变,不需要像关系型数据库那样预先定义表结构。  缺点:查询性能不高,没有统一的查询语法。  应用场景:日志、Web应用等  NoSQL代表:MongoDB、CouchDB...列(WideColumnStore/Column-Family)存储  特点:列存储数据库以列族存储数据(ColumnFamily),将多个列聚合为一个列族,键仍然存在,但它们通常会引用多个列。例如,如果我们有一个Person类,我们通常会一起查询他们的姓名和年龄而不是薪水。在这种情况下,姓名和年龄将放在一个列family中,薪水放在另一个列中。  优点:列存搜索速度快,可扩展性强,分布式扩展更容易。适用于分布式文件系统,处理分布式存储中的海量数据。  缺点:查询性能不高,没有统一的查询语法。  应用场景:日志、分布式文件系统(对象存储)、推荐画像、时空数据、消息/订单等。  NoSQL代表:Cassandra、HBase...面向图的存储  特点:图数据库允许我们以图的形式存储数据。  优点:图相关算法。比如最短路径寻址、N度关系搜索等。  缺点:很多时候需要对整个图进行计算才能得到需要的信息。分布式集群方案不易落地,超级节点处理能力弱,没有分片存储机制,国内社区不活跃。  应用场景:社交网络、推荐系统等。专注于构建关系图谱。  NoSQL代表:Neo4j,InfiniteGraph...NoSQL的优点和缺点优点高可扩展性没有标准化分布式计算有限查询能力(到目前为止)低成本缺点最终一致性是不直观的程序架构灵活性,半结构化数据没有复杂关系总结  NoSQL数据库比较适合以下情况:数据模型比较简单,需要比较灵活的IT系统,对数据库性能要求高,对数据一致性要求不高对于给定的Key,它更容易映射复杂的值。感谢您的认可和支持。小编会继续转发优质的文章《优极限》