西北旅游攻略,一个网站如何优化,天津网站设计策划,开个个人网站简单介绍
Redis是当下最流行的NoSQL数据库。在Redis中#xff0c;数据的存储格式是以键值对的方式进行存储的。在键值对的存储形式中#xff0c;值除了是常见的字符串#xff0c;也可以是类似于Json对象的形式#xff0c;或者是List#xff0c;Map等数组格式#xff0c;…简单介绍
Redis是当下最流行的NoSQL数据库。在Redis中数据的存储格式是以键值对的方式进行存储的。在键值对的存储形式中值除了是常见的字符串也可以是类似于Json对象的形式或者是ListMap等数组格式或者是其他的复杂类型所以键值对的存储方式也足够满足我们日常的使用
像这种的并不是以标准的表的格式存储的数据库而是使用自身特定的数据结构进行存储的数据库叫做NoSQL的数据库。当然对于NoSQL的定义要更加的广泛现在暂时就用存储结构将SQL和NoSQL数据库进行简单的区分即可。
认识NoSQL
SQL关系型数据库
NoSQL非关系型数据库或者说不仅仅是数据库
两者的区别
首先SQL的S表示的是Structured结构化的意思也就是说关系型数据库中的数据存储格式都是非常的规整的表的格式并且我们还会加上一些约束让其中的数据更加的规范标准。
NoSQL的数据类型就相对比较松散对于数据的存储并没有太强的约束比如Redis的数据类型就是键值对的类型其中键值的数据类型可以任意定义。或者对于ES这类的文档型他们的数据存储格式就是JSON格式的存储方式。
除了数据的不同当我们在定义SQL的表结构的时候一般定义好了之后就不会轻易地修改表的结构容易出现对应的业务无法正常实现的风险或者数据发生错误但是对于NoSQL来说字段的数量可以随时的添加修改我们只关注对应的字段至于其他的字段是多了或者少了都对我们没有影响。
其次SQL的第二个特点就是Relational关联这个特性在之前我们学习MySQL时接触到的外键约束和多表查询或者在做Java程序的时候学过的多对多关系中都有体验比如我们用一个用户表一个订单表一开始这两张表并没有关系但是当业务开始实现一个用户购买了一个商品这时候就会出现一张中间表去维护某个用户购买了某样商品这时候表与表之间就开始有了关联当我们再想去随意的操作关联表中的数据的时候可能会因为某个表中的关联数据而导致无法正常的更改数据。
而对于NoSQL来说他不会刻意的去维护表与表之间的关系甚至对于数据与数据之间的关系都非常的模糊如果想要将两个数据联系起来一般的方式会选择嵌套即在一个JSON对象中再加入一个JSON对象的方式去将多个对象进行联系。
然后就是查询方式的区别SQL数据库的查询方式是使用SQL语言进行查询但是对于NoSQL来说查询语言并不是固定的而是不同的 NoSQL数据库都有不同的查询方式并没有一个统一的格式。各有各的好处比如我们的SQL查询语言比较统一基本上一套SQL语言可以在各种关系型数据库中使用而非关系型数据库虽然不统一但是查询的方式多半都比较符合程序员的编码方式所以学习起来也并不是非常的困难。
还有就是事务方面的区别所有的关系型数据库的事务都满足ACID的特性而非关系型数据库并不能完美的实现事务只能实现基本的事务的一致性。
除了以上这些大方向的差异还有一个小的差异比如SQL一般会将数据持久化到硬盘中而非关系型数据库会将数据暂时存储在内存中当触发持久化的操作的时候才会真正的将数据落盘。以及在关系型数据库设计之初就并没有为分布式做考虑也就是说当你需要提升数据库的性能的时候只能不断地增加本机的性能这种方式就是垂直扩展。但是NoSQL之所以现在发展的很快就是因为它搭上了大数据的快车大数据的对于数据的要求量非常的大所以大数据的组件一开始的设计就是为了能够水平扩展也就是由多台设备组成一个集群从而协同运作提升效率NoSQL的数据库也满足这一分布式的特性从而和大数据一拍即合。
当然根据不同的业务需求去选择不同的数据库也是非常重要的所以了解了这些两者的不同点之后才能更好地发挥不同组件的作用。