标题 | NoSQL常见存储方式 |
内容 | 一、 键值存储 它的数据是以键值的形式存储的,虽然它的速度非常快,但基本上只能通过键的完全一致查询获取数据,根据数据的保存方式可以分为临时性、永久性和两者兼具三种。 (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数据库尤其引入注目。 普通的关系型数据库都是以行为单位来存储数据的,擅长以行为单位的读入处理,比如特定条件数据的获取。因此,关系型数据库也被成为面向行的数据库。相反,面向列的数据库是以列为单位来存储数据的,擅长以列为单位读入数据。 |
随便看 |
|
在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。