当前位置:Gxlcms > mysql > NoSQL常见存储方式

NoSQL常见存储方式

时间:2021-07-01 10:21:17 帮助过:81人阅读

一、 键值存储 它的数据是以键值的形式存储的,虽然它的速度非常快,但基本上只能通过键的完全一致查询获取数据,根据数据的保存方式可以分为临时性、永久性和两者兼具三种。 (1)临时性(memcached) 所谓临时性就是数据有可能丢失,memcached把所有数据都保存

  一、 键值存储

  它的数据是以键值的形式存储的,虽然它的速度非常快,但基本上只能通过键的完全一致查询获取数据,根据数据的保存方式可以分为临时性、永久性和两者兼具三种。

  (1)临时性(memcached)

  所谓临时性就是数据有可能丢失,,memcached把所有数据都保存在内存中,这样保存和读取的速度非常快,但是当memcached停止时,数据就不存在了。由于数据保存在内存中,所以无法操作超出内存容量的数据,旧数据会丢失。

  总结来说:

  1、在内存中保存数据

  2、可以进行非常快速的保存和读取处理

  3、数据有可能丢失

  (2)永久性(ROMA、Tokyo Tyrant、Flare)

  所谓永久性就是数据不会丢失,这里的键值存储是把数据保存在硬盘上,与临时性比起来,由于必然要发生对硬盘的IO操作,所以性能上还是有差距的,但数据不会丢失是它最大的优势。

  总结来说:

  1、在硬盘上保存数据

  2、可以进行非常快速的保存和读取处理(但无法与memcached相比)

  3、数据不会丢失

  (3)两者兼备(Redis)

  Redis有些特殊,临时性和永久性兼具。Redis首先把数据保存在内存中,在满足特定条件(默认是 15分钟一次以上,5分钟内10个以上,1分钟内10000个以上的键发生变更)的时候将数据写入到硬盘中,这样既确保了内存中数据的处理速度,又可以通过写入硬盘来保证数据的永久性,这种类型的数据库特别适合处理数组类型的数据。

  总结来说:

  同时在内存和硬盘上保存数据

  1、可以进行非常快速的保存和读取处理

  2、保存在硬盘上的数据不会消失(可以恢复)

  3、适合于处理数组类型的数据

  二、面向文档的数据库(MongoDB、CouchDB)

  (1)不定义表结构

  即使不定义表结构,也可以像定义了表结构一样使用,还省去了变更表结构的麻烦。

  (2)可以使用复杂的查询条件

  跟键值存储不同的是,面向文档的数据库可以通过复杂的查询条件来获取数据,虽然不具备事务处理和Join这些关系型数据库所具有的处理能力,但初次以外的其他处理基本上都能实现。

  三、 面向列的数据库(Cassandra、HBase、HyperTabl)

  由于近年来数据量出现爆发性增长,这种类型的NoSQL数据库尤其引入注目。

  普通的关系型数据库都是以行为单位来存储数据的,擅长以行为单位的读入处理,比如特定条件数据的获取。因此,关系型数据库也被成为面向行的数据库。相反,面向列的数据库是以列为单位来存储数据的,擅长以列为单位读入数据。

人气教程排行