初学者该如何选择NoSQL数据库?

Posted ITPUB

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学者该如何选择NoSQL数据库?相关的知识,希望对你有一定的参考价值。


初学者该如何选择NoSQL数据库?
Key-Value 数据库
初学者该如何选择NoSQL数据库?

key-value 数据库的设计中使用最多的是哈希表。将 key通过一个 hash 函数映射为一个无符号整型值,通过这个整型值找到在哈希表中的位置,再把 value 存在该处,可以通过key 对数据进行查询、增加、删除等操作。用哈希表实现的key-value 数据库具有较高的性能和可扩展性,但是要进行诸如范围查询等操作时,基于哈希表的实现方法就显得不太合适了。除了基于哈希表的实现方式之外,其他索引数据结构也能实现  key-value 数据库的设计,比如 T 树、LSM 树等。

key-value 数据库的典型代表 Redis 是最近兴起的 key-value 数据库产品,它支持常用的一些数据结构,比如 hash、string、list、set 等。Redis 中的数据全部都保存在内存中,具有极快的读写速度。同时,Redis 支持数据的持久化操作,通过定期刷新或写日志的方法把数据保存到磁盘中。此外,Redis 还支持主从同步的分布式功能,满足了 web 应用高可用性的需求。

Redis应用场景:排行榜应用、计数器应用、数据去重应用、消息发布 / 订阅系统等。

初学者该如何选择NoSQL数据库?
列式存储数据库
初学者该如何选择NoSQL数据库?

传统的关系型数据库采用按行存储的方式组织数据,与其不同的是,列式存储数据库采用按列存储的方式来组织数据。关系型数据库中,每条记录的所有属性都存储在一起,在查询某个记录的一个属性值时,往往需要读取整个记录行,很多无关紧要的字段也被读取了,效率明显不高。而列式存储数据库是以记录的某个字段值来存储,因为没有读取无用的数据,因此在读取单一属性值时效率最高。另外,列式存储数据库与 key-value 数据库不同,它能支持较复杂的查询操作。由于是按列存储,同一列数据有很多共同的结构特性,列上如果有很多相同的值,就只需保存一份,这就为数据的压缩提供了便利。

列式存储数据库的主要应用场景是在数据仓库和大数据方面。目前比较成熟的列式存储数据库有BigTable、Hbase等,BigTable 是谷歌公司主要的数据库基础设施之一。

使用场景:搜索、地图、社交、视频等。

初学者该如何选择NoSQL数据库?
文档型数据库

文档型数据库是一个存储和管理大量结构化文档的数据库系统。结构化文档主要有 XML 文档、html 文档、JSON文档等。关系型数据库在创建数据库时通常是强制类型的,即数据表中的每一个字段都必须预先规定一个存储类型,表中会有较多的重复字段,导致每一个数据记录都是相同的格式,要想改变格式十分困难。文档型数据库通过存储的数据来得知数据的类型。通常,文档型数据库把所有相关联的数据库组织在一起,并允许每个数据记录和其他数据记录格式不同,这对现代的 web 应用来说有极大吸引力,因为设计者不必事先规定数据库的存储格式,其可以随数据的变化而变化。

在常见的文档型数据库中 MongoDB 是比较流行的一个。其较多地应用在系统日志的采集和存储、小文件的分布式存储与微博数据的存储上。另外,由于 MongoDB 支持丰富的SQL 查询语句,因此它也适用于一些需要关系型数据库的应用场景。

选择NoSQL数据库时,主要考虑以下几点

第一,应用的数据量

每个 NoSQL 数据库都有它的存储模型,每条数据记录都有存储布局、占用空间大小的限制。web 应用的数据量往往是随着时间的推移逐渐增多的,越往后数据量增加得越快,热点数据愈加明显,比如微博热门话题。对数据量的预估有助于做出更好的选择。

第二,数据访问特点

有的 web 应用是读多写少,而有的是读少写多,高并发也是现代 web 的特点之一。另外,针对数据的访问频次,可以区分出冷热数据,数据的冷热比对web 后端存储的优化是十分重要的参数之一。

第三,数据查询模式

NoSQL 数据库一般不支持复杂的查询操作,更多是以主键来查询想要获取的数据。如果应用中过多涉及复杂的关系查询,使用 NoSQL 数据库显然是不太合适的。

第四,综合成本

选取 NoSQL 产品时还需要考虑的是开发和运维成本。选取一个成熟稳定的 NoSQL 产品能给后期维护减少很多压力,节省很多开销。相反,如果选取了一个不太成熟的或不太稳定的 NoSQL 产品,后期维护将花费巨大的精力,运维成本也会提高。因此,选取一个成熟稳定,社区支持良好的 NoSQL 产品是降低综合成本的有效手段。

转载自:极客头条
原文链接:
http://sanwen8.cn/p/1d6Iqlp.html

以上是关于初学者该如何选择NoSQL数据库?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 NoSQL 进行数据模型

程序员该如何向奶奶解释 SQL 和 NoSQL?

如何选择合适的NoSQL数据库

如何正确选择NoSQL数据库?选型要点有哪些?

选择高性能NoSQL数据库几种方法

SQL VS NoSQL 如何选择数据库